Index: extensions/gally/gally-black-graphite/admin/admin.inc.php
===================================================================
--- extensions/gally/gally-black-graphite/admin/admin.inc.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/admin/admin.inc.php	(revision 8534)
@@ -0,0 +1,43 @@
+<?php
+/* -----------------------------------------------------------------------------
+  Theme      : Gally/Black-graphite
+  Author     : Grum
+    email    : grum@piwigo.org
+    website  : http://www.grum.fr
+
+    << May the Little SpaceFrog be with you ! >>
+  ------------------------------------------------------------------------------
+
+  The Gally/Black-graphite theme have an additional option allowing to expand or
+  not the menu
+
+  --------------------------------------------------------------------------- */
+
+include_once(PHPWG_THEMES_PATH.'gally-default/admin/GallyDefault.class.inc.php');
+
+load_language('theme.lang', PHPWG_THEMES_PATH.'gally-black-graphite/');
+
+class GallyBlackGraphite extends GallyDefault
+{
+
+  public function __construct()
+  {
+    parent::__construct("Gally/Black-graphite", dirname(__FILE__), PHPWG_THEMES_PATH.'gally-black-graphite/conf', false);
+
+    $this->addAuthorizedValue('fGally_tabsheet', 'menu_1');
+    $this->manage();
+  }
+
+  public function initTabSheet()
+  {
+    parent::initTabSheet();
+    $this->tabsheet->add(
+      'menu_1',
+      l10n('gally_menu_1'),
+      $this->getAdminThemeLink().'&amp;fGally_tabsheet=menu_1');
+  }
+}
+
+$interface = new GallyBlackGraphite();
+
+?>
Index: extensions/gally/gally-black-graphite/admin/gally_menu_1.tpl
===================================================================
--- extensions/gally/gally-black-graphite/admin/gally_menu_1.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/admin/gally_menu_1.tpl	(revision 8534)
@@ -0,0 +1,17 @@
+<p>{'gally_menu_1_desc'|@translate}</p>
+<br>
+<form method="post" action="" class="general">
+
+  <fieldset>
+    <legend>{'gally_expand_menu'|@translate}</legend>
+
+    <p class="leftAlign">{'gally_expand_menu_desc'|@translate}</p>
+
+    <label><input type="radio" name="f_expandMenu" id="iexpandMenu" value="yes" {if $options.expandMenu=="yes"}checked{/if}>&nbsp;{'gally_expand_menu_yes'|@translate}</label><br>
+    <label><input type="radio" name="f_expandMenu" id="iexpandMenu" value="no" {if $options.expandMenu=="no"}checked{/if}>&nbsp;{'gally_expand_menu_no'|@translate}</label>
+  </fieldset>
+
+  <input type="submit" value="{'Submit'|@translate}" name="submit_gally">
+
+</form>
+
Index: extensions/gally/gally-black-graphite/admin/index.php
===================================================================
--- extensions/gally/gally-black-graphite/admin/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/admin/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/admin/maintain.inc.php
===================================================================
--- extensions/gally/gally-black-graphite/admin/maintain.inc.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/admin/maintain.inc.php	(revision 8534)
@@ -0,0 +1,15 @@
+<?php
+
+include_once(PHPWG_THEMES_PATH.'gally-default/admin/GallyDefault.class.inc.php');
+
+function theme_activate($id, $version, &$errors)
+{
+  $errors=GallyDefault::activate($id, $version, '1.4.0', $errors);
+}
+
+function theme_deactivate()
+{
+  GallyDefault::deactivate();
+}
+
+?>
Index: extensions/gally/gally-black-graphite/colors.txt
===================================================================
--- extensions/gally/gally-black-graphite/colors.txt	(revision 8534)
+++ extensions/gally/gally-black-graphite/colors.txt	(revision 8534)
@@ -0,0 +1,32 @@
+background:
+  #101010
+  #202020
+  #666666
+  #444444
+  #404040
+  #ffffff
+  #d9d9d9
+  #c0c0c0
+  #000000
+
+border:
+  #666666
+  #292929
+  #202020
+  #101010
+  #606060
+  #ffffff
+  #f0f0f0
+
+color:
+  #d9d9d9
+  #C0C0C0
+  #F0f0f0
+  #666666
+  #000000
+  #ffffff
+  #202020
+  #333333
+
+  #6699ee
+  #a04040
Index: extensions/gally/gally-black-graphite/conf/default.conf
===================================================================
--- extensions/gally/gally-black-graphite/conf/default.conf	(revision 8534)
+++ extensions/gally/gally-black-graphite/conf/default.conf	(revision 8534)
@@ -0,0 +1,256 @@
+# ------------------------------------------------------------------------------
+# LAPIS-LAZULI
+# Theme for Piwigo
+# ------------------------------------------------------------------------------
+# file: gally-lapis-lazuli/conf/default.conf
+# file release: 1.3.0
+# ------------------------------------------------------------------------------
+# author: grum at piwigo.org
+# << May the Little SpaceFrog be with you >>
+# ------------------------------------------------------------------------------
+# Lapis-Lazuli for themes "Gally"
+#
+# see the gally-default/release_notes.txt file for more informations
+#
+# this is the config file for the theme
+#
+# To modify theses default options, you can make a "local.conf" file with new
+# declaration of parameters
+# Local files must be localized in the /local/themes/gally-lapis-lazuli/conf
+# directory
+#
+#
+# BE CAREFUL : string values must be defined between double-quote => "my string"
+#
+# ------------------------------------------------------------------------------
+
+
+# ------- Picture page parameters ----------------------------------------------
+
+# The 'imageAutoScroll' option can take theses values :
+#   "yes" => use the template scroll feature (no scrollbars)
+#   "no"  => use the browser scroll feature (scrollbars)
+#
+#   Due to bug(?) under MSIE browser this option automaticaly forced to no
+#     works well with FF2, FF3, Opera, Safari
+imageAutoScroll = "yes"
+
+# -- 1.3.1 --
+# the 'imageSimulateHighRes' option can take theses values :
+#   "yes" => if there is no high res file and if the image need scroll, the
+#            template simulate an high res image managment
+#   "no"  => don't simulate high res image
+imageSimulateHighRes = "yes"
+
+# The 'imageCenterMode' option can take theses values :
+#   "img"  => position is calculated on the image height
+#   "all"  => position is calculated on the image height + comment height
+#   "none" => image is not centered, just positionned to the 'imageCenterTopMin'
+#             value
+imageCenterMode = "img"
+
+# The 'imageCenterOffset' option can take any positive integer value
+# This option define an offset (in pixels) to apply to the top position of the
+# image after centered position is calculated.
+imageCenterOffset = -15
+
+# The 'imageCenterTopMin' option can take any positive integer value
+# This option define the minimal position at top for the picture (in pixels)
+#  works only if the image is displayed in absolute/fixed mode (ignored with the
+#  relative/static modes)
+imageCenterTopMin = 30
+
+# -- 1.2.0 --
+# The 'imageCenterTopBorder' option define the offset used to apply the minimal
+# position at top for the picture
+# The option can take theses values :
+#   "page"           => minimal position is defined from the top border of the
+#                       page
+#   "imageHeaderBar" => minimal position is defined from the bottom border of
+#                       header bar
+imageCenterTopBorder="imageHeaderBar"
+
+# -- 1.4.0 --
+# The 'imageScrollMinDeadArea' option allows to define the minimum width for
+# dead area in scroll mode
+imageScrollMinDeadArea=120
+
+# The 'imageInterface' option can take theses values :
+#   "none" => no effect to switch the interface (on/off)
+#   "fade" => use fading to switch the interface (fade in/fade out)
+#
+#   Due to bug(?) under MSIE browser this option automaticaly forced to "none"
+#     works well with FF2, FF3, Opera, Safari
+interfaceAnimated="none"
+
+# -- 1.3.0 --
+# The 'interfaceCanSwitch' option can take theses values :
+#   "yes" => the interface is displayed or hidden according to the defined rules
+#   "no"  => the interface is always displayed
+interfaceCanSwitch="yes"
+
+# The 'imageInterfaceHidden' option can take theses values :
+#   "yes" => after a page is loaded, if mouse is over the interface, the
+#            interface still hidden until the mouse move
+#   "no"  => after a page is loaded, if mouse is over the interface, the
+#            interface is visible immediately
+#
+#   Due to bug(?) under MSIE browser this option automaticaly forced to "none"
+#     works well with FF2, FF3, Opera, Safari
+interfaceHidden="yes"
+
+# -- 1.2.0 --
+# The 'interfaceOnImage' option can take theses values :
+#   "always"   => display interface when the mouse is over the picture
+#   "noscroll" => display interface when the mouse is over the picture only if
+#                 the picture is not scrollable
+#   "never"    => don't display interface when the mouse is over the picture
+interfaceOnImage="noscroll"
+
+# -- 1.2.0 --
+# The 'interfaceTimerDelay' options can take any positive integer values.
+# This option define the delay (in millseconds) of inactivity before hidding the
+# interface
+# set to 0 to deactivate this functionnality
+interfaceTimerDelay=2500
+
+# The 'animateDelay' option can take any positive integer value
+# This option define the duration (in milliseconds) of effects
+animateDelay=0
+
+# The 'marginContainer' option can take any positive integer value
+# This option define the space between the picture side (left/right) and the
+# window borders. Normal & high resolution view use this property
+# Only used when the 'imageAutoScroll' is set to yes
+marginContainer=0
+
+# -- 1.3.0 --
+# The 'paddingContainer' option can take any positive integer value
+# This option is used for high resolution view and defines the space between the
+# picture sides (left/right/top/bottom) and the container.
+paddingContainer=10
+
+# -- 1.2.0 --
+# The 'tabsAnimated' option can take theses values :
+#   "yes" => use slide to switch the tabs area (slide in/slide out)
+#   "no"  => no effect to switch the tabs area (on/off)
+tabsAnimated="no"
+
+# -- 1.2.0 --
+# The 'tabsHidden' and 'tabsVisible' options can take any positive
+# integer values.
+# Theses options define the height (in pixels) of the minimized and maximized
+# tabs area
+tabsHidden=21
+tabsVisible=250
+
+# -- 1.2.0 --
+# The 'tabsPosition' option can take theses values :
+#   "top"     => display the tabs area at the bottom of the image toobar area
+#                (top of the page)
+#   "bottom"  => display the tabs area at the top of the copyright area
+#                (bottom of the page)
+tabsPosition="top"
+
+# -- 1.3.0 --
+# The 'displayBanner' option can take theses values :
+#   "yes"       => display the banner on the picture page
+#   "no"        => hide the banner on the picture page
+#   "alternate" => display an alternate banner ; the content of the alternate
+#                  banner is defined in the 'alternateBannerContent' option
+displayBanner="yes"
+
+# -- 1.3.0 --
+# The 'alternateBannerContent' option can take any text value
+# If the 'displayBanner' is set to 'alternate' value, the content of the
+# 'alternateBannerContent' is used to display the header
+alternateBannerContent=""
+
+# -- 1.2.0 --
+# The 'commentRows' option can take any positive integer value.
+# This option define the number of rows for the comment textarea
+# (default defined in the template: 7)
+commentRows=7
+
+# -- 1.2.0 --
+# The 'metaNumCols' options can take any positive integer values.
+# This option define the number of columns used to display the metadata
+metaNumCols=2
+
+# -- 1.3.0 --
+# the 'defaultZoomSize' option can take theses values :
+#   "full" => when high res picture is displayed, the image is displayed in the
+#             the full size
+#   "fit"  => when high res picture is displayed, the image is displayed to fit
+#             in the window
+defaultZoomSize="full"
+
+# -- 1.3.0 --
+# the 'displayHighResIcon' option can take theses values :
+#   "yes" => display an icon 'view full res' in the toolbar
+#   "no"  => don't display an icon 'view full res' in the toolbar
+displayHighResIcon="yes"
+
+# -- 1.3.0 --
+# the 'highResClickMode' option can take theses values :
+#   "close" => click on the high res picture close the high res picture
+#   "zoom"  => click on the high res picture switch the zoom mode fit/full
+highResClickMode="zoom"
+
+# -- 1.4.0 --
+# the 'manageTips' option can take theses values :
+#   "yes" => the interface uses the simpleTip.js script to display hints
+#   "no"  => the interface uses the default browser method to display hints
+manageTips="yes"
+
+# -- 1.4.0 --
+# the 'manageTipsPos' define the default position for tips ; the option can take
+# theses values :
+#   "tipOnTop"    => tip is displayed above the object
+#   "tipOnBottom" => tip is displayed under the object
+#   "tipOnLeft"   => tip is displayed on the left side of the object
+#   "tipOnRight"  => tip is displayed on the right side of the object
+manageTipsPos="tipOnBottom"
+
+
+# ------- Menu parameters ------------------------------------------------------
+
+# The 'menuAnimated' option can take theses values :
+#   "none" => no effect to switch the menu (on/off)
+#   "fade" => use fading to switch the menu (fade in/fade out)
+#   "slide" => use fading to switch the menu (fade in/fade out)
+#   "noswitch" => [1.2.0] menu is not displayed by a click (always displayed,
+#                 eventually managed by CSS)
+#
+#   Due to bug(?) under MSIE browser this option automaticaly forced to "none"
+#   if it different of "noswitch" works well with FF2, FF3, Opera, Safari
+menuAnimated="noswitch"
+
+# The 'menuWidth' option can take theses values :
+#   "auto" => width of the menu is autocomputed by the browser
+#   "info" => width of the menu is set to be inside the information panel on the
+#            left (use the '.additional_info' CSS value)
+# The 'menuWidth' option can also take any positive integer value wich define a
+# fixed width in pixels
+menuWidth = "auto"
+
+# The 'menuMaxWidth' option is used when the 'menuWidth' option is set to "auto"
+# and can take any positive integer value wich define a fixed maximum width in
+# pixels
+# If this option is set to 0, there is no maximum width applied to the menu
+#
+# please note that under MSIE prior than 8.0, the 'menuWidth = "auto"' option
+# don't work as well as other browsers and in this case, with the
+# 'menuMSIEMaxWidth' option you can force a maximum width only for this browser
+# This option is not used when the 'menuAnimated' option is set to "noswitch"
+menuMaxWidth = 0
+menuMSIEMaxWidth = 190
+
+# -- 1.3.0 --
+# the 'expandMenu' option can take theses values :
+#   "yes" => the menu is expanded, all items are displayed at once time
+#   "no"  => default piwigo mode, the menu is not expanded
+expandMenu="yes"
+
+
+
Index: extensions/gally/gally-black-graphite/conf/index.php
===================================================================
--- extensions/gally/gally-black-graphite/conf/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/conf/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css
===================================================================
--- extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css	(revision 8534)
+++ extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css	(revision 8534)
@@ -0,0 +1,187 @@
+
+/* ---- Themes colors ---- */
+.gcText { color: #666666; }                 /* used for text */
+.gcText2 { color: #c0c0c0; }                /* used for table header */
+.gcText3 { color: #c0c0c0; }                /* used for tabs text */
+.gcTextInput { color:#202020; font-family:monospace; }             /* used for inputs */
+.gcLink { color: #c0c0c0; }                 /* used for link */
+.gcLinkHover { color: #f0f0f0; }            /* used for link */
+.gcBgPage { background-color: #101010; }               /* used for page background */
+.gcBgTabSheet { background-color: #404040; }           /* used inside tabsheet & menu */
+.gcBgTableRow1 { background-color: #292929; }            /* used in for tables rows background */
+.gcBgTableRow2 { background-color: #202020; }            /* used in tables rows & some widgets background */
+.gcBgInput { background-color:#F0F0F0; }                      /* used for inputs */
+.gcBorder    { border: none; }            /* used for borders */
+.gcBorder2   { border: none; }            /* used for widgets borders */
+.gcBorderInput { border: none; }           /* used for inputs */
+.cPnDisabled { cursor:default; color:#666666; }
+.pnInactive:hover { background:#666666; color:#F0F0F0; }
+.pnActive { background:#404040; color:#F0F0F0; font-weight:bold; }
+
+.ui-datepicker, .ui-category-selector, .ui-category-selector-list,
+.ui-tag-selector-list, .ui-tag-selector-input {
+  background-color:#F0F0F0;
+  color:#202020;
+  border:none;
+}
+div.ui-datepicker { border:none; }
+.ui-datepicker-title { color:#f0f0f0; font-weight:bold; }
+.ui-datepicker td { background-color:#f0f0f0; color:#202020; }
+.ui-datepicker td a { color:#666666; }
+.ui-datepicker td:hover { background-color:#666666; color:#f0f0f0; }
+.ui-datepicker td:hover a { color:#f0f0f0; }
+.ui-datepicker td.ui-datepicker-current-day { background-color:#404040; color:#f0f0f0; }
+.ui-datepicker td.ui-datepicker-current-day a { color:#f0f0f0; }
+.ui-category-selector-arrow { color:#202020; }
+.ui-category-selector, .ui-category-selector-list { font-family:monospace; font-size:12px; }
+li.ui-category-selector-item:hover, li.ui-tag-selector-list-item:hover { background-color:#666666; color:#f0f0f0; }
+.ui-category-selector-selected-item { background-color:#202020; color:#f0f0f0; }
+
+.ui-category-selector-expandable-item { background-image:url(./../icon/asearchengine/expand_b.png); }
+.ui-category-selector-collapsable-item { background-image:url(./../icon/asearchengine/collapse_b.png); }
+.ui-category-selector-expandable-item:hover, .ui-category-selector-selected-item.ui-category-selector-expandable-item { background-image:url(./../icon/asearchengine/expand.png); }
+.ui-category-selector-collapsable-item:hover, .ui-category-selector-selected-item.ui-category-selector-collapsable-item { background-image:url(./../icon/asearchengine/collapse.png); }
+li.ui-category-selector-item div.ui-category-selector-check { background-image:url(./../icon/asearchengine/check_notchecked.png); }
+li.ui-category-selector-selected-item div.ui-category-selector-check { background-image:url(./../icon/asearchengine/check_checked.png); }
+
+
+.ui-tag-selector-list, .ui-tag-selector-input { font-family:monospace; }
+.ui-tag-selector-text {
+  font-style:italic;
+  font-size:80%;
+  border-top:1px dotted #101010;
+  background:#F0F0F0;
+  color:#404040;
+}
+.ui-tag-selector-selected-tag-list li.ui-tag-selector-selected-tag {
+  background:#666666;
+  color:#F0F0F0;
+  margin-top:0px;
+  padding-bottom:1px;
+  padding-top:1px;
+  font-size: 12px;
+}
+.ui-tag-selector-highlight {
+  color:#666666;
+  font-weight:bold;
+  background:#DEDEDE;
+}
+
+.ui-dialog {
+  -moz-border-radius:8px 8px 4px 4px;
+  -webkit-border-radius:8px 8px 4px 4px;
+  -khtml-border-radius:8px 8px 4px 4px;
+  border-radius:8px 8px 4px 4px;
+}
+.ui-dialog-titlebar {
+  display:block;
+  -moz-border-radius:8px 8px 0 0;
+  -webkit-border-radius:8px 8px 0 0;
+  -khtml-border-radius:8px 8px 0 0;
+  border-radius:8px 8px 0 0;
+  padding-left:6px;
+  border-bottom:4px solid #292929;
+}
+
+.iconEdit, .iconDelete {
+  background-image:url(./../icon/buttons.png);
+  background-repeat:no-repeat;
+  width:16px;
+  height:16px;
+}
+.iconEdit { background-position:-616px 0;}
+.iconEdit:hover { background-position:-616px -22px;}
+.iconDelete { background-position:-594px 0;}
+.iconDelete:hover { background-position:-594px -22px;}
+
+.iconMove { background:url(./../icon/asearchengine/move.png) no-repeat 0 0 transparent; }
+.iconMove:hover { background:url(./../icon/asearchengine/move_h.png) no-repeat 0 0 transparent; }
+.iconSwitchCondition  { background:url(./../icon/asearchengine/switch.png) no-repeat 0 0 transparent; }
+.iconSwitchCondition:hover { background:url(./../icon/asearchengine/switch_h.png) no-repeat 0 0 transparent; }
+.cbItemMultiple { border:1px solid #666666; }
+.cbItemOverGroup { border:1px dotted #666666; }
+.itemContent { border-left:22px solid #404040; min-height:34px; padding:3px; }
+.cbItem { padding:0px; }
+
+
+#iRBCriteriaForm {
+  margin-top: 20px;
+}
+
+fieldset { margin:3px 18px; }
+#iResultQuery { margin-bottom:15px; }
+div.cbOperatorBg, .cbButtons, .ui-dialog-titlebar,
+.ui-datepicker .ui-datepicker-header { background:#666666; }
+
+.cbItem, .pnInactive, .pnActive {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+}
+.cbButtons {
+  -moz-border-radius: 4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  background:#202020;
+  border:none;
+  color: #C0C0C0;
+  font-family: monospace;
+  font-weight: bold;
+  padding: 4px;
+}
+.cbButtons:hover {
+  color: #f0f0f0;
+}
+
+input.cRequestCriterions {
+  margin-left:30px;
+  margin-top:10px;
+}
+
+#iMenuCItems ul {
+  background:#202020;
+  -moz-border-radius:0px 4px 4px 4px;
+  -webkit-border-radius:0px 4px 4px 4px;
+  -khtml-border-radius:0px 4px 4px 4px;
+  border-radius:0px 4px 4px 4px;
+}
+#iMenuCItems ul li, .cbButtons:hover #iMenuCText { background:#202020; }
+#iMenuCItems ul li:hover { background:#404040; }
+#iMenuCTitle:hover {
+  -moz-border-radius:4px 4px 0px 0px;
+  -webkit-border-radius:4px 4px 0px 0px;
+  -khtml-border-radius:4px 4px 0px 0px;
+  border-radius:4px 4px 0px 0px;
+}
+
+div#iMenuCaddieBar div#iMenuCaddieItems { z-index:1000; }
+
+ul.rbResultList td.rbResultItemDetail {
+  width:99%;
+}
+.rbResultItemDetail hr {
+  border-color: #292929;
+  border-right: medium none #292929;
+  border-style: solid none none;
+  border-width: 4px medium medium;
+}
+ul.rbResultList li {
+  width: 48%;
+}
+#iResultQueryContent a {
+  border-bottom:1px dotted #666666;
+}
+
+/* AMD specific CSS */
+span.tagName { border-right:1px dotted #666666; }
+#iTagList { border-top:1px solid #101010; font-size:12px; }
+#iTagList li:hover { cursor:pointer; background:#606060; color:#f0f0f0; }
+#iTagList.selected, #iTagList li.gcText3 { background:#303030; color:#f0f0f0; }
+div.ruleTypeM, div.ruleTypeM2 { border:0px solid #666666; }
+.error, input.error { background:#FFAAAA; border:1px solid #800000; color:#800000; }
+#iDMCSelectMeta { font-size:12px; }
+#iDMCListValues li { background:#666666; border:none; }
+
+
Index: extensions/gally/gally-black-graphite/css/index.php
===================================================================
--- extensions/gally/gally-black-graphite/css/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/css/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/css/theme.css
===================================================================
--- extensions/gally/gally-black-graphite/css/theme.css	(revision 8534)
+++ extensions/gally/gally-black-graphite/css/theme.css	(revision 8534)
@@ -0,0 +1,1830 @@
+/* -----------------------------------------------------------------------------
+  BLACK-GRAPHITE
+  A Gally's theme for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/gally-black-graphite/theme.css
+  file version: 1.0.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.fr
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  Black-Graphite for template "Gally"
+----------------------------------------------------------------------------- */
+
+div.errors {
+  background:#FFB0B0;
+  border:4px solid #802020;
+  color:#802020;
+  padding:8px;
+}
+div.errors a {
+  color:#800000;
+  font-weight:bold;
+}
+div.errors button {
+  color:#ffffff;
+  background:#802020;
+}
+div.errors button:hover {
+  color:#FFB0B0;
+}
+div.errors button:active {
+  color:#802020;
+  background:#ffffff;
+}
+
+
+div.infos {
+  background:#B0FFB0;
+  border:4px solid #208020;
+  color:#208020;
+  padding:8px;
+}
+div.infos a {
+  color:#008000;
+  font-weight:bold;
+}
+div.infos button {
+  color:#ffffff;
+  background:#208020;
+}
+div.infos button:hover {
+  color:#B0FFB0;
+}
+div.infos button:active {
+  color:#208020;
+  background:#ffffff;
+}
+
+div.errors ul, div.infos ul {
+  text-align:justify;
+  padding-left:0px;
+}
+
+div.errors ul li, div.infos ul li {
+  margin-bottom:4px;
+}
+
+div.ui-widget-overlay {
+  background:#101010;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+  position:absolute;
+  left:0px;
+  top:0px;
+}
+
+.ui-dialog-buttonpane {
+  margin-bottom:8px;
+}
+
+
+/*
+ page
+*/
+
+body {
+  background:#101010;
+  color:#d9d9d9;
+  font-size:14px;
+}
+
+#the_page {
+  display:block;
+  margin:auto;
+  width:954px;
+  background:transparent;
+  position:relative;
+  left:-8px;
+}
+
+a {
+  color: #C0C0C0;
+  outline:none;
+}
+
+a:hover {
+  color: #F0F0F0;
+}
+
+a:focus {
+  outline:none;
+}
+
+
+a.button {
+  display:block;
+  display:inline-block;
+  width:22px;
+  height:22px;
+  cursor:pointer;
+}
+a.navButton {
+  display:block;
+  display:inline-block;
+  width:18px;
+  height:18px;
+  cursor:pointer;
+}
+span.button {
+  display: inline-block;
+  cursor:pointer;
+}
+
+a.button, a.navButton, span.button {
+  background-image:url(./../icon/buttons.png);
+  background-repeat:no-repeat;
+}
+
+
+/* index.tpl */
+
+#icon_caddie {
+  background-position:0px 0;
+}
+#icon_caddie:hover {
+  background-position:0px -22px;
+}
+
+#icon_category_edit {
+  background-position:-66px 0;
+}
+#icon_category_edit:hover {
+  background-position:-66px -22px;
+}
+
+#icon_search_rules {
+  background-position:-396px 0;
+}
+#icon_search_rules:hover {
+  background-position:-396px -22px;
+}
+
+#icon_start_slideshow {
+  background-position:-440px 0;
+}
+#icon_start_slideshow:hover {
+  background-position:-440px -22px;
+}
+
+#icon_flat {
+  background-position:-198px 0;
+}
+#icon_flat:hover {
+  background-position:-198px -22px;
+}
+
+#icon_normal_mode {
+  background-position:-308px 0;
+}
+#icon_normal_mode:hover {
+  background-position:-308px -22px;
+}
+
+#icon_calendar {
+  background-position:-22px 0;
+}
+#icon_calendar:hover {
+  background-position:-22px -22px;
+}
+
+#icon_calendar_created {
+  background-position:-44px 0;
+}
+#icon_calendar_created:hover {
+  background-position:-44px -22px;
+}
+
+/* about.tpl */
+/* comments.tpl */
+/* identification.tpl */
+/* nbm.tpl */
+/* notification.tpl */
+/* password.tpl */
+/* tags.tpl */
+/* profile.tpl */
+/* register.tpl */
+/* upload.tpl */
+#icon_home {
+  background-position:-242px 0;
+}
+#icon_home:hover {
+  background-position:-242px -22px;
+}
+
+/* identification.tpl */
+/* menubar_identification.tpl */
+#icon_lost_password {
+  background-position:-264px 0;
+}
+#icon_lost_password:hover {
+  background-position:-264px -22px;
+}
+
+#icon_register, #icon_register2, #icon_register3 {
+  background-position:-330px 0;
+}
+#icon_register:hover, #icon_register2:hover, #icon_register3:hover {
+  background-position:-330px -22px;
+}
+
+#icon_lost_password, #icon_lost_password2, #icon_lost_password3 {
+  background-position:-264px 0;
+}
+#icon_lost_password:hover, #icon_lost_password2:hover, #icon_lost_password3:hover {
+  background-position:-264px -22px;
+}
+
+/* menubar_categories.tpl */
+#icon_start_filter {
+  background-position:-1012px 0px;
+  width:16px;
+  height:16px;
+}
+#icon_start_filter:hover {
+  background-position:-1012px -22px;
+}
+
+#icon_stop_filter {
+  background-position:-1034px 0px;
+  width:16px;
+  height:16px;
+}
+#icon_stop_filter:hover {
+  background-position:-1034px -22px;
+}
+
+/* picture.tpl */
+#icon_high_res {
+  background-position:-176px 0;
+}
+#icon_high_res:hover {
+  background-position:-176px -22;
+}
+
+#icon_stop_slideshow {
+  background-position:-418px 0;
+}
+#icon_stop_slideshow:hover {
+  background-position:-418px -22px;
+}
+
+#icon_metadata {
+  background-position:-286px 0;
+}
+#icon_metadata:hover {
+  background-position:-286px -22px;
+}
+
+#icon_save {
+  background-position:-374px 0;
+}
+#icon_save:hover {
+  background-position:-374px -22px;
+}
+
+#icon_favorite {
+  background-position:-132px 0;
+}
+#icon_favorite:hover {
+  background-position:-132px -22px;
+}
+
+#icon_del_favorite {
+  background-position:-154px 0;
+}
+#icon_del_favorite:hover {
+  background-position:-154px -22px;
+}
+
+#icon_delall_favorite {
+  background-position:-154px 0;
+}
+#icon_delall_favorite:hover {
+  background-position:-154px -22px;
+}
+
+#icon_representative {
+  background-position:-352px 0;
+}
+#icon_representative:hover {
+  background-position:-352px -22px;
+}
+
+#icon_preferences {
+  background-position:-66px 0;
+}
+#icon_preferences:hover {
+  background-position:-66px -22px;
+}
+
+/* tags.tpl */
+#icon_cloud {
+  background-position:-462px 0;
+}
+#icon_cloud:hover {
+  background-position:-462px -22px;
+}
+
+#icon_tag_letters {
+  background-position:-484px 0;
+}
+#icon_tag_letters:hover {
+  background-position:-484px -22px;
+}
+
+/* picture_nav_buttons.tpl */
+#icon_last {
+  background-position:-704px 0;
+}
+#icon_last:hover {
+  background-position:-704px -22px;
+}
+#icon_last_unactive {
+  background-position:-704px -44px;
+  cursor:default;
+}
+#icon_right {
+  background-position:-748px 0;
+}
+#icon_right:hover {
+  background-position:-748px -22px;
+}
+#icon_right_unactive {
+  background-position:-748px -44px;
+  cursor:default;
+}
+#icon_play {
+  background-position:-792px 0;
+}
+#icon_play:hover {
+  background-position:-792px -22px;
+}
+
+#icon_pause {
+  background-position:-814px 0;
+}
+#icon_pause:hover {
+  background-position:-814px -22px;
+}
+
+#icon_up {
+  background-position:-770px 0;
+}
+#icon_up:hover {
+  background-position:-770px -22px;
+}
+
+#icon_left {
+  background-position:-726px 0;
+}
+#icon_left:hover {
+  background-position:-726px -22px;
+}
+#icon_left_unactive {
+  background-position:-726px -44px;
+  cursor:default;
+}
+#icon_first {
+  background-position:-682px 0;
+}
+#icon_first:hover {
+  background-position:-682px -22px;
+}
+#icon_first_unactive {
+  background-position:-682px -44px;
+  cursor:default;
+}
+
+#icon_start_repeat {
+  background-position:-858px 0;
+}
+#icon_start_repeat:hover {
+  background-position:-858px -22px;
+}
+
+#icon_stop_repeat {
+  background-position:-836px 0;
+}
+#icon_stop_repeat:hover {
+  background-position:-836px -22px;
+}
+
+#icon_dec_period {
+  background-position:-880px 0;
+}
+#icon_dec_period:hover {
+  background-position:-880px -22px;
+}
+#icon_dec_period_unactive {
+  background-position:-880px -44px;
+  cursor:default;
+}
+#icon_inc_period {
+  background-position:-902px 0;
+}
+#icon_inc_period:hover {
+  background-position:-902px -22px;
+}
+#icon_inc_period_unactive {
+  background-position:-902px -44px;
+  cursor:default;
+}
+
+/* popuphelp.tpl */
+/* search_rules.tpl */
+#icon_exit {
+  background-position:-660px 0;
+}
+#icon_exit:hover {
+  background-position:-660px -22px;
+}
+
+/* search.tpl */
+#icon_help {
+  background-position:-220px 0;
+}
+#icon_help:hover {
+  background-position:-220px -22px;
+}
+
+/* pseudo icons */
+span.id_recent {
+  background-position:-550px 0;
+  height: 11px;
+  width: 11px;
+  margin: -3px -3px 2px 2px;
+}
+span.id_recent_cat {
+  background-position:-550px 0;
+  height: 11px;
+  width: 11px;
+  position: relative;
+  top: -5px;
+  left:-6px;
+}
+span.id_recent_cat_by_child {
+  background-position:-572px 0;
+  height: 16px;
+  width: 18px;
+  position: relative;
+  left:-6px;
+}
+span.id_delete {
+  background-position:-594px 0;
+  height: 16px;
+  width: 16px;
+}
+span.id_delete:hover {
+  background-position:-594px -22px;
+}
+span.id_edit {
+  background-position:-616px 0;
+  height: 16px;
+  width: 16px;
+}
+span.id_edit:hover {
+  background-position:-616px -22px;
+}
+span.id_validate {
+  background-position:-638px 0;
+  height: 16px;
+  width: 16px;
+}
+span.id_validate:hover {
+  background-position:-638px -22px;
+}
+
+/*
+ * page : header
+*/
+#theHeader {
+  -moz-border-radius: 12px;
+  -webkit-border-radius: 12px;
+  -khtml-border-radius: 12px;
+  border-radius: 12px;
+  background: none repeat scroll 0 0 #202020;
+  height: 111px;
+  margin-top: 8px;
+}
+
+#theHeader h1 {
+  margin:0px;
+}
+
+/*
+ page : title
+*/
+.titrePage {
+  height:auto;
+  padding:0 12px 0 30px;
+  min-height:31px;
+}
+
+.titrePageEmpty {
+  height:0px;
+  min-height:0px;
+}
+
+
+.titrePage, .navigationBar, #imageHeaderBar {
+  -moz-border-radius: 12px;
+  -webkit-border-radius: 12px;
+  -khtml-border-radius: 12px;
+  border-radius: 12px;
+  background: none repeat scroll 0 0 #202020;
+  margin-top: 8px;
+  padding: 0px 16px;
+  border-top: 4px solid;
+  color:#666666;
+}
+
+.navigationBar {
+  margin-bottom:8px;
+  padding: 8px;
+}
+
+.titrePage .categoryActions {
+  padding-top:2px;
+  height:28px;
+}
+
+#titrePageID {
+  min-height:62px;
+  height:auto;
+  padding-bottom:1px;
+}
+
+#titrePageID h2 a:hover, div.browsePath h2 a:hover {
+  border-bottom:1px dotted #666666;
+}
+
+/*
+ * page content
+*/
+#content {
+  min-height:450px;
+}
+
+#content h2 {
+  clear:left;
+}
+
+#content2 {
+  padding:8px;
+}
+
+#content2 a {
+  border-bottom:1px dotted #666666;
+}
+
+/*
+ * page : identification, register, profile
+*/
+#identification, #register, #profile {
+  margin:0;
+  padding:16px;
+}
+
+/*
+ page content : thumbnails
+*/
+
+#additional_infoTOP, #additional_infoBOTTOM {
+  -moz-border-radius:8px;
+  -webkit-border-radius:8px;
+  -khtml-border-radius:8px;
+  border-radius:8px;
+  background-color: #202020;
+  margin: 8px 0;
+  padding: 8px 0;
+}
+
+.additional_info {
+  padding:8px 8px 8px 16px;
+}
+
+#thumbnails {
+  font-size:80%;
+  font-weight:bold;
+  margin-bottom: 16px;
+}
+
+/*
+  page content : categories thumbnails
+*/
+
+#subContent {
+  padding:0px;
+  clear:both;
+}
+
+#subContent h2 {
+  font-size: 150%;
+  padding-bottom:4px;
+}
+
+
+.thumbnailCategory {
+  -moz-border-radius:12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+  background-color: #202020;
+  border: medium none;
+  display: block;
+  margin: 8px 0;
+  padding: 8px 0 0 0;
+}
+
+.thumbnailCategory:hover {
+  background-color:#666666;
+}
+div.thumbnailCategory:hover span.id_recent_cat {
+  background-position:-550px -22px;
+}
+div.thumbnailCategory:hover span.id_recent_cat_by_child {
+  background-position:-572px -22px;
+}
+
+
+.thumbnailCategory h3 {
+  border-bottom: 4px solid #292929;
+  font-size: 120%;
+  margin: 0 0 0 -8px;
+  padding: 0 4px 4px 8px;
+}
+
+ul.thumbnailCategories {
+  padding:16px 0 0;
+}
+
+ul.thumbnailCategories li {
+  float:none;
+  margin:auto;
+  width:100%;
+}
+
+#thumbContents {
+  margin:0px;
+}
+
+.illustration {
+  padding: 12px 20px;
+  text-align: center;
+}
+
+li.odd1 .illustration {
+  float:right;
+}
+
+
+li p.thumbCatDesc, li p.thumbCatDescNbImg {
+  margin-left:-8px;
+  padding: 0 8px;
+}
+
+li p.thumbCatDescNbImg {
+  font-style: italic;
+  float:right;
+  margin-top: -2px;
+  color: #666666;
+}
+
+li p.thumbCatDesc {
+  margin-top: 4px;
+  padding-top: 4px;
+  text-align: justify;
+}
+
+div.thumbnailCategory div.description {
+  height:auto;
+}
+
+
+.content ul.thumbnails img, #linkPrev img, #linkNext img {
+  border:1px solid #666666;
+}
+
+.content ul.thumbnails span.wrap2 {
+  display:table-cell;
+  margin:0;
+  vertical-align:middle;
+  height:140px;
+  min-width:140px;
+  -moz-border-radius: 8px;  /* round corners with Geko */
+  -webkit-border-radius: 8px;  /* round corners with webkit */
+  -khtml-border-radius: 8px;  /* round corners with khtml */
+  border-radius:8px; /* round corners with CSS3 compliant browsers */
+  background-color:#101010;
+  border:none;
+}
+
+#content UL.thumbnails SPAN.wrap2:hover {
+  background-color: #666666;
+}
+
+table.wrap1 {
+  padding:25px 50px;
+}
+
+div ul.thumbnails li {
+  width: 220px;
+}
+
+
+/*
+ * page :search
+*/
+form.filter {
+  margin:0;
+  padding:16px;
+}
+
+/*
+ * page:help
+*/
+.help {
+  margin:8px;
+}
+
+/*
+ page : copyright
+*/
+#copyright {
+  -moz-border-radius: 6px;
+  -webkit-border-radius: 6px;
+  -khtml-border-radius: 6px;
+  border-radius: 6px;
+  background: none repeat scroll 0 0 #202020;
+  color: #D9D9D9;
+  font-size: 10px;
+  left: 1px;
+  margin-bottom: 8px;
+  padding: 6px 12px;
+  position: relative;
+  width: 928px;
+  z-index: 800;
+}
+
+/*
+ page : menubar
+*/
+#menubar {
+  display:block;
+  width:100%;
+  z-index:1000;
+  height:30px;
+  margin:0;
+  padding:0;
+  position:relative;
+  visibility:visible;
+  overflow:visible;
+  left:-6px;
+  color:#666666;
+}
+
+#menubar dt {
+  font-size:120%;
+  font-weight:bold;
+  cursor:default;
+  z-index:1010;
+}
+
+#menubar dt a {
+  color:#666666;
+}
+
+#menubar dl:hover dt:hover, #menubar dl:hover dt a:hover {
+  color:#D9D9D9;
+}
+
+#menubar dl:hover dt, #menubar dl:hover dt a {
+  color:#F0F0F0;
+}
+
+#menubar dl {
+  float:left;
+  margin:0px 1px 1px 10px;
+  padding:0px 6px 0;
+  max-height:30px;
+}
+
+#menubar dl:hover {
+  background-color:#666666;
+}
+
+#menubar ul {
+  list-style-type:none;
+  font-size:92%;
+  margin:0;
+  padding:0;
+}
+
+#menubar ul ul {
+  font-size:100%;
+  padding-bottom:0px;
+  padding-top:0px;
+}
+
+#menubar dt .button {
+  top:-3px;
+  left:0px;
+  float:left;
+}
+
+#menubar p.totalImages {
+  font-size:80%;
+  margin-right:12px;
+  color:#F0F0F0;
+}
+
+
+div#menubar dd,
+div#menubar ul ul,
+div#menubar ul li:hover ul ul,
+div#menubar ul ul li:hover ul ul,
+div#menubar ul ul ul li:hover ul ul,
+div#menubar ul ul ul ul li:hover ul ul,
+div#menubar ul ul ul ul ul li:hover ul ul,
+div#menubar ul ul ul ul ul ul li:hover ul ul {
+  display:none;
+}
+
+#menubar dd ul ul {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  left:99%;
+  position:absolute;
+  padding-top:4px;
+  padding-bottom:4px;
+  margin:-23px 0px 0px -6px; /* for FF, Opera, Safari... */
+  #margin:-8px 0px 0px -8px; /* for the M$IE (f**k M$IE and the bad tips) */
+}
+
+div#menubar dl:hover dd,
+div#menubar ul li:hover ul,
+div#menubar ul ul li:hover ul,
+div#menubar ul ul ul li:hover ul,
+div#menubar ul ul ul ul li:hover ul,
+div#menubar ul ul ul ul ul li:hover ul,
+div#menubar ul ul ul ul ul ul li:hover ul,
+div#menubar ul ul ul ul ul ul ul li:hover ul {
+  display:block;
+  background:#666666;
+  padding-bottom:6px;
+  min-width:180px;
+  border: 2px solid #202020;
+}
+
+#menubar dd {
+  position:absolute;
+  z-index:-1;
+  border: 2px solid #202020;
+  margin: -2px 0 0 -8px;
+  -moz-border-radius-bottomleft:4px;
+  -moz-border-radius-bottomright:4px;
+  -webkit-border-bottom-left-radius:4px;
+  -webkit-border-bottom-right-radius:4px;
+  -khtml-border-bottom-left-radius:4px;
+  -khtml-border-bottom-right-radius:4px;
+  border-radius:0px 4px;
+}
+
+
+#menubar li {
+  padding: 1px 8px;
+  white-space: nowrap;
+}
+
+#menubar li:hover {
+  background:#444444;
+}
+
+#menubar ul.actions li:hover {
+  background-color:#404040;
+}
+
+#mbCategories dt {
+  height:20px;
+  overflow:hidden;
+}
+
+
+.menuInfoCat, .menuInfoCatByChild {
+  font-size: 70%;
+  color:#202020;
+}
+
+li:hover > span.menuInfoCat,
+li:hover > span.menuInfoCatByChild {
+  color:#d9d9d9;
+}
+
+#mbIdentification dd p {
+  color:#202020;
+}
+
+
+/*
+ calendar bar
+*/
+.calendarBar {
+  margin-top:2px;
+  text-align:center;
+  padding:0 15px;
+}
+span.calItemP {
+  float:left;
+}
+span.calItemN {
+  float:right;
+}
+
+span.calItem, span.calItemEmpty {
+  display:inline-table;
+  margin:1px;
+  min-width:15px;
+  padding-left:2px;
+  padding-right:2px;
+  border:1px solid #101010;
+  font-weight:bold;
+}
+
+td.calDayHead {
+  font-size:14px;
+  font-weight:normal;
+  padding-bottom:12px;
+}
+
+table.calMonth tbody td.calDayCellFull, table.calMonth tbody td.calDayCellEmpty {
+  border:1px solid #202020;
+  overflow:hidden;
+}
+
+.calBackDate {
+  color:#000000;
+  padding-left:10px;
+  padding-top:7px;
+}
+.calForeDate {
+  color: #fff;
+  padding-left:10px;
+  padding-top:6px;
+}
+
+table.calMonth tbody td.calDayCellEmpty, table.calMonth tbody td.calDayCellBlank {
+  height:97px;
+  width:84px;
+}
+
+td.calDayCellEmpty {
+  color:#202020;
+  padding-left:12px;
+  padding-top:8px;
+}
+
+div.calImg {
+  position:relative;
+  left:8px;
+  top:8px;
+}
+
+
+.calendarCalBar {
+  border-bottom: 2px solid #202020;
+  padding-left:16px;
+  padding-top:8px;
+  margin-left:8px;
+  margin-right:12px;
+  margin-bottom: 8px;
+}
+
+.calendarBar span {
+  font-size:90%;
+}
+
+table.calMonth {
+  margin-left:auto;
+  margin-right:auto;
+  left:0px;
+}
+
+table.calMonth td.calDayCellFull:hover {
+  background-color:#ffffff;
+}
+
+div.calendarViews {
+  margin-top: 4px;
+}
+
+span.calCalHead a {
+  font-weight:bold;
+}
+span.calCalHead span.calCalNbImg,
+span.calCal span.calCalNbImg {
+  color:#666666;
+}
+
+/*
+  inputs
+*/
+input[type="text"], input[type="password"], select, textarea, file {
+ font-family: monospace;
+ background: #d9d9d9;
+ color:#333333;
+ border:none;
+ margin:0px;
+ max-width:640px;
+}
+
+input:focus, select:focus {
+  background: #ffffff;
+  color:#000000;
+}
+
+input[type="submit"], input[type="button"], input[type="reset"], button {
+/*  font-family: monospace;
+  border-bottom:1px #606060 solid;
+  border-right:1px #606060 solid;
+  border-top:1px #ffffff solid;
+  border-left:1px #ffffff solid;
+*/
+  -moz-border-radius: 8px;
+  -webkit-border-radius:8px;
+  -khtml-border-radius:8px;
+  border-radius:8px;
+  background:#202020;
+  border:none;
+  color: #C0C0C0;
+  font-family: monospace;
+  font-weight: bold;
+  padding: 4px;
+}
+
+input[type="submit"]:hover, input[type="button"]:hover, input[type="reset"]:hover, button:hover {
+  background:#666666;
+  color: #C0C0C0;
+}
+
+input[type="submit"]:active, input[type="button"]:active, input[type="reset"]:active, button:active {
+  background:#c0c0c0;
+  color: #202020;
+  outline:none;
+}
+
+
+/*
+input[type="submit"]:active, input[type="button"]:active, input[type="reset"]:active {
+  border-bottom:1px #ffffff solid;
+  border-right:1px #ffffff solid;
+  border-top:1px #606060 solid;
+  border-left:1px #606060 solid;
+}
+*/
+
+fieldset {
+  border: 2px solid #202020;
+  margin: 16px 4px;
+  padding: 8px;
+  font-size: 12px;
+}
+
+fieldset legend {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  background: none repeat scroll 0 0 #202020;
+  font-size: 14px;
+  font-weight: bold;
+  padding: 1px 16px;
+}
+
+#quickconnect {
+  color:#f0f0f0;
+}
+#quickconnect fieldset {
+  border: 2px solid #f0f0f0;
+  background:#404040;
+  margin: 16px 4px 4px;
+  padding: 4px;
+}
+#quickconnect fieldset legend {
+  background: none repeat scroll 0 0 #f0f0f0;
+  color:#666666;
+}
+#quickconnect #iValid {
+  margin-top:12px;
+}
+#quickconnect ul.actions {
+  float:right;
+}
+
+/*
+  picture page
+*/
+#imageHeaderBar {
+  border-width: 2px;
+  -moz-border-radius:6px;
+  -webkit-border-radius:6px;
+  -khtml-border-radius:6px;
+  border-radius:6px;
+  z-index: 1000;
+  position: relative;
+}
+
+#imageHeaderBar div {
+  color:#666666;
+}
+
+#imageHeaderBar div.browsePath {
+  float:none;
+}
+
+#theImage {
+  position:static;
+  padding-bottom:0px;
+}
+
+#theImage p {
+  margin:0;
+}
+
+#theImgContainer {
+  border:8px #ffffff solid;
+  margin-top:30px;
+}
+
+#theImageHigh {
+  position: fixed;
+}
+
+#theImgHighBg {
+  background-color:#000000;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+}
+
+#theImgHighContainer {
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  -khtml-border-radius:10px;
+  border-radius:10px;
+  background:#FFFFFF url(./../icon/processing.gif) no-repeat scroll 82px 42px;
+}
+
+#theImgHighCloseButton {
+  width:15px;
+  height:15px;
+  background:transparent url(./../icon/buttons.png) no-repeat scroll -946px 0px;
+  top:-6px;
+  right:15px;
+  cursor:pointer;
+}
+#theImgHighCloseButton:hover {
+  background-position:-946px -22px;
+}
+
+#theImgHighZoomButton {
+  width:15px;
+  height:15px;
+  top:-6px;
+  right:35px;
+  cursor:pointer;
+  background:transparent url(./../icon/buttons.png);
+}
+
+#theImgHighZoomButton.fit {
+  background-position:-990px 0px;
+}
+#theImgHighZoomButton.fit:hover {
+  background-position:-990px -22px;
+}
+
+#theImgHighZoomButton.full {
+  background-position:-968px 0px;
+}
+#theImgHighZoomButton.full:hover {
+  background-position:-968px -22px;
+}
+
+
+#imageHeaderBar.browsePath h2 {
+  font-weight:normal;
+}
+
+#imageToolBar {
+  height:0px;
+  top:0px;
+  overflow:visible;
+  width:954px;
+  margin-top: 1px;
+}
+
+.imageToolBarBg {
+  background:#202020;
+  z-index:-1;
+  left:0px;
+  -moz-border-radius:6px;
+  -webkit-border-radius:6px;
+  -khtml-border-radius:6px;
+  border-radius:6px;
+  min-height: 23px;
+}
+
+#imageToolBar h2 {
+  color:#d9d9d9;
+  margin-top:6px;
+}
+
+#navThumbNext {
+  right:auto;
+  margin-left:768px;
+}
+
+#navThumbPrev {
+  left:auto;
+  margin-left:-14px;
+}
+
+#navThumbNext, #navThumbPrev {
+  top:310px;
+  max-height:200px;
+  height:200px;
+}
+
+#navThumbPrevContainer, #navThumbNextContainer {
+  height:200px;
+}
+
+.navThumbNextBg, .navThumbPrevBg {
+  -moz-border-radius:12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+  background: none repeat scroll 0 0 #202020;
+  height:180px;
+  width:180px;
+  margin:10px;
+}
+
+#navThumbNextContainer:hover div.navThumbNextBg,
+#navThumbPrevContainer:hover div.navThumbPrevBg {
+  background:#666666;
+}
+
+
+#imageInfos {
+  z-index:100;
+}
+
+#imageInfosContainer {
+  padding-bottom:8px;
+}
+
+.infoTable {
+  margin:auto;
+  font-size:90%;
+  max-width:94%;
+  color:#d9d9d9;
+  z-index:200;
+  border-collapse:collapse;
+  position:relative;
+}
+
+.infoTable td {
+  padding-bottom:5px;
+  padding-left:4px;
+  padding-right:5px;
+}
+
+.infoTable td.value, .infoTable td.label {
+  padding-right:50px;
+}
+
+.infoTable .label {
+  font-weight:bold;
+}
+
+.infoTable tr:hover {
+  color:#f0f0f0;
+  background-color:#666666;
+  cursor:default;
+}
+.infoTable tr.emptyrow td {
+  height:4px;
+  padding:0px;
+}
+
+.imageMeta {
+  padding-top:16px;
+}
+
+#updateRate {
+  margin-right:25px;
+  float:left;
+}
+#rateForm {
+  float:left;
+  position:relative;
+  top:-2px;
+}
+#rateForm input[type="button"].rateButtonStarFull,
+#rateForm input[type="button"].rateButtonStarFull:focus,
+#rateForm input[type="submit"].rateButtonStarFull  {
+  background: url('./../icon/rating-stars.png') no-repeat scroll; background-position:-16px center; width:16px;
+  outline:none;
+}
+
+#rateForm input[type="button"].rateButtonStarEmpty,
+#rateForm input[type="button"].rateButtonStarEmpty:focus,
+#rateForm input[type="submit"].rateButtonStarEmpty {
+  background: url('./../icon/rating-stars.png') no-repeat scroll; background-position:0 center; width:16px;
+  outline:none;
+}
+
+#rateForm input[type="button"],
+#rateForm  input[type="button"]:active,
+#rateForm input[type="submit"],
+#rateForm  input[type="submit"]:active {
+  cursor:pointer;
+  border:none;
+  padding:0;
+}
+
+#theCommentsPage ul.commentList {
+  padding:0;
+}
+
+#theCommentsPage ul.commentList li {
+  background:#202020;
+  -moz-border-radius:12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+  margin-bottom: 8px;
+  padding: 4px;
+}
+
+#theCommentList ul.commentList {
+  padding: 0 0 0 17px;
+}
+
+.commentDetail ul {
+  list-style-type:none;
+  padding:4px;
+}
+.commentDetail ul li {
+  float:right;
+}
+
+#theCommentsPage ul.commentList li .commentDetail ul li {
+  display:inline;
+  margin:0;
+  padding:0;
+}
+
+.commentDetail .description {
+  padding-top: 12px;
+}
+
+.commentDetail .description .author,
+.commentDetail .description .date {
+  font-weight:bold;
+  color:#d9d9d9;
+}
+
+.commentDetail .description blockquote {
+  margin:0;
+  padding:4px 4px 8px 12px;
+  text-align:justify;
+}
+
+.commentDetail fieldset legend {
+  background:none;
+}
+
+#titleComment h3:hover {
+  background:#101010;
+}
+
+.comment_icon {
+  margin-left:5px;
+  padding:0;
+  position:absolute;
+}
+
+#theCommentContainer {
+  clear:both;
+  width: 915px;
+}
+
+#theCommentContainer input, #theCommentContainer textarea {
+  max-width:418px;
+}
+
+#theCommentContainer #contentEditId {
+  max-width:410px;
+}
+
+#theCommentContainer form {
+  padding-right:8px;
+  padding-left:8px;
+  padding-top:0px;
+}
+
+#theCommentList {
+  width:449px;
+  height:75%;
+}
+
+.imageNumber {
+  font-size: 70%;
+  font-weight: bold;
+  padding: 2px 0 0;
+}
+
+
+/*
+ * tabs
+*/
+#theTabs {
+}
+
+#theTabsBg {
+  background:#202020;
+  border-bottom:2px solid #666666;
+}
+
+#theTabsheets {
+  margin:6px 0 0;
+}
+
+#theTabsheets li.tab, #theTabs div.tab {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  background-color:#202020;
+  border:1px solid #666666;
+  display:block;
+  float:left;
+  margin:0 0 0 4px;
+  padding:2px 8px;
+  position:relative;
+  top:2px;
+  font-size:11px;
+  height:14px;
+}
+
+#theTabsheets li.tab:hover {
+  background:#666666;
+}
+
+#theTabsheets li.ui-tabs-selected {
+  border-bottom-width:3px;
+  padding:4px 8px;
+  top:2px;
+}
+
+#theTabsContainer {
+  position:absolute;
+  width:954px;
+  margin-top: -6px;
+  padding-top: 6px;
+  z-index:850;
+}
+
+#theTabsContainer .navigationBar {
+  background:transparent;
+  margin:0px;
+  border:none;
+  float:right;
+}
+
+#theTabs #tabNavigate {
+  float:right;
+  margin-right:4px;
+}
+
+
+#theTabs #tabNavigate div.navButtons {
+  margin: 0;
+  position: relative;
+  top: -2px;
+  width: auto;
+  z-index: 100;
+}
+
+
+
+#theTabs #tabRandomButtons {
+  height: auto;
+  margin-top: 12px;
+  position: absolute;
+  padding:2px;
+}
+
+#theTabs #tabImageInfos {
+  margin-left: 42px;
+}
+
+#theTabs div.tabPanel {
+  margin-left:40px;
+}
+
+.randomButtons {
+  left: 0;
+  z-index: 110;
+  margin-left:0;
+  position:relative;
+  top:0;
+}
+
+div.randomButtons a.button {
+  display:block;
+}
+
+
+/*
+  tags
+*/
+
+#fullTagCloud SPAN a:hover {
+  background:#666666;
+  -moz-border-radius:3px;
+  -webkit-border-radius:3px;
+  -khtml-border-radius:3px;
+  border-radius:3px;
+}
+
+#menuTagCloud {
+  padding:6px;
+}
+
+#menuTagCloud SPAN {
+  margin:0px;
+}
+
+#fullTagCloud span a {
+  padding:4px;
+  margin:0px;
+}
+
+#fullTagCloud {
+  padding:8px 16px;
+  margin:0px;
+}
+
+.tagLetters {
+  padding:8px 16px;
+}
+
+.nbEntries {
+  text-align:right;
+  padding-left:20px;
+  font-size:75%;
+}
+
+.tagaddbutton {
+  left:-4px;
+  position:relative;
+  top:-3px;
+}
+
+
+.mandatorystar {
+  color:#A04040;
+}
+
+.mandatorynfo {
+  font-size:90%;
+  margin:0 0 4px 8px
+}
+
+tr.tagLine:hover {
+  background:#666666;
+  -moz-border-radius:3px;
+  -webkit-border-radius:3px;
+  -khtml-border-radius:3px;
+  border-radius:3px;
+}
+
+.tagLetterContent {
+  border-collapse: collapse;
+}
+
+/*
+  help
+*/
+#thePopuphelpPage h1 {
+  background:transparent;
+  padding-top:30px;
+}
+
+
+#thePopuphelpPage #the_page {
+  left: 0;
+  width: 96%;
+}
+
+#thePopuphelpPage #theHeader {
+  -moz-border-radius: 12px;
+  -webkit-border-radius: 12px;
+  -khtml-border-radius: 12px;
+  border-radius: 12px;
+  background: none repeat scroll 0 0 #202020;
+  margin-top: 8px;
+  padding: 0px 16px;
+  border-top: 4px solid;
+  color:#666666;
+}
+
+#thePopuphelpPage #content {
+  margin:0 8px;
+  min-height:0;
+  padding:16px;
+}
+
+#thePopuphelpPage #copyright {
+  width: 96%;
+}
+
+#thePopuphelpPage ul.categoryActions {
+  margin:-16px 0 0;
+  padding:0;
+}
+
+/*
+ * diaporama
+*/
+#imageHeaderBar h2.showtitle {
+  display:inline;
+}
+
+#imageHeaderBar div.slideShow {
+  padding:2px 0 0 5px;
+}
+
+/*
+ * notification
+ */
+span.rssFeed {
+  display:inline-block;
+  width:11px;
+  height:14px;
+  background-image:url(./../icon/buttons.png);
+  background-repeat:no-repeat;
+  background-position:-924px 0;
+  margin-right: 4px;
+  position: relative;
+  top: 2px;
+}
+
+
+
+
+/*
+ * tips
+ */
+
+#iSimpleTipContent {
+  background: none repeat scroll 0 0 #C0C0C0;
+  border: none;
+  color: #202020;
+  font-family: sans-serif;
+  font-size: 11px;
+  max-width: 200px;
+  padding: 4px;
+  min-height: 15px;
+}
+#iSimpleTipShadow, #iSimpleTipContent {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+}
+
+#iSimpleTipContent span.title {
+  font-weight:bold;
+}
+#iSimpleTipContent ul, #iSimpleTipContent ol {
+  margin:4px;
+  padding-left:15px;
+}
+
+#iSimpleTipContent img {
+  margin:8px;
+}
+
+#iSimpleTipContent span.navDesc {
+  text-align:center;
+  display:block;
+}
+
+#iSimpleTipContent span.navAction {
+  font-weight:bold;
+}
+#iSimpleTipContent span.navTitle {
+  font-style:italic;
+}
+
+
+
+/*
+ vd language switch plugin
+*/
+ul.categoryActions li.menuf ul li a, .menuf ul li a:visited {
+  height:27px;
+  line-height:27px;
+  margin-top:3px;
+}
+
+.menuf ul.flag-pan .flags:hover, .menuf a img.flags {
+  border:1px solid #202020;
+}
+
+.menuf ul.flag-pan .flags {
+  border:1px solid #202020;
+}
+
+.menuf ul.flag-pan {
+  -moz-border-radius: 6px;
+  -webkit-border-radius:6px;
+  -khtml-border-radius:6px;
+  border-radius:6px;
+  background: none repeat scroll 0 0 #202020;
+  border: 2px solid #101010;
+  padding-bottom: 4px;
+  margin-left: 6px;
+  margin-top: -4px;
+}
+
+/*
+ * PWG Stuff plugin
+*/
+div.stuffs_block {
+  margin:0px;
+  padding:0px;
+}
+
+div.stuffs_block .stuffs {
+  margin:0px;
+  padding:0px;
+  background:transparent;
+}
+
+div.stuffs_block .stuffs h2 {
+  margin:0px;
+  padding-top:4px;
+}
+
+div.stuffs_block div.personal_block,
+div.stuffs_block #comments {
+  -moz-border-radius: 12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+  background: #202020;
+  margin-top: -24px;
+  margin-bottom: 8px;
+  padding: 35px 15px 15px;
+}
+
+/*
+ * AMM compatibility
+*/
+div#menubar dd.randompicdd {
+  margin-left:-7px;
+}
+
+div#irandompicinner.illustration {
+  height:auto;
+  padding:0px;
+}
+
+
+
+/*
+ * GMaps compatibility
+ */
+#icon_gmaps {
+  height:22px;
+}
+#icon_gmaps.size42x28 {
+  background:url(./../icon/gmaps/i42x28.png);
+  width:40px;
+}
+#icon_gmaps.size42x28:hover {
+  background:url(./../icon/gmaps/i42x28_h.png);
+}
+#icon_gmaps.size28x28 {
+  background:url(./../icon/gmaps/i28x28.png);
+  width:22px;
+}
+#icon_gmaps.size28x28:hover {
+  background:url(./../icon/gmaps/i28x28_h.png);
+}
Index: extensions/gally/gally-black-graphite/icon/asearchengine/index.php
===================================================================
--- extensions/gally/gally-black-graphite/icon/asearchengine/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/icon/asearchengine/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/icon/gmaps/index.php
===================================================================
--- extensions/gally/gally-black-graphite/icon/gmaps/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/icon/gmaps/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/icon/index.php
===================================================================
--- extensions/gally/gally-black-graphite/icon/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/icon/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/icon/xcf/index.php
===================================================================
--- extensions/gally/gally-black-graphite/icon/xcf/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/icon/xcf/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/index.php
===================================================================
--- extensions/gally/gally-black-graphite/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/language/en_UK/index.php
===================================================================
--- extensions/gally/gally-black-graphite/language/en_UK/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/language/en_UK/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/language/en_UK/theme.lang.php
===================================================================
--- extensions/gally/gally-black-graphite/language/en_UK/theme.lang.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/language/en_UK/theme.lang.php	(revision 8534)
@@ -0,0 +1,10 @@
+<?php
+
+$lang['gally_menu_1'] = 'Menu';
+$lang['gally_menu_1_desc'] = 'This page lets you define the properties of the menu of the gallery';
+$lang['gally_expand_menu'] = 'Expand menu';
+$lang['gally_expand_menu_desc'] = 'This option allows you to develop the full menu of categories / subcategories';
+$lang['gally_expand_menu_yes'] = 'Expand the menu';
+$lang['gally_expand_menu_no'] = 'Don\'t expand the menu';
+
+?>
Index: extensions/gally/gally-black-graphite/language/fr_FR/index.php
===================================================================
--- extensions/gally/gally-black-graphite/language/fr_FR/index.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/language/fr_FR/index.php	(revision 8534)
@@ -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: extensions/gally/gally-black-graphite/language/fr_FR/theme.lang.php
===================================================================
--- extensions/gally/gally-black-graphite/language/fr_FR/theme.lang.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/language/fr_FR/theme.lang.php	(revision 8534)
@@ -0,0 +1,10 @@
+<?php
+
+$lang['gally_menu_1'] = 'Menu';
+$lang['gally_menu_1_desc'] = 'Cette page permet de définir les propriétés du menu de navigation de la galerie';
+$lang['gally_expand_menu'] = 'Développement du menu';
+$lang['gally_expand_menu_desc'] = 'Cette option permet de développer intégralement le menu des catégories/sous-catégories';
+$lang['gally_expand_menu_yes'] = 'Développer le menu';
+$lang['gally_expand_menu_no'] = 'Ne pas développer le menu';
+
+?>
Index: extensions/gally/gally-black-graphite/mail-css.tpl
===================================================================
--- extensions/gally/gally-black-graphite/mail-css.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/mail-css.tpl	(revision 8534)
@@ -0,0 +1,37 @@
+{literal}
+body {
+  background:#303030 url({/literal}{$ROOT_URL}themes/gally-lapis-lazuli/icon/backgd.png{literal});
+  color:#dedede;
+}
+#the_page {
+  width:1012px;
+  margin:auto;
+}
+#content {
+  width:1012px;
+  background:transparent url({/literal}{$ROOT_URL}themes/gally-lapis-lazuli/icon/skin_page.png{literal}) repeat-y;
+  color:#dedede;
+  margin:0px;
+  padding:32px;
+}
+#header {
+  width:1012px;
+  height:120px;
+  background:transparent url({/literal}{$ROOT_URL}themes/gally-lapis-lazuli/icon/skin_top.png{literal}) no-repeat;
+}
+#copyright {
+  background:transparent url({/literal}{$ROOT_URL}themes/gally-lapis-lazuli/icon/skin_bottom.png{literal}) no-repeat;
+  font-size:9px;
+  height:45px;
+  padding:16px;
+  width:1012px;
+}
+
+h2 { background: #303030 url({/literal}{$ROOT_URL}themes/gally-lapis-lazuli/icon/backgd.png{literal}); }
+img { border:1px #303030 solid; margin:8px; }
+img:hover { border:1px #fff solid; margin:8px; padding:0px;}
+a { color: #0066cc; }
+a:hover { color: #F07D00; }
+{/literal}
+
+
Index: extensions/gally/gally-black-graphite/pem_metadata.txt
===================================================================
--- extensions/gally/gally-black-graphite/pem_metadata.txt	(revision 8534)
+++ extensions/gally/gally-black-graphite/pem_metadata.txt	(revision 8534)
@@ -0,0 +1,4 @@
+File automatically created from SVN repository.
+
+URL: http://piwigo.org/svn/extensions/gally/gally-lapis-lazuli 
+Revision: 6109
Index: extensions/gally/gally-black-graphite/template/comment_list.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/comment_list.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/comment_list.tpl	(revision 8534)
@@ -0,0 +1,112 @@
+{*
+ The comment list is defined inside a tabsheet made with the jQuery $().tabs()
+ With jQuery 1.2.6 (don't know how other release manage this) all the anchors <A> tags are considered as a tab.
+ So, can't use <A href="link"> because href is modified by the jQuery function.
+ Links are managed by an event onclick="document.location='link';"
+*}
+
+<script type="text/javascript">
+{literal}
+  function editInside(url, text, imageId, key, index)
+  {
+    $('#editInside'+index).get(0).appendChild($("#formEditInside").get(0));
+    $("#formEditInside").css('display', 'block');
+    $('#feiKey').val(key);
+    $('#feiImageId').val(imageId);
+    $('#contentEditId').val(text);
+    $('#editComment').attr('action', url);
+
+  }
+{/literal}
+
+</script>
+
+
+<div id="formEditInside" style="display:none;">
+  <form  method='post' action='' class='filter' id='editComment'>
+    <fieldset>
+      <legend>{'Edit a comment'|@translate}</legend>
+      <textarea name='content' id='contentEditId' rows='5' cols='80'></textarea></label><br>
+      <input type='hidden' name='key' id='feiKey' value=''>
+      <input type='hidden' name='image_id' id='feiImageId' value=''>
+      <input class='submit' type='submit' value='{"Submit"|@translate}'>
+    </fieldset>
+  </form>
+</div>
+
+<ul class="commentList">
+{foreach from=$comments item=comment name=comment_loop}
+<li>
+  <div class="commentDetail">
+    {if isset($comment.TN_SRC)}
+    <div class="illustration">
+      <a href="{$comment.U_PICTURE}">
+        <img src="{$comment.TN_SRC}" alt="{$comment.ALT}" />
+      </a>
+    </div>
+    {/if}
+    <div class="description">
+      {if isset($comment.U_DELETE) or isset($comment.U_VALIDATE) or isset($comment.U_EDIT) }
+      <ul class="actions" style="float:right">
+        {if isset($comment.U_DELETE)}
+        <li>
+          <span class="button id_delete" onclick="document.location='{$comment.U_DELETE}';" title="{'delete this comment'|@translate}"></span>
+        </li>
+        {/if}
+
+        {if isset($comment.U_EDIT) and !isset($comment.IN_EDIT)}
+        <li>
+          {php}
+            /*
+              this php code is used to calculate the key need to be allowed to
+              edit the comment, and determine the picture number if necessary
+              (theses properties are not in the template var because with the
+              default template, Piwigo reloads the page for editing an item :
+              this template is abble to edit an item without reloading the page)
+            */
+            global $conf;
+            $comment=$this->get_template_vars('comment');
+            $current=$this->get_template_vars('current');
+            if(!array_key_exists('image_id', $comment))
+            {
+              if(isset($current['id']))
+              {
+                $comment['IMAGE_ID']=$current['id'];
+              }
+              else
+              {
+                preg_match('#picture\.php\?/(\d+)/category/#i', $comment['U_PICTURE'], $result);
+                if(isset($result[1]))
+                {
+                  $comment['IMAGE_ID']=$result[1];
+                }
+              }
+            }
+            $now=time();
+            $comment['KEY']=$now.":".hash_hmac('md5', $now.':'.$comment['IMAGE_ID'], $conf['secret_key']);
+            $this->assign_by_ref('comment', $comment);
+          {/php}
+          <span class="button id_edit" onclick="editInside('{$comment.U_EDIT}#edit_comment}', '{$comment.CONTENT|@escape}', {$comment.IMAGE_ID|@default:$current.id}, '{$comment.KEY}', {$smarty.foreach.comment_loop.index});" title="{'edit this comment'|@translate}"></span>
+
+        </li>
+        {/if}
+
+        {if isset($comment.U_VALIDATE)}
+        <li>
+          <span class="button id_validate" onclick="document.location='{$comment.U_VALIDATE}';" title="{'validate this comment'|@translate}"></span>
+        </li>
+        {/if}
+      </ul>
+      {/if}
+      <span class="author">{$comment.AUTHOR}</span> - <span class="date">{$comment.DATE}</span>
+
+      <div id="editInside{$smarty.foreach.comment_loop.index}">
+        <blockquote>{$comment.CONTENT}</blockquote>
+      </div>
+
+    </div>
+  </div>
+</li>
+
+{/foreach}
+</ul>
Index: extensions/gally/gally-black-graphite/template/index.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/index.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/index.tpl	(revision 8534)
@@ -0,0 +1,175 @@
+<!-- **GBL** >INDEX> -->
+
+{if !empty($PLUGIN_INDEX_CONTENT_BEFORE)}{$PLUGIN_INDEX_CONTENT_BEFORE}{/if}
+
+<div id="content" class="content">
+  <div class="titrePage" id='titrePageID'>
+
+    {if #menuAnimated# == "noswitch"}
+      {$MENUBAR}
+    {else}
+    <div id="menuswitcher">
+      <a id="icon_menu" class="button" onclick="gallyCP.switchmenu('', '{$ROOT_URL}{$themeconf.icon_dir}/');">&nbsp;
+        <!-- <img  src="{$ROOT_URL}{$themeconf.icon_dir}/menu-show.png"  alt="{'display all elements in all sub-categories'|@translate}"> -->
+      </a>
+    </div>
+    {/if}
+
+      <ul class="categoryActions" id="categoryActionsID">
+        <li>&nbsp;</li>
+        {if !empty($image_orders) }
+        <li class="selector">
+        {'Sort order'|@translate}:
+        <select onchange="document.location = this.options[this.selectedIndex].value;">
+          {foreach from=$image_orders item=image_order }
+          <option value="{$image_order.URL}"{if $image_order.SELECTED} selected="selected"{/if}}>{$image_order.DISPLAY}</option>
+          {/foreach}
+        </select>
+        </li>
+        {/if}
+
+        {if isset($favorite) }
+        <li><a id="icon_delall_favorite" class="button" href="{$favorite.U_FAVORITE}" title="{'delete all images from your favorites'|@translate}">
+          <!-- <img src="{$favorite.FAVORITE_IMG}" class="button" alt="favorite" title="{'delete all images from your favorites'|@translate}">- --></a></li>
+        {/if}
+
+        {if isset($U_CADDIE) }
+        <li><a id="icon_caddie" class="button" href="{$U_CADDIE}" title="{'add to caddie'|@translate}">
+          <!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/caddie_add.png" class="button" alt="{'caddie'|@translate}"/> --> </a></li>
+        {/if}
+
+        {if isset($U_EDIT) }
+        <li><a id="icon_category_edit" class="button" href="{$U_EDIT}" title="{'edit category informations'|@translate}">
+          <!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/category_edit.png" class="button" alt="{'edit'|@translate}"/> --></a></li>
+        {/if}
+
+        {if isset($U_SEARCH_RULES) }
+        <li><a id="icon_search_rules" class="button" href="{$U_SEARCH_RULES}" style="border:none;" onclick="popuphelp(this.href); return false;" title="{'Search rules'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/search_rules.png" class="button" alt="(?)"> --></a></li>
+        {/if}
+
+        {if isset($U_SLIDESHOW) }
+        <li><a id="icon_start_slideshow" class="button" href="{$U_SLIDESHOW}" title="{'slideshow'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/start_slideshow.png" class="button" alt="{'slideshow'|@translate}"/> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_FLAT) }
+        <li><a id="icon_flat" class="button" href="{$U_MODE_FLAT}" title="{'display all elements in all sub-categories'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/flat.png" class="button" alt="{'display all elements in all sub-categories'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_NORMAL) }
+        <li><a id="icon_normal_mode" class="button" href="{$U_MODE_NORMAL}" title="{'return to normal view mode'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/normal_mode.png" class="button" alt="{'return to normal view mode'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_POSTED) }
+        <li><a id="icon_calendar" class="button" href="{$U_MODE_POSTED}" title="{'display a calendar by posted date'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar.png" class="button" alt="{'display a calendar by posted date'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_CREATED) }
+        <li><a id="icon_calendar_created" class="button" href="{$U_MODE_CREATED}" title="{'display a calendar by creation date'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar_created.png" class="button" alt="{'display a calendar by creation date'|@translate}"> --></a></li>
+        {/if}
+
+        {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if}
+      </ul>
+
+
+  <h2 class='treeLinks'>{$TITLE|replace:' / ':' &#124; '}</h2>
+
+
+
+  </div> <!-- titrePage -->
+
+{if #menuAnimated# != "noswitch"}
+  {$MENUBAR}
+{/if}
+
+
+<div id="subContent">
+  <div class="titrePage{if !(isset($chronology_views) or isset($chronology.TITLE))}Empty{/if}" id="titreContent1">
+    {if isset($chronology_views) }
+    <div class="calendarViews">{'View'|@translate}:
+      <select onchange="document.location = this.options[this.selectedIndex].value;">
+        {foreach from=$chronology_views item=view}
+        <option value="{$view.VALUE}"{if $view.SELECTED} selected="selected"{/if}>{$view.CONTENT}</option>
+        {/foreach}
+      </select>
+    </div>
+    {/if}
+
+    {if isset($chronology.TITLE) }
+    <h2>{$chronology.TITLE}</h2>
+    {/if}
+  </div>
+
+  {if !empty($PLUGIN_INDEX_CONTENT_BEGIN)}{$PLUGIN_INDEX_CONTENT_BEGIN}{/if}
+
+  {if !empty($category_search_results) }
+  <div style="font-size:16px;text-align:left;margin:10px">{'Category 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 style="font-size:16px;text-align:left;margin:10px">{'Tag results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
+    <em><strong>
+    {foreach from=$tag_search_results item=res name=res_loop}
+    {if !$smarty.foreach.res_loop.first} &mdash; {/if}
+    {$res}
+    {/foreach}
+    </strong></em>
+  </div>
+  {/if}
+
+  {if isset($FILE_CHRONOLOGY_VIEW) }
+  {include file=$FILE_CHRONOLOGY_VIEW}
+  {/if}
+
+  {if !empty($CATEGORIES) or !empty($THUMBNAILS) or !empty($CONTENT_DESCRIPTION)}
+  <table id="thumbContents"><tr>
+    {if !empty($CONTENT_DESCRIPTION) }
+    <td class="additional_info" id="additional_infoID">
+      <div id="additional_infoLEFT">
+        {$CONTENT_DESCRIPTION}
+      </div>
+    </td>
+    {/if}
+
+    {if !empty($CATEGORIES) or !empty($THUMBNAILS)}
+    <td id="thumbContainer">
+      <div id="thumbSubContainer">
+
+        <div id="additional_infoTOP">
+          {if !empty($CONTENT_DESCRIPTION_TOP) }
+          {$CONTENT_DESCRIPTION_TOP}
+          {/if}
+        </div>
+
+        {if !empty($CATEGORIES) }<div id="categories">{$CATEGORIES}</div>{/if}
+        {if !empty($THUMBNAILS) }<div id="thumbnails">{$THUMBNAILS}</div>{/if}
+
+        <div id="additional_infoBOTTOM">
+          {if !empty($CONTENT_DESCRIPTION_BOTTOM) }
+          {$CONTENT_DESCRIPTION_BOTTOM}
+          {/if}
+        </div>
+
+      </div>
+    </td>
+    {/if}
+  </tr></table>
+  {/if}
+
+  {if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+</div> <!-- subContent -->
+
+
+
+{if !empty($PLUGIN_INDEX_CONTENT_END) }{$PLUGIN_INDEX_CONTENT_END}{/if}
+</div> <!-- content -->
+
+{if !empty($PLUGIN_INDEX_CONTENT_AFTER)}{$PLUGIN_INDEX_CONTENT_AFTER}{/if}
+<!-- **GBL** <INDEX< -->
Index: extensions/gally/gally-black-graphite/template/mainpage_categories.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/mainpage_categories.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/mainpage_categories.tpl	(revision 8534)
@@ -0,0 +1,45 @@
+
+<!-- **GBL** >MAINPAGE_CATEGORIES> -->
+
+<ul class="thumbnailCategories">
+  {foreach from=$category_thumbnails item=cat name=catloop}
+  <li class="odd{if ($smarty.foreach.catloop.iteration-1) % 2 == 0}0{else}1{/if}">
+    <div class="thumbnailCategory" onclick="window.location='{$cat.URL}';">
+      <div class="description">
+
+        <p class="thumbCatDescNbImg">{$cat.CAPTION_NB_IMAGES}</p>
+
+        <h3>
+          {$cat.NAME}
+            {if !empty($cat.icon_ts)}
+            <span class="button {if $cat.icon_ts.IS_CHILD_DATE}id_recent_cat_by_child{else}id_recent_cat{/if}"></span>
+            {/if}
+        </h3>
+
+
+          <div class="illustration">
+            <img {if isset($cat.EXTRA_CLASS)}class="{$cat.EXTRA_CLASS}"{/if} src="{$cat.TN_SRC}" alt="{$cat.TN_ALT}">
+          </div>
+
+
+        <div class="text">
+
+          {if isset($cat.INFO_DATES) }
+          <p class="thumbCatDescNfoDate">{$cat.INFO_DATES}</p>
+          {/if}
+
+          {if not empty($cat.DESCRIPTION)}
+          <p class="thumbCatDesc">{$cat.DESCRIPTION}</p>
+          {/if}
+        </div>
+
+
+      </div>
+
+
+    </div>
+  </li>
+  {/foreach}
+</ul>
+
+<!-- **GBL** <MAINPAGE_CATEGORIES< -->
Index: extensions/gally/gally-black-graphite/template/menubar_categories.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/menubar_categories.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/menubar_categories.tpl	(revision 8534)
@@ -0,0 +1,48 @@
+<dt>
+  {if isset($U_START_FILTER)}
+  <a id="icon_start_filter" class="button sTipOnTop" href="{$U_START_FILTER}" title="{'display only recently posted images'|@translate}" rel="nofollow"></a>
+  {/if}
+  {if isset($U_STOP_FILTER)}
+  <a id="icon_stop_filter" class="button sTipOnTop" href="{$U_STOP_FILTER}" title="{'return to the display of all images'|@translate}"></a>
+  {/if}
+  <a href="{$block->data.U_CATEGORIES}">{'Categories'|@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}>{$cat.NAME}</a>
+        {if $cat.count_images > 0}
+        <span class="{if $cat.nb_images > 0}menuInfoCat{else}menuInfoCatByChild{/if} sTipOnTop" title="{$cat.TITLE}">[{$cat.count_images}]</span>
+        {/if}
+        {if !empty($cat.icon_ts)}
+        <span class="button {if $cat.icon_ts.IS_CHILD_DATE}id_recent_cat_by_child{else}id_recent_cat{/if}"></span>
+        {/if}
+    {assign var='ref_level' value=$cat.LEVEL}
+  {/foreach}
+  {'</li></ul>'|@str_repeat:$ref_level}
+
+  {if isset($block->data.U_UPLOAD)}
+  <ul>
+    <li>
+      <a href="{$block->data.U_UPLOAD}">{'Upload a picture'|@translate}</a>
+    </li>
+  </ul>
+  {/if}
+  <p class="totalImages">{$pwg->l10n_dec('%d image', '%d images', $block->data.NB_PICTURE)}</p>
+</dd>
+
+
+
+
+
+
+
+
Index: extensions/gally/gally-black-graphite/template/month_calendar.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/month_calendar.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/month_calendar.tpl	(revision 8534)
@@ -0,0 +1,96 @@
+<!-- **GBL** >MONTH_CALENDAR> -->
+{if !empty($chronology_navigation_bars) }
+{foreach from=$chronology_navigation_bars item=bar}
+<div class="calendarBar">
+  {if isset($bar.previous)}
+    <span class="calItemP"><a href="{$bar.previous.URL}">&laquo;  {$bar.previous.LABEL}</a></span>
+  {/if}
+
+  {if isset($bar.next)}
+    <span class="calItemN" ><a href="{$bar.next.URL}">{$bar.next.LABEL} &raquo;</a></span>
+  {/if}
+
+  {if empty($bar.items)}
+    &nbsp;
+  {else}
+    {foreach from=$bar.items item=item}
+    <span class="calItem{if !isset($item.URL)}Empty{/if}" {if isset($item.NB_IMAGES)}title="{$pwg->l10n_dec('%d image', '%d images', $item.NB_IMAGES)}"{/if}>
+    {if isset($item.URL)}
+      <a href="{$item.URL}">{$item.LABEL}</a>
+    {else}
+      {$item.LABEL}
+    {/if}
+    </span>
+    {/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>
+  <span class="calCalNbImg">[{$bar.NB_IMAGES}]</span>
+  </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)}<span class="calCalNbImg">[{$item.NB_IMAGES}]</span>{/if}
+    </span>
+  {/foreach}
+</div>
+{/foreach}
+{/if}
+
+{if isset($chronology_calendar.month_view) }
+<div>
+  <table class="calMonth">
+  <thead>
+  <tr>
+  {foreach from=$chronology_calendar.month_view.wday_labels item=wday}
+    <td class="calDayHead">{$wday}</td>
+  {/foreach}
+  </tr>
+  </thead>
+  {html_head} {*add the style to html head for strict standard compliance*}
+  <style type="text/css">
+  TABLE.calMonth TBODY TD, TABLE.calMonth TBODY TD DIV.calImg {ldelim}
+    width:{$chronology_calendar.month_view.CELL_WIDTH}px;height:{$chronology_calendar.month_view.CELL_HEIGHT}px;
+  }
+  </style>
+  {/html_head}
+  {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 sTipOnRight" title="{$pwg->l10n_dec('%d image','%d images', $day.NB_ELEMENTS)}" >
+            <a href="{$day.U_IMG_LINK}">
+                <img style="{$day.IMAGE_STYLE}" src="{$day.IMAGE}" alt="{$day.IMAGE_ALT}" />
+            </a>
+          </div>
+      {else}
+        <td class="calDayCellEmpty">{$day.DAY}
+      {/if}
+    {else}
+      <td class="calDayCellBlank">
+    {/if}
+    </td>
+    {/foreach} {*day in week*}
+  </tr>
+  {/foreach}  {*week in month*}
+  </table>
+</div>
+{/if}
+
+
+
+<!-- **GBL** <MONTH_CALENDAR< -->
Index: extensions/gally/gally-black-graphite/template/picture.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/picture.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/picture.tpl	(revision 8534)
@@ -0,0 +1,437 @@
+<!-- **GBL** >PICTURE> -->
+
+{include file='dialogs.tpl'}
+
+<div id="content">
+
+  <div id="theImageHigh" style="display:none;">
+    <div id="theImgHighBg"></div>
+    <div id="theImgHighContainer">
+      <div id="theImgHighCloseButton" onclick="gallyPP.closeDisplayHigh();"></div>
+      <div id="theImgHighZoomButton" class="fit" onclick="gallyPP.switchZoomHigh();"></div>
+      <div id="theImgHighContainer2">
+        <img id="theImgHigh" src="" style="display:none;" alt="{$ALT_IMG}">
+      </div>
+    </div>
+  </div>
+
+  <div id="imageHeaderBar">
+    <div class="imageNumber">{$PHOTO}</div>
+    <div class="browsePath">
+      <h2>
+      {$SECTION_TITLE|cat:$LEVEL_SEPARATOR|cat:$current.TITLE|replace:$LEVEL_SEPARATOR:" &#124; "}
+      </h2>
+    </div>
+  </div> <!-- imageHeaderBar -->
+
+
+  {if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if}
+
+  <div id="imageToolBar">
+    <div id="imageToolBarContainer" class="uiImg">
+        <div class="imageToolBarBg">&nbsp;</div>
+    </div>
+  </div> <!-- imageToolBar -->
+
+  <div id="theImage">
+    {$ELEMENT_CONTENT}
+
+    {if isset($COMMENT_IMG)}
+    <p>{$COMMENT_IMG}</p>
+    {else}
+    <p>&nbsp;</p>
+    {/if}
+
+    {if isset($U_SLIDESHOW_STOP) }
+    <p>
+      [ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
+    </p>
+    {/if}
+  </div> <!-- theImage -->
+
+  <div id="theTabsContainer">
+  <div id="theTabs" class="uiImg">
+    {assign var='display_info_panel' value=false}
+    {foreach from=$display_info item=displayitem}
+      {if $displayitem}
+        {assign var='display_info_panel' value=true}
+      {/if}
+    {/foreach}
+
+
+
+    {if isset($U_SLIDESHOW_START) or isset($U_SLIDESHOW_STOP) or isset($U_METADATA) or
+        (#displayHighResIcon#=="yes" and isset($high)) or
+        isset($current.U_DOWNLOAD) or isset($favorite) or !empty($U_SET_AS_REPRESENTATIVE) or
+        isset($U_ADMIN) or isset($U_CADDIE)
+    }
+    <div class="tab" id="tabRandomButtons">
+      <div class="randomButtons">
+
+        {if isset($U_SLIDESHOW_START) }
+          <a id="icon_start_slideshow" class="button" href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/start_slideshow.png" class="button" alt="{'slideshow'|@translate}">--></a>
+        {/if}
+        {if isset($U_SLIDESHOW_STOP) }
+          <a id="icon_stop_slideshow" class="button" href="{$U_SLIDESHOW_STOP}"  title="{'stop the slideshow'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_slideshow.png" class="button" alt="{'stop the slideshow'|@translate}">--></a>
+        {/if}
+        {if isset($U_METADATA)}
+          <a id="icon_metadata" class="button" href="{$U_METADATA}" title="{'Show file metadata'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/metadata.png" class="button" alt="metadata" />--></a>
+        {/if}
+
+        {if #displayHighResIcon#=="yes" and isset($high) }
+          <a id="icon_high_res" class="button pointer" onclick="openDisplayHigh('{$high.U_HIGH}');" title="" rel="nofollow" ></a>
+        {/if}
+
+        {if isset($current.U_DOWNLOAD) }
+          <a id="icon_save" class="button" href="{$current.U_DOWNLOAD}" title="{'download this file'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/save.png" class="button" alt="{'download'|@translate}">--></a>
+        {/if}
+
+        {if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
+
+
+        {if isset($favorite) }
+          <a id="icon_{$favorite.FAVORITE_IMG|@regex_replace:'/(.*\/)*(del_)*(favorite)+(\.png)*/i':'$2$3'}" class="button" onclick="window.location='{$favorite.U_FAVORITE}';" title="{$favorite.FAVORITE_HINT}"><!-- <img src="{$favorite.FAVORITE_IMG}" class="button" alt="favorite" title="{$favorite.FAVORITE_HINT}"> --></a>
+        {/if}
+        {if !empty($U_SET_AS_REPRESENTATIVE) }
+          <a id="icon_representative" class="button" href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as category representative'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/representative.png" class="button" alt="{'representative'|@translate}"> --></a>
+        {/if}
+        {if isset($U_ADMIN) }
+          <a id="icon_preferences" class="button" href="{$U_ADMIN}" title="{'Modify information'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/preferences.png" class="button" alt="{'edit'|@translate}"> --></a>
+        {/if}
+        {if isset($U_CADDIE) }
+        <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 id="icon_caddie" class="button" onclick="addToCadie(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}); return false;" title="{'add to caddie'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/caddie_add.png" class="button" alt="{'caddie'|@translate}"> --></a>
+        {/if}
+        <script type="text/javascript">
+          $('div.randomButtons a.button').addClass('sTipOnRight');
+        </script>
+      </div>
+    </div>
+    {/if}
+
+    <div class="tab" id="tabNavigate">
+      {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+    </div>
+
+
+    <ul id="theTabsheets">
+
+      {if $display_info_panel}
+        <li class="tab" id="tabImageInfos"><a href="#imageInfos">{'Informations'|@translate}</a></li>
+      {/if}
+
+      {if isset($metadata)}
+        {foreach from=$metadata item=meta key=id}
+          <li class="tab" id="tabImageMeta{$id}"><a href="#imageMeta{$id}">{$meta.TITLE|@translate}</a></li>
+        {/foreach}
+      {/if}
+
+      {if (isset($COMMENT_COUNT) and ($COMMENT_COUNT>0)) or isset($comment_add) }
+        <li class="tab" id="tabTheComment">
+          <a href="#theComments">{$pwg->l10n_dec('%d comment', '%d comments',$COMMENT_COUNT)}</a>
+          <!-- <span class="comment_icon"><img src="{$ROOT_URL}{$themeconf.icon_dir}/comments.png" alt=""/></span> -->
+        </li>
+      {/if}
+
+    </ul>
+
+
+    <div id="theTabsBg"></div>
+
+
+
+    {if $display_info_panel}
+      <div id="imageInfos" class="tabPanel">
+        <div id="imageInfosContainer">
+        <div class="imageInfosBg">&nbsp;</div>
+
+          <table class="infoTable" summary="{'Some info about this picture'|@translate}">
+            <tr  class="emptyrow" style="line-height:0px;">
+              <td colspan="2">&nbsp;</td>
+              <td width="10px">&nbsp;</td>
+              <td width="12%">&nbsp;</td>
+              <td width="18%">&nbsp;</td>
+              <td width="10px">&nbsp;</td>
+              <td width="12%">&nbsp;</td>
+              <td width="18%">&nbsp;</td>
+            </tr>
+
+            {if $display_info.author or $display_info.created_on or $display_info.posted_on}
+            <tr>
+              {assign var='colspan' value=8}
+              {if $display_info.author}
+                {assign var='colspan' value=`$colspan-3`}
+                <td class="label">{'Author'|@translate}</td>
+                <td class="value" style="min-width:214px;">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
+                <td>&nbsp;</td>
+              {/if}
+
+              {if $display_info.created_on}
+                {assign var='colspan' value=`$colspan-3`}
+                <td class="label">{'Created on'|@translate}</td>
+                <td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
+                <td>&nbsp;</td>
+              {/if}
+
+              {if $display_info.posted_on}
+                {assign var='colspan' value=`$colspan-2`}
+                <td class="label">{'Posted on'|@translate}</td>
+                <td class="value">{$INFO_POSTED_DATE}</td>
+              {/if}
+
+              {if $colspan!=0}
+                <td colspan="{$colspan}">&nbsp;</td>
+              {/if}
+
+            </tr>
+            {/if}
+
+            {if $display_info.dimensions or $display_info.file or $display_info.filesize}
+            <tr>
+              {assign var='colspan' value=8}
+
+              {if $display_info.dimensions}
+                {assign var='colspan' value=`$colspan-3`}
+                <td class="label">{'Dimensions'|@translate}</td>
+                <td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS|@replace:"*":"x"}{else}{'N/A'|@translate}{/if}</td>
+                <td>&nbsp;</td>
+              {/if}
+
+              {if $display_info.file}
+                {assign var='colspan' value=`$colspan-3`}
+                <td class="label">{'File'|@translate}</td>
+                <td class="value">{$INFO_FILE}</td>
+                <td>&nbsp;</td>
+              {/if}
+
+              {if $display_info.filesize}
+                {assign var='colspan' value=`$colspan-2`}
+                <td class="label">{'Filesize'|@translate}</td>
+                <td class="value">{if isset($INFO_FILESIZE)}{$INFO_FILESIZE}{else}{'N/A'|@translate}{/if}</td>
+              {/if}
+
+              {if $colspan!=0}
+                <td colspan="{$colspan}">&nbsp;</td>
+              {/if}
+            </tr>
+            {/if}
+
+            {if isset($related_tags) and $display_info.tags}
+              <tr class="emptyrow"><td colspan="8">&nbsp;</td></tr>
+              <tr id="infoTags">
+                <td class="label">{'Tags'|@translate}</td>
+                <td colspan="7" class="value">
+                    {foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}
+                    <a href="{$tag.URL}">{$tag.name}</a>{/foreach}
+                </td>
+              </tr>
+            {/if}
+
+            {if isset($related_categories) and $display_info.categories}
+              <tr class="emptyrow"><td colspan="8">&nbsp;</td></tr>
+              <tr id="infoCats">
+                <td class="label">{'Categories'|@translate}</td>
+                <td colspan="7" class="value">
+                  {foreach from=$related_categories item=cat name=tag_loop}{if !$smarty.foreach.tag_loop.first},&nbsp;{/if}
+                  {$cat}
+                  {/foreach}
+                </td>
+              </tr>
+            {/if}
+
+            {if $display_info.visits}
+              <tr class="emptyrow"><td colspan="8">&nbsp;</td><tr>
+              <tr>
+                <td class="label">{'Visits'|@translate}</td>
+                <td colspan="7" class="value">{$INFO_VISITS}</td>
+              </tr>
+            {/if}
+
+            {if (isset($rate_summary) or isset($rating)) and  $display_info.average_rate}
+              <tr>
+                {if isset($rate_summary)}
+                  <td class="label">{'Average rate'|@translate}</td>
+                  <td class="value" id="ratingSummary">
+                  {if $rate_summary.count}
+                    {assign var='rate_text' value='%.2f (rated %d times)'|@translate }
+                    {$pwg->sprintf($rate_text, $rate_summary.average, $rate_summary.count) }
+                  {else}
+                    {'no rate'|@translate}
+                  {/if}
+                  </td>
+                {else}
+                  <td colspan="2">&nbsp;</td>
+                {/if}
+                <td>&nbsp;</td>
+
+                {if isset($rating)}
+                  <td class="label" colspan="5">
+                    <span id="updateRate">{if isset($rating.USER_RATE)}{'Update your rating'|@translate}{else}{'Rate this picture'|@translate}{/if}</span>
+
+                    <form action="{$rating.F_ACTION}" method="post" id="rateForm" style="margin:0;">
+                    <div>&nbsp;
+                    {foreach from=$rating.marks item=mark name=rate_loop}
+                    {if !$smarty.foreach.rate_loop.first} | {/if}
+                    {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}
+                    <script type="text/javascript" src="{$ROOT_URL}themes/default/js/rating.js"></script>
+                    <script type="text/javascript">
+                    makeNiceRatingForm( {ldelim}rootUrl: '{$ROOT_URL|@escape:"javascript"}', image_id: {$current.id},
+                    updateRateText: "{'Update your rating'|@translate|@escape:'javascript'}", updateRateElement: document.getElementById("updateRate"),
+                    ratingSummaryText: "{'%.2f (rated %d times)'|@translate|@escape:'javascript'}", ratingSummaryElement: document.getElementById("ratingSummary") {rdelim} );
+                    </script>
+                    </div>
+                    </form>
+                  </td>
+                {else}
+                  <td colspan="5">&nbsp;</td>
+                {/if}
+              </tr>
+            {/if}
+
+          {if isset($available_permission_levels) and $display_info.privacy_level}
+            <tr>
+              <td class="label">{'Privacy level'|@translate}:</td>
+              <td colspan="4" class="value">
+                <script type="text/javascript">
+                {literal}function setPrivacyLevel(selectElement, rootUrl, id, level)
+                {
+                selectElement.disabled = true;
+                var y = new PwgWS(rootUrl);
+                y.callService(
+                  "pwg.images.setPrivacyLevel", {image_id: id, level:level} ,
+                  {
+                    method: "POST",
+                    onFailure: function(num, text) { selectElement.disabled = false; alert(num + " " + text); },
+                    onSuccess: function(result) { selectElement.disabled = false; }
+                  }
+                  );
+                }{/literal}
+                </script>
+                <select onchange="setPrivacyLevel(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}, this.options[selectedIndex].value)">
+                  {foreach from=$available_permission_levels item=label key=level}
+                  <option label="{$label}" value="{$level}"{if $level == $current.level} selected="selected"{/if}>{$label}</option>
+                  {/foreach}
+                </select>
+              </td>
+            </tr>
+          {/if}
+
+          </table>
+
+        </div>
+      </div> <!-- imageInfos -->
+    {/if}
+
+    {if isset($metadata)}
+    {foreach from=$metadata item=meta key=id}
+    <div id="imageMeta{$id}" class="imageMeta tabPanel">
+      <div id="imageMetaContainer{$id}">
+        <div class="imageMetaBg">&nbsp;</div>
+
+        {if count($meta.lines)>0 and !array_key_exists('<!--rawContent-->', $meta.lines)}
+          <table id="displaymeta{$id}" class="displaymeta infoTable">
+            {foreach from=$meta.lines item=value key=label name=metaloop}
+              {if ($smarty.foreach.metaloop.iteration-1) % #metaNumCols# == 0}
+                {if !$smarty.foreach.metaloop.first}</tr>{/if}
+                {if !$smarty.foreach.metaloop.last}<tr>{/if}
+              {/if}
+              <td class="label">{$label|@translate}</td>
+              <td class="value">{$value}</td>
+            {/foreach}
+          </table>
+        {else}
+          {assign var='empty' value='<!--rawContent-->'}
+          {$meta.lines.$empty}
+        {/if}
+      </div>
+    </div> <!-- imageMeta -->
+    {/foreach}
+    {/if}
+
+
+    {if (isset($COMMENT_COUNT) and ($COMMENT_COUNT>0)) or isset($comment_add) }
+    <div id="theComments" class="tabPanel">
+      <div id='theCommentBG'>&nbsp;</div>
+
+      {if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+      {if isset($comment_add) or isset($comments)}
+      <table id="theCommentContainer">
+        <tr style="vertical-align:top;">
+          {if isset($comment_add)}
+          {if isset($comments)}
+          <td width="50%">
+          {else}
+          <td>
+          {/if}
+            <h4>{'Add a comment'|@translate}</h4>
+            <form  method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
+              <table>
+                {if $comment_add.SHOW_AUTHOR}
+                <tr>
+                  <td>{'Author'|@translate}</td>
+                  <td><input type="text" name="author"></td>
+                </tr>
+                {/if}
+                <tr>
+                  <td {if $comment_add.SHOW_AUTHOR}colspan="2"{/if}><textarea name="content" id="contentid" rows="7" cols="80">{$comment_add.CONTENT}</textarea></td>
+                </tr>
+                <tr>
+                  <td {if $comment_add.SHOW_AUTHOR}colspan="2"{/if}>
+                    <input type="hidden" name="key" value="{$comment_add.KEY}" />
+                    <input class="submit" type="submit" value="{'Submit'|@translate}"/>
+                  </td>
+                </tr>
+              </table>
+            </form>
+          </td>
+          {/if}
+
+          {if isset($comments)}
+          {if isset($comment_add)}
+          <td width="50%">
+          {else}
+          <td>
+          {/if}
+            <div id="theCommentList">
+              {include file='comment_list.tpl' comment_separator=true}
+            </div>
+          </td>
+          {/if}
+
+        </tr>
+      </table>
+      {/if}
+    </div>
+    {/if} {*comments*}
+
+  </div><!-- theTabs -->
+  </div>
+
+  {if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if}
+
+</div>
+
+<!-- **GBL** <PICTURE< -->
+
Index: extensions/gally/gally-black-graphite/template/picture_content.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/picture_content.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/picture_content.tpl	(revision 8534)
@@ -0,0 +1,7 @@
+<!-- **GBL** >PICTURE_CONTENT> -->
+
+  <div id="theImgContainer" {if isset($high) }onclick="openDisplayHigh('{$high.U_HIGH}');" class="pointer"{/if}>
+    <img id="theImg" src="{$SRC_IMG}" style="width:{$WIDTH_IMG}px;height:{$HEIGHT_IMG}px;" alt="{$ALT_IMG}">
+  </div>
+
+<!-- **GBL** <PICTURE_CONTENT< -->
Index: extensions/gally/gally-black-graphite/template/picture_nav_buttons.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/picture_nav_buttons.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/picture_nav_buttons.tpl	(revision 8534)
@@ -0,0 +1,111 @@
+<div class="navButtons">
+{if $DISPLAY_NAV_BUTTONS or isset($slideshow)}
+
+  {if isset($last)}
+    <a id="icon_last" class="navButton" href="{$last.U_IMG}"
+       title="<span class='navDesc'><span class='navAction'>{'Last'|@translate}</span>{if $DISPLAY_NAV_THUMB}<br><img src='{$last.THUMB_SRC}' class='thumbLink thumbNav' id='linkPrev' alt=''>{/if}<br><span class='navTitle'>{$last.TITLE}</span></span>"
+       rel="last"></a>
+  {else}
+    <a id="icon_last_unactive" class="navButton"></a>
+  {/if}
+
+  {if isset($next)}
+    <a id="icon_right" class="navButton" href="{$next.U_IMG}"
+       title="<span class='navDesc'><span class='navAction'>{'Next'|@translate}</span>{if $DISPLAY_NAV_THUMB}<br><img src='{$next.THUMB_SRC}' class='thumbLink thumbNav' id='linkPrev' alt=''>{/if}<br><span class='navTitle'>{$next.TITLE}</span></span>"
+       rel="next"></a>
+  {else}
+    <a id="icon_right_unactive" class="navButton"></a>
+  {/if}
+
+  {if isset($slideshow.U_START_PLAY)}
+    <a id="icon_play" class="navButton" href="{$slideshow.U_START_PLAY}" title="{'Play of slideshow'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/play.png" class="button" alt="{'Play of slideshow'|@translate}"> --></a>
+  {/if}
+
+  {if isset($slideshow.U_STOP_PLAY)}
+    <a id="icon_pause" class="navButton" href="{$slideshow.U_STOP_PLAY}" title="{'Pause of slideshow'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/pause.png" class="button" alt="{'Pause of slideshow'|@translate}"> --></a>
+  {/if}
+
+  {if isset($U_UP) and !isset($slideshow)}
+    <a id="icon_up" class="navButton" href="{$U_UP}" title="{'Thumbnails'|@translate}" rel="up"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/up.png" class="button" alt="{'Thumbnails'|@translate}"> --></a>
+  {/if}
+
+  {if isset($previous)}
+    <a id="icon_left" class="navButton" href="{$previous.U_IMG}"
+       title="<span class='navDesc'><span class='navAction'>{'Previous'|@translate}</span>{if $DISPLAY_NAV_THUMB}<br><img src='{$previous.THUMB_SRC}' class='thumbLink' id='linkPrev' alt=''>{/if}<br><span class='navTitle'>{$previous.TITLE}</span></span>"
+       rel="prev"></a>
+  {else}
+    <a id="icon_left_unactive" class="navButton"></a>
+  {/if}
+
+  {if isset($first)}
+    <a id="icon_first" class="navButton" href="{$first.U_IMG}"
+       title="<span class='navDesc'><span class='navAction'>{'First'|@translate}</span>{if $DISPLAY_NAV_THUMB}<br><img src='{$first.THUMB_SRC}' class='thumbLink thumbNav' id='linkPrev' alt=''>{/if}<br><span class='navTitle'>{$first.TITLE}</span></span>"
+       rel="first"></a>
+  {else}
+    <a id="icon_first_unactive" class="navButton"></a>
+  {/if}
+
+
+  {if isset($slideshow.U_START_REPEAT)}
+    <a id="icon_start_repeat" class="navButton" href="{$slideshow.U_START_REPEAT}" title="{'Repeat the slideshow'|@translate}"></a>
+  {/if}
+
+  {if isset($slideshow.U_STOP_REPEAT)}
+    <a id="icon_stop_repeat" class="navButton" href="{$slideshow.U_STOP_REPEAT}" title="{'Not repeat the slideshow'|@translate}"></a>
+  {/if}
+
+  {if isset($slideshow)}
+    {if isset($slideshow.U_DEC_PERIOD)}
+      <a id="icon_dec_period" class="navButton" href="{$slideshow.U_DEC_PERIOD}" title="{'Accelerate diaporama speed'|@translate}"></a>
+    {else}
+      <a id="icon_dec_period_unactive" class="navButton" ></a>
+    {/if}
+
+    {if isset($slideshow.U_INC_PERIOD)}
+      <a id="icon_inc_period" class="navButton" href="{$slideshow.U_INC_PERIOD}" title="{'Reduce diaporama speed'|@translate}"></a>
+    {else}
+      <a id="icon_inc_period_unactive" class="navButton"></a>
+    {/if}
+  {/if}
+{/if}
+</div>
+
+<script type="text/javascript">// <![CDATA[
+{literal}
+function keyboardNavigation(e)
+{
+  if(!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;
+  var docElem = document.documentElement;
+  switch(keyCode) {
+{/literal}
+{if isset($next)}
+  case 63235: case 39: if (e.ctrlKey || docElem.scrollLeft==docElem.scrollWidth-docElem.clientWidth ){ldelim}window.location="{$next.U_IMG}".replace( "&amp;", "&" ); return false; } break;
+{/if}
+{if isset($previous)}
+  case 63234: case 37: if (e.ctrlKey || docElem.scrollLeft==0){ldelim}window.location="{$previous.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($first)}
+  /*Home*/case 36: if (e.ctrlKey){ldelim}window.location="{$first.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($last)}
+  /*End*/case 35: if (e.ctrlKey){ldelim}window.location="{$last.U_IMG|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($U_UP) and !isset($slideshow)}
+  /*Up*/case 38: if (e.ctrlKey){ldelim}window.location="{$U_UP|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+
+{if isset($slideshow.U_START_PLAY)}
+  /*Pause*/case 32: {ldelim}window.location="{$slideshow.U_START_PLAY|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+{if isset($slideshow.U_STOP_PLAY)}
+  /*Play*/case 32: {ldelim}window.location="{$slideshow.U_STOP_PLAY|@escape:jasvascript}".replace("&amp;","&"); return false; } break;
+{/if}
+  }
+  return true;
+}
+document.onkeydown=keyboardNavigation;
+// ]]></script>
Index: extensions/gally/gally-black-graphite/template/slideshow.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/slideshow.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/slideshow.tpl	(revision 8534)
@@ -0,0 +1,30 @@
+<!-- **GBL** >SLIDESHOW> -->
+<div id="content">
+  <div id="imageHeaderBar" class="slideShow">
+    <div class="imageNumber">{$PHOTO}</div>
+      <div class="browsePath slideShow">
+      {if isset($U_SLIDESHOW_STOP) }
+      <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a>
+      {/if}
+      {if $SHOW_PICTURE_NAME_ON_TITLE }
+        &#124; <span class="showtitle">{$current.TITLE}</span>
+      {/if}
+    </div>
+
+  </div>
+
+  <div id="imageToolBar">
+    <div id="imageToolBarContainer" class="uiImg">
+        <div class="imageToolBarBg">&nbsp;</div>
+        {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+    </div>
+  </div>
+
+  <div id="theImage">
+    {$ELEMENT_CONTENT}
+    {if isset($COMMENT_IMG)}
+    <p class="showlegend">{$COMMENT_IMG}</p>
+    {/if}
+  </div>
+</div>
+<!-- **GBL** <SLIDESHOW< -->
Index: extensions/gally/gally-black-graphite/template/thumbnails.tpl
===================================================================
--- extensions/gally/gally-black-graphite/template/thumbnails.tpl	(revision 8534)
+++ extensions/gally/gally-black-graphite/template/thumbnails.tpl	(revision 8534)
@@ -0,0 +1,43 @@
+<!-- **GBL** >THUMBNAILS> -->
+{if !empty($thumbnails)}
+<ul class="thumbnails">
+{foreach from=$thumbnails item=thumbnail}
+  <li>
+    <table class="wrap1">
+      <tr>
+        <td>
+          <span class="wrap2">
+          <a href="{$thumbnail.URL}">
+            <img {if isset($thumbnail.LONGDESC) and $thumbnail.LONGDESC!=""}longdesc="{$thumbnail.LONGDESC}"{/if}
+                  class="thumbnail {if isset($thumbnail.EXTRA_CLASS)}{$thumbnail.EXTRA_CLASS}{/if}"
+                  src="{$thumbnail.TN_SRC}"
+                  alt="{$thumbnail.TN_ALT}"
+                  {if isset($thumbnail.NB_COMMENTS) or isset($thumbnail.NB_HITS) }
+                  title="{if isset($thumbnail.NB_COMMENTS)}<span class='{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments'>{$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'>{$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}</span>{/if}"
+                  />
+                  {/if}
+          </a>
+          </span>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <span class="thumbLegend">
+
+          {if !empty($thumbnail.icon_ts)}
+            <span class="newImage button id_recent"></span>
+          {/if}
+          {if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if}
+
+          </span>
+        </td>
+      </tr>
+    </table>
+  </li>
+{/foreach}
+</ul>
+{/if}
+
+
+<!-- **GBL** <THUMBNAILS< -->
Index: extensions/gally/gally-black-graphite/themeconf.inc.php
===================================================================
--- extensions/gally/gally-black-graphite/themeconf.inc.php	(revision 8534)
+++ extensions/gally/gally-black-graphite/themeconf.inc.php	(revision 8534)
@@ -0,0 +1,23 @@
+<?php
+/*
+Theme Name: Gally/Black-graphite
+Version: 1.0.0
+Description: simple dark-grey theme (inspired from Zaphod's theme <STRIPPED>)
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=
+Author: Grum
+Author URI: http://www.grum.fr
+*/
+
+include_once(PHPWG_THEMES_PATH.'gally-default/admin/GallyFunctions.class.inc.php');
+
+$themeconf = array(
+  'name' => 'gally-black-graphite',
+  'theme' => 'gally-black-graphite',
+  'parent' => 'gally-default',
+  'icon_dir' => 'themes/gally-black-graphite/icon',
+  'mime_icon_dir' => 'themes/gally-black-graphite/icon/mimetypes/',
+);
+
+GallyFunctions::expandMenu($themeconf['theme']);
+
+?>
