Index: /extensions/gally/piwigo-2.0/about.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/about.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/about.tpl	(revision 6105)
@@ -0,0 +1,22 @@
+<!-- **GBL** >ABOUT> -->
+<div id="content" class="content">
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li>
+        <a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}">
+          <!-- <img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>-->
+        </a>
+      </li>
+    </ul>
+    <h2>{'About'|@translate}</h2>
+  </div>
+  <div id="content2">
+    <ul>
+      {$ABOUT_MESSAGE}
+      {if isset($THEME_ABOUT) }
+      <li>{$THEME_ABOUT}</li>
+      {/if}
+    </ul>
+  </div>
+</div>
+<!-- **GBL** <ABOUT< -->
Index: /extensions/gally/piwigo-2.0/calendar_navbar.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/calendar_navbar.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/calendar_navbar.tpl	(revision 6105)
@@ -0,0 +1,13 @@
+
+{foreach from=$datas item=data}
+  <span class="{$data.classname}">
+  {if isset($data.url) and $data.url!=""}
+  <a href="{$data.url}">{$data.label}</a>
+  {else}
+  {$data.label}
+  {/if}
+  {if isset($data.nb_images) and $data.nb_images!=""}
+  <span class="calCalNbImg">[{$data.nb_images}]</span>
+  {/if}
+  </span>
+{/foreach}
Index: /extensions/gally/piwigo-2.0/comment_list.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/comment_list.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/comment_list.tpl	(revision 6105)
@@ -0,0 +1,41 @@
+{*
+ 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';"
+*}
+
+<ul class="commentList">
+{foreach from=$comments item=comment}
+<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) }
+      <ul class="actions" style="float:right">
+        {if isset($comment.U_DELETE)}
+        <li>
+          <img style="cursor:pointer;" src="{$ROOT_URL}{$themeconf.icon_dir}/delete.png" class="button" alt="[delete]" onclick="document.location='{$comment.U_DELETE}';" title="{'delete this comment'|@translate}"/>
+        </li>
+        {/if}
+        {if isset($comment.U_VALIDATE)}
+        <li>
+          <img style="cursor:pointer;" src="{$ROOT_URL}{$themeconf.icon_dir}/validate_s.png" class="button" alt="[validate]" onclick="document.location='{$comment.U_VALIDATE}';" title="{'validate this comment'|@translate}"/>
+        </li>
+        {/if}
+      </ul>
+      {/if}
+      <span class="author">{$comment.AUTHOR}</span> - <span class="date">{$comment.DATE}</span>
+      <blockquote>{$comment.CONTENT}</blockquote>
+    </div>
+  </div>
+</li>
+
+{/foreach}
+</ul>
Index: /extensions/gally/piwigo-2.0/comments.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/comments.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/comments.tpl	(revision 6105)
@@ -0,0 +1,72 @@
+
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!-- <img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--> </a></li>
+    </ul>
+    <h2>{'User comments'|@translate}</h2>
+  </div>
+
+<form class="filter" action="{$F_ACTION}" method="get">
+
+  <fieldset>
+    <legend>{'Filter'|@translate}</legend>
+    <ul>
+      <li><div class="property">{'Keyword'|@translate}</div><input type="text" name="keyword" value="{$F_KEYWORD}" /></li>
+
+      <li><div class="property">{'Author'|@translate}</div><input type="text" name="author" value="{$F_AUTHOR}" /></li>
+
+      <li><div class="property">{'Category'|@translate}</div>
+        <select name="cat">
+          <option value="0">------------</option>
+          {html_options options=$categories selected=$categories_selected}
+        </select>
+      </li>
+
+      <li><div class="property">{'Since'|@translate}</div>
+        <select name="since">
+          {html_options options=$since_options selected=$since_options_selected}
+        </select>
+      </li>
+    </ul>
+  </fieldset>
+
+  <fieldset>
+
+    <legend>{'Display'|@translate}</legend>
+    <ul>
+        <li><div class="property">{'Sort by'|@translate}</div>
+          <select name="sort_by">
+            {html_options options=$sort_by_options selected=$sort_by_options_selected}
+          </select>
+        </li>
+
+        <li><div class="property">{'Sort order'|@translate}</div>
+          <select name="sort_order">
+            {html_options options=$sort_order_options selected=$sort_order_options_selected}
+          </select>
+        </li>
+
+        <li><div class="property">{'Number of items'|@translate}</div>
+          <select name="items_number">
+            {html_options options=$item_number_options selected=$item_number_options_selected}
+          </select>
+        </li>
+    </ul>
+  </fieldset>
+
+  <p><input class="submit" type="submit" value="{'Filter and display'|@translate}"></p>
+
+</form>
+
+<div class="navigationBar">{$NAVBAR}</div>
+
+{if isset($comments)}
+<div id="comments">
+	{include file='comment_list.tpl'}
+</div>
+{/if}
+
+</div> <!-- content -->
+
Index: /extensions/gally/piwigo-2.0/config.js.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/config.js.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/config.js.tpl	(revision 6105)
@@ -0,0 +1,33 @@
+{* template for the js config *}
+{literal}
+<script type="text/javascript">
+// configuration options for interfaces
+options = { {/literal}
+{if $BODY_ID=='thePicturePage'}
+  imageAutoScroll:{if #imageAutoScroll#=='yes'}true{else}false{/if},
+  imageCenterMode:"{#imageCenterMode#}",
+  imageCenterOffset:{#imageCenterOffset#},
+  imageCenterTopMin:{#imageCenterTopMin#},
+  imageCenterTopBorder:"{#imageCenterTopBorder#}",
+  interfaceAnimated:"{#interfaceAnimated#}",
+  interfaceHidden:{if #interfaceHidden#=='yes'}true{else}false{/if},
+  interfaceOnImage:"{#interfaceOnImage#}",
+  margin_container:{#margin_container#},
+  tabsAnimated:{if #tabsAnimated#=='yes'}true{else}false{/if},
+  tabsHidden:{#tabsHidden#},
+  tabsVisible:{#tabsVisible#},
+  tabsPosition:"{#tabsPosition#}",
+  metaNumCols:{#metaNumCols#},
+  commentRows:{#commentRows#},
+  interfaceTimerDelay:{#interfaceTimerDelay#},
+{/if} {if $BODY_ID=='theCategoryPage'}
+  menuAnimated:"{#menuAnimated#}",
+  menuWidth:"{#menuWidth#}",
+  menuMaxWidth:"{#menuMaxWidth#}",
+  menuMSIEMaxWidth:"{#menuMSIEMaxWidth#}",
+{/if}
+  animateDelay:{#animateDelay#}
+{literal}
+}
+</script>
+{/literal}
Index: /extensions/gally/piwigo-2.0/content.css
===================================================================
--- /extensions/gally/piwigo-2.0/content.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/content.css	(revision 6105)
@@ -0,0 +1,125 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/content.css
+  file version: 1.2.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  CSS file for all pages
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+body {
+  font-family:sans-serif;
+  font-size:12px;
+  margin:0px;
+  overflow-x:hidden;
+}
+
+img {
+  border:none;
+}
+
+a {
+  text-decoration:none;
+}
+
+hr {
+  border:none;
+  border-top:1px #999999 solid;
+}
+
+#the_page {
+  margin:0px;
+  padding:0px;
+}
+
+#theHeader {
+  text-align:center;
+  margin:0px;
+  padding:0px;
+}
+
+.ui-dialog-titlebar {
+  display:none;
+}
+
+
+/*
+  tags
+*/
+.tagLevel5 { font-size:150%; }
+.tagLevel4 { font-size:130%; }
+.tagLevel3 { font-size:115%; }
+.tagLevel2 { font-size:100%; }
+.tagLevel1 { font-size:90%; }
+
+#fullTagCloud {
+  font-size: 120%;
+  text-align: justify;
+  padding: 0;
+  margin: 1em 2em 1em 2em;
+}
+
+#fullTagCloud SPAN {
+  white-space: nowrap;
+  margin: 0 2px;
+}
+
+#fullTagCloud SPAN a {
+  padding:2px;
+  margin:0px;
+}
+
+.tagLetterContent {
+  width:100%;
+}
+
+ul.tagSelection li {
+  display: inline;
+}
+
+
+/*
+  actions
+*/
+ul.categoryActions {
+  list-style:none;
+  float:right;
+  margin:0;
+  padding:0;
+}
+
+ul.categoryActions li {
+  display:inline;
+}
+
+ul.categoryActions li.selector {
+  position:relative;
+  top:-10px;
+}
+
+
+
+/*
+  page copyright
+*/
+#copyright {
+  padding:3px;
+  clear:both;
+  bottom:0;
+  position:fixed;
+  width:100%;
+  z-index:8500;
+}
+
+/*
+ vd language switch plugin
+*/
+li.menuf div ul li {
+  z-index:500;
+}
Index: /extensions/gally/piwigo-2.0/dialogs.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/dialogs.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/dialogs.tpl	(revision 6105)
@@ -0,0 +1,38 @@
+{* common file for errors/infos dialog box *}
+
+{if isset($errors) and count($errors) or isset($infos) and count($infos)}
+
+{literal}
+<script type="text/javascript">
+  $(function() {
+    $("#divMsg").dialog({
+      bgiframe: true,
+      modal: true,
+      dialogClass: '{/literal}{if isset($errors) and count($errors)}errors{elseif isset($infos) and count($infos)}infos{/if}{literal}',
+      buttons: {
+        "{/literal}{'ok'|@translate}{literal}": function()
+        {
+          $(this).dialog("close");
+        }
+      }
+    });
+  });
+</script>
+{/literal}
+
+<div id="divMsg">
+  <ul>
+    {if isset($errors) and count($errors)}
+      {foreach from=$errors item=error}
+      <li>{$error}</li>
+      {/foreach}
+    {/if}
+    {if isset($infos) and count($infos)}
+      {foreach from=$infos item=info}
+      <li>{$info}</li>
+      {/foreach}
+    {/if}
+  </ul>
+</div>
+
+{/if}
Index: /extensions/gally/piwigo-2.0/fix-ie5-ie6.css
===================================================================
--- /extensions/gally/piwigo-2.0/fix-ie5-ie6.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/fix-ie5-ie6.css	(revision 6105)
@@ -0,0 +1,49 @@
+/* $Id: fix-ie5-ie6.css 2456 2008-07-24 01:30:12Z rvelices $ */
+/* Issues in IE from 5 to 6 only not to be used with IE7                      */
+
+/* fix IE with another layout for thumbnails */
+.content UL.thumbnails SPAN.wrap2 {
+  display: block;
+  position: relative;
+  text-align: left;
+}
+.content UL.thumbnails SPAN.wrap2 A,
+.content UL.thumbnails SPAN.wrap2 SPAN {
+  overflow: visible;
+  position: absolute;
+  top: 50%;
+  text-align: center;
+}
+
+.content UL.thumbnails IMG.thumbnail {
+  position: relative;
+  top: -50%;
+  /*\*//*/
+    margin-top: -40%;
+  /**/
+}
+.content UL.thumbnails INPUT {
+  position: absolute;
+  left: 2px;
+  top: 2px;  /* same as other browsers but not so pretty */
+}
+
+
+/* to avoid vanishing objects in IE6 */
+H1, #theHeader {
+  width: 100%;	/* <- useless but seems to make IE6 happy */
+}
+.content {
+  height: 1em;	/* for IE6 it's like min-height */
+}
+
+/* fix category thumbnails on main page */
+.content UL.thumbnailCategories {
+  width: 99%;	/* buggy IE box model */
+}
+
+
+/* fix quickconnect layout */
+FORM#quickconnect FIELDSET {
+  width: 99%;	/* correct an ugly 1 or 2 px misalignement with IE */
+}
Index: /extensions/gally/piwigo-2.0/footer.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/footer.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/footer.tpl	(revision 6105)
@@ -0,0 +1,33 @@
+<!-- **GBL** >FOOTER> -->
+<div id="copyright">
+ <a name="EoP"></a> <!-- End of Page -->
+ {if isset($debug.TIME) }
+ {'generation_time'|@translate} {$debug.TIME} ({$debug.NB_QUERIES} {'sql_queries_in'|@translate} {$debug.SQL_TIME}) -
+ {/if}
+
+ {* Please, do not remove this copyright. If you really want to,
+      contact us on http://piwigo.org to find a solution on how
+      to show the origin of the script...
+  *}
+
+  {'powered_by'|@translate}
+  <a href="{$PHPWG_URL}" class="Piwigo">
+  <span class="Piwigo">Piwigo</span></a>
+  {$VERSION}
+  {if isset($CONTACT_MAIL)}
+  - {'send_mail'|@translate}
+  <a href="mailto:{$CONTACT_MAIL}?subject={'title_send_mail'|@translate|@escape:url}">{'Webmaster'|@translate}</a>
+  {/if}
+
+{if isset($footer_elements)}
+{foreach from=$footer_elements item=v}
+{$v}
+{/foreach}
+{/if}
+</div> <!-- copyright -->
+</div> <!-- the_page -->
+
+{if isset($debug.QUERIES_LIST)}{$debug.QUERIES_LIST}{/if}
+</body>
+<!-- **GBL** <FOOTER< -->
+</html>
Index: /extensions/gally/piwigo-2.0/gallyjs-tcp.js
===================================================================
--- /extensions/gally/piwigo-2.0/gallyjs-tcp.js	(revision 6105)
+++ /extensions/gally/piwigo-2.0/gallyjs-tcp.js	(revision 6105)
@@ -0,0 +1,227 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/gallyjs-tcp.js
+  file release: 1.1.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  JS for the categories pages
+
+  need jQuery 1.2.6
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+var menuState;
+
+$("document").ready( function()
+  {
+    initMenu();
+    initContentDesc();
+  }
+);
+
+
+function initContentDesc()
+{
+  if(($("#additional_infoTOP").length + $("#additional_infoBOTTOM").length)<2)
+  {
+    // if div TOP & BOTTOM don't exists, it's not necessary to process this the
+    // initialisation
+    return(false);
+  }
+/*
+  this code permit to manage 3 informations panels with one text area (or 2 if
+  extended description plugin is used)
+
+  this function don't use a regExp object (due to some freeze with this method
+  during test)
+
+  known tags :
+    <!--up-down-->
+    <!--right-left-->
+
+  if the plugin "ExtendedDescription" is installed, the "<!--up-down-->" tag is
+  already managed by the plugin :
+    - top text is in a <div class="additional_info">
+        => text is moved to the to the '#additional_infoTOP' div  and
+            the '.additional_info' div added by the plugin is deleted
+    - bottom text is in <div id="additional_infoLEFT">
+        => if tag "<!--right-left-->" is present
+            text on right is moved to the to the '#additional_infoBOTTOM' div and
+            removed from the '#additional_infoLEFT' div
+
+  if the plugin "ExtendedDescription" is not installed, all the text is in
+  the <div id="additional_infoLEFT">
+    => if tag "<!--up-down-->" is present
+        text on right is moved to the to the '#additional_infoTOP' div and
+        removed from the '#additional_infoLEFT' div
+    => if tag "<!--right-left-->" is present on the '#additional_infoLEFT' div
+        text on right is moved to the to the '#additional_infoBOTTOM' div and
+        removed from the '#additional_infoLEFT' div
+*/
+
+  // <!--up-down--> tag
+  txt = $("#additional_infoLEFT").attr("innerHTML");
+  if(txt==null) { txt=""; }
+  tmp = txt.indexOf("<!--up-down-->");
+
+  if(tmp>-1)
+  { // tag is not managed by the ExtendedDescription plugin
+    $("#additional_infoTOP").attr("innerHTML", txt.slice(0,tmp));
+    txt=txt.substr(tmp+14); //remove the tag
+  }
+  else
+  { // perhaps tag is managed by the ExtendedDescription plugin
+    $(".additional_info").each( function (i)
+      {
+        if(this.id=="")
+        {
+          $("#additional_infoTOP").attr("innerHTML", $("#additional_infoTOP").attr("innerHTML")+this.innerHTML);
+          this.parentNode.removeChild(this);
+        }
+      }
+    );
+  }
+
+  // <!--right-left--> tag
+  tmp = txt.indexOf("<!--right-left-->");
+
+  if(tmp>-1)
+  { // tag is present, cut the right text to the
+    $("#additional_infoBOTTOM").attr("innerHTML", txt.slice(0,tmp));
+    txt=txt.substr(tmp+17);
+  }
+
+  $("#additional_infoLEFT").attr("innerHTML", txt);
+
+  if((txt.replace(/\s*/im, "")=="")&&($("#additional_infoID").length>0))
+  {
+    // remove the left area if empty
+    $("#additional_infoID").get(0).parentNode.removeChild($("#additional_infoID").get(0));
+  }
+  $(".additional_info").css("visibility", "visible");
+
+  if($("#additional_infoBOTTOM").attr("innerHTML").replace(/\s*/im, "")=="")
+  {
+    // remove the bottom area if empty
+    $("#additional_infoBOTTOM").get(0).parentNode.removeChild($("#additional_infoBOTTOM").get(0));
+  }
+  else
+  {
+    $("#additional_infoBOTTOM").css("visibility", "visible");
+  }
+
+  if($("#additional_infoTOP").attr("innerHTML").replace(/\s*/im, "")=="")
+  {
+    // remove the top area if empty
+    $("#additional_infoTOP").get(0).parentNode.removeChild($("#additional_infoTOP").get(0));
+  }
+  else
+  {
+    $("#additional_infoTOP").css("visibility", "visible");
+  }
+}
+
+
+function initMenu()
+{
+  if(options.menuAnimated != "noswitch")
+  {
+    $("#menubar").css(
+      {
+        visibility:"hidden",
+        top: $("#titrePageID").attr("offsetTop")+$("#titrePageID").attr("offsetHeight")-2+'px'
+      }
+    );
+    switchmenu('n');
+    switch(options.menuWidth)
+    {
+      case "auto":
+        $("#menubar").css("width", "auto");
+        maxwidth=options.menuMaxWidth;
+        if(jQuery.browser.msie)
+        {
+          maxwidth=options.menuMSIEMaxWidth;
+        }
+        if(maxwidth>0) { $("#menubar").css("max-width", maxwidth+"px"); }
+        break;
+      case "info":
+        $("#menubar").css("width", $(".additionnal_info").css("width"));
+        break;
+      default:
+        $("#menubar").css("width", options.menuWidth+"px");
+    }
+  }
+  else
+  {
+    $("#menubar dl dd").each(
+      function (index, elem)
+      {
+        //alert($(this.parentNode).attr('offsetWidth')+"---"+$(this.parentNode).attr('id'));
+        $(this).css("min-width", $(this.parentNode).attr('offsetWidth'));
+        if(jQuery.browser.msie)
+        {
+          $(this).css("max-width", options.menuMSIEMaxWidth+"px");
+        }
+      }
+    );
+  }
+}
+
+
+function switchmenu(force, iconpath)
+{
+  if(force=='')
+  {
+    (!menuState)?force='y':force='n';
+  }
+
+  if(options.menuAnimated == "fade")
+  {
+    switch(force)
+    {
+      case 'y':
+        $("#menubar").css({
+          visibility:"visible",
+          height:"auto"
+        }).fadeTo(options.animateDelay,1);
+        $("#icon_menu").attr("className", "button2");
+        menuState=true;
+        break;
+      default:
+        $("#menubar").fadeTo(options.animateDelay, 0, function () {
+          $("#menubar").css({
+            visibility:"hidden",
+            height:"0px"
+          });
+        });
+        $("#icon_menu").attr("className", "button");
+        menuState=false;
+    }
+  }
+  else
+  {
+    switch(force)
+    {
+      case 'y':
+        $("#menubar").css({
+          visibility:"visible",
+          height:"auto"
+        });
+        $("#icon_menu").attr("className", "button2");
+        menuState=true;
+        break;
+      default:
+        $("#menubar").css({
+          visibility:"hidden",
+          height:"0px"
+        });
+        $("#icon_menu").attr("className", "button");
+        menuState=false;
+    }
+  }
+}
Index: /extensions/gally/piwigo-2.0/gallyjs-tpp.js
===================================================================
--- /extensions/gally/piwigo-2.0/gallyjs-tpp.js	(revision 6105)
+++ /extensions/gally/piwigo-2.0/gallyjs-tpp.js	(revision 6105)
@@ -0,0 +1,353 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/gallyjs-tpp.js
+  file release: 1.2.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  JS for the pictures pages
+
+  need jQuery 1.2.6
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+
+var showtabs;
+var selectedTab;
+var interfaceTimerDelay;
+var isScrollable;
+
+$("document").ready(
+  function(){inittoolbar(); }
+);
+
+function inittoolbar()
+{
+  $(document).data("initialized", 0);
+  $(document).data("interface", false);
+
+  if(jQuery.browser.msie)
+  {
+    //this features don't work with the f*****g msie browser
+    options.interfaceAnimated="none";
+    options.imageAutoScroll=false;
+  }
+
+  if(options.imageAutoScroll)
+  {
+    $("html").css("overflow-x", "hidden");
+  }
+  else
+  {
+    $("html").css("overflow-x", "scroll");
+  }
+
+  if(options.imageCenterTopBorder == "imageHeaderBar")
+  {
+    options.imageCenterTopMin+=$("#imageHeaderBar").get(0).offsetTop+$("#imageHeaderBar").get(0).offsetHeight;
+  }
+
+  currentTab=-1;
+  selectedTab=-1;
+  interfaceTimerDelay = null;
+  switchInterface('0', true);
+  initializeImageMode("init");
+
+  if(options.interfaceOnImage=="always" || (options.interfaceOnImage=="noscroll" && !isScrollable))
+  {
+    $("#theImg").bind("mouseenter", function () { switchInterface('y', true); } )
+                .bind("mouseleave", function () { switchInterface('n', true); } )
+                .bind("mousemove", function () { switchInterface('y', true); } );
+  }
+
+  $("#imageHeaderBar").bind("mouseenter", function () { switchInterface('y', false); } )
+                      .bind("mousemove", function () { switchInterface('y', false); } );
+  $("#imageToolBar").bind("mouseenter", function () { switchInterface('y', true); } )
+                    .bind("mouseleave", function () { switchInterface('n', true); } )
+                    .bind("mousemove", function () { switchInterface('y', true); } );
+
+
+  $("#navThumbPrev").bind("mouseenter", function () { switchInterface('Y', true); } )
+                    .bind("mouseleave", function () { switchInterface('n', true); } )
+                    .bind("mousemove", function () { switchInterface('y', true); } )
+                    .css("top", $("#navThumbPrev").attr("offsetTop")+$("#theHeader").attr("offsetHeight")+"px");
+
+  $("#navThumbNext").bind("mouseenter", function () { switchInterface('Y', true); } )
+                    .bind("mouseleave", function () { switchInterface('n', true); } )
+                    .bind("mousemove", function () { switchInterface('y', true); } )
+                    .css("top", $("#navThumbNext").attr("offsetTop")+$("#theHeader").attr("offsetHeight")+"px");
+
+  $("#theImage").css("top", $("#theImage").attr("offsetTop")+$("#theHeader").attr("offsetHeight")+"px");
+
+  $("#contentid").attr("rows", options.commentRows);
+
+  /* fx duration option set to 0 doesn't work so... */
+  if(options.animateDelay>0)
+  {
+    $("#theTabs").tabs({ fx: { opacity: 'toggle', duration:options.animateDelay } } );
+  }
+  else
+  {
+    $("#theTabs").tabs();
+  }
+  switchTabs('n');
+
+  $('#theTabsContainer').bind("mouseenter", function () { switchInterface('Y', false); } )
+                        .bind("mouseleave", function () { switchInterface('n'); } )
+                        .bind("mousemove", function () { switchInterface('y', false); } );
+
+  $("#theTabs").bind('tabsselect', function(event, ui)
+    {
+      /* The "collapsible" option don't work with jQuery 1.2.6
+       * This function aims to reproduct this functionnality
+      */
+      selectedTab=ui.index;
+    }
+  );
+
+  $('.tab a').click(function()
+    {
+      /* The "collapsible" option don't work with jQuery 1.2.6
+       * This function aims to reproduct this functionnality
+      */
+      $(this).get(0).blur();
+      if(selectedTab == currentTab)
+      {
+        if (currentTab!=-1) switchTabs('n');
+        currentTab=-1;
+        selectedTab=-1;
+      }
+      else
+      {
+        if(currentTab==-1) switchTabs('y');
+        currentTab=selectedTab;
+      }
+    }
+  );
+
+  $(window).resize( function () { initializeImageMode("resize"); } );
+
+  $(document).data("initialized", 1);
+}
+
+function initializeImageMode(mode)
+{
+  if(mode=="init")
+  {
+    $("#imageToolBar").css("top", $("#imageToolBar").attr("offsetTop")+$("#theHeader").attr("offsetHeight")+$("#imageHeaderBar").attr("offsetHeight")+"px");
+
+    if(options.tabsPosition=="bottom")
+    {
+      copyrightArea = $("#copyright").attr("clientHeight")+1;
+      $("#theTabsContainer").css("bottom", copyrightArea+"px");
+    }
+    else if(options.tabsPosition=="top")
+    {
+      toolBarArea = $("#imageToolBar").attr("offsetTop")+$("#imageToolBar").attr("offsetHeight");
+      $("#theTabsContainer").css("top", toolBarArea+"px");
+    }
+
+    if($("#navThumbPrev").length>0)
+    {
+      $("#navThumbPrev").css("height", $("#copyright").attr("offsetTop")-$("#navThumbPrev").attr("offsetTop")-options.tabsHidden+"px");
+    }
+    if($("#navThumbNext").length>0)
+    {
+      $("#navThumbNext").css("height", $("#copyright").attr("offsetTop")-$("#navThumbNext").attr("offsetTop")-options.tabsHidden+"px");
+    }
+  }
+
+  cssValues = new Object;
+  cssValues.height = $("#theImg").attr("height")+"px";
+
+  // autoscroll
+  if(options.imageAutoScroll && ($("#theImg").attr("scrollWidth")>($("#theImage").attr("clientWidth")-2*options.margin_container)))
+  {
+    cssValues.width = ($("#theImage").attr("clientWidth")- 2*options.margin_container)+"px";
+
+    $("#theImage").bind("mousemove",
+      function(event){
+        deadArea = $("#navThumbPrev").attr("clientWidth")*1.2;
+        mouse=Math.max(Math.min(event.clientX-this.offsetLeft, this.clientWidth - deadArea), deadArea);
+        $("#theImg").css("left",Math.round(($("#theImg").attr("scrollWidth")-this.clientWidth) * -(mouse-deadArea)/(this.clientWidth-2*deadArea))+"px");
+      }
+    );
+    isScrollable=true;
+  }
+  else
+  {
+    $("#theImage").unbind("mousemove");
+    $("#theImg").css("left", "0px");
+    cssValues.width = $("#theImg").attr("scrollWidth")+"px";
+    isScrollable=false;
+  }
+  $("#theImgContainer").css(cssValues);
+
+  // imagecenter
+  if($("#copyright").css("position")=="fixed")
+  {
+    $("#theImage").css("padding-bottom", $("#copyright").attr("offsetHeight")+"px");
+  }
+  switch(options.imageCenterMode)
+  {
+    case "img":
+      imgTop = $("#theImgContainer").attr('offsetHeight');
+      break;
+    case "all":
+      imgTop = $("#theImage").attr('offsetHeight');
+      break;
+    default:
+      imgTop = -10000;
+      break;
+  }
+  imgTop = ($("#copyright").attr("offsetTop") - ($("#imageHeaderBar").attr("offsetTop") + $("#imageHeaderBar").attr("offsetHeight")) - imgTop)/2 + options.imageCenterOffset;
+
+  if(imgTop<options.imageCenterTopMin)
+  {
+    imgTop=options.imageCenterTopMin;
+  }
+  imgTop=imgTop+"px";
+
+  $("#theImage").css("top", imgTop);
+
+}
+
+function switchInterface(show, resetTimer)
+{
+  /*
+  uiImg class is affected on this elements :
+  $("#imageToolBarContainer").stop(true, false).fadeTo(animateDelay, 1);
+  $("#imageInfosContainer").stop(true, false).fadeTo(animateDelay, 1);
+  $("#navThumbPrevContainer").stop(true, false).fadeTo(animateDelay, 1);
+  $("#navThumbNextContainer").stop(true, false).fadeTo(animateDelay, 1);
+  */
+
+  if(($(document).data("initialized")==1)&&(options.interfaceHidden))
+  {
+    $(document).data("initialized", 2);
+    if(show=="Y") return('');
+  }
+
+  if(!options.interfaceHidden && show=="0")  { show="1"; }
+
+  // works with jQuery 1.2.6 (support function need jQuery 1.3)
+  if(options.interfaceAnimated=="fade")
+  {
+    switch(show)
+    {
+      case '0':
+        $(".uiImg").css({opacity: 0, visibility:"hidden"});
+        $(document).data("interface", false);
+        break;
+      case '1':
+        if(!$(document).data("interface")) $(".uiImg").css({opacity: 1, visibility:"visible"});
+        $(document).data("interface", true);
+        if(resetTimer) resetInterfaceTimer();
+        break;
+      case '2':
+        //if($(document).data("interface")) break;
+      case 'Y':
+      case 'y':
+        if(!$(document).data("interface")) $(".uiImg").css("visibility","visible").stop(true, false).fadeTo(options.animateDelay, 1);
+        $(document).data("interface", true);
+        if(resetTimer) resetInterfaceTimer();
+        break;
+      default:
+        $(".uiImg").stop(true, false).fadeTo(options.animateDelay, 0, function ()
+          {
+            this.style.visibility="hidden";
+            $(document).data("interface", false);
+          }
+        );
+        clearInterfaceTimer();
+        break;
+    }
+  }
+  else
+  {
+    //other value....
+    switch(show)
+    {
+      case 'y':
+      case 'Y':
+      case '1':
+      case '2':
+        if(!$(document).data("interface")) $(".uiImg").css("visibility", "visible");
+        $(document).data("interface", true);
+        if(resetTimer) resetInterfaceTimer();
+        break;
+      default:
+        $(".uiImg").css("visibility", "hidden");
+        $(document).data("interface", false);
+        clearInterfaceTimer();
+        break;
+    }
+  }
+}
+
+function switchTabs(show)
+{
+  if(show!='')
+  {
+    showtabs=show;
+  }
+  else
+  {
+    if(showtabs!='n')
+    {
+      showtabs='n';
+    }
+    else
+    {
+      showtabs='y';
+    }
+  }
+
+  if(options.tabsAnimated)
+  {
+    if(showtabs=='y')
+    {
+      $("#theTabsContainer").animate({height:options.tabsVisible+"px"}, options.animateDelay);
+    }
+    else
+    {
+      $('#theTabs div.tabPanel').addClass("ui-tabs-hide").css("display", "");
+      $('#theTabs li').removeClass("ui-tabs-selected");
+      $("#theTabsContainer").animate({height:options.tabsHidden+"px"}, options.animateDelay);
+    }
+  }
+  else
+  {
+    if(showtabs=='y')
+    {
+      $("#theTabsContainer").css({height:options.tabsVisible+"px"});
+    }
+    else
+    {
+      $('#theTabs div.tabPanel').addClass("ui-tabs-hide").css("display", "");
+      $('#theTabs li').removeClass("ui-tabs-selected");
+      $("#theTabsContainer").css({height:options.tabsHidden+"px"});
+    }
+  }
+}
+
+function clearInterfaceTimer()
+{
+  if(interfaceTimerDelay!=null)
+  {
+    window.clearInterval(interfaceTimerDelay);
+    interfaceTimerDelay=null;
+  }
+}
+
+function resetInterfaceTimer()
+{
+  clearInterfaceTimer();
+  if(options.interfaceTimerDelay>0) interfaceTimerDelay=window.setInterval(switchInterface, options.interfaceTimerDelay, "n", false);
+}
+
+
Index: /extensions/gally/piwigo-2.0/generic.css
===================================================================
--- /extensions/gally/piwigo-2.0/generic.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/generic.css	(revision 6105)
@@ -0,0 +1,78 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/generic.css
+  file version: 1.1.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  CSS file for all pages excepted categeroes&pictures pages
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+.titrePage h2 {
+  font-size:12px;
+  margin:0 8px 0 8px;
+  padding-bottom:6px;
+  padding-top:6px;
+}
+
+form {
+  margin:8px;
+}
+
+#content form li {
+  padding:0px;
+  margin:0px;
+  padding-bottom:1px;
+  list-style:none;
+}
+
+div.property {
+  display:block;
+  min-width:275px;
+  float:left;
+}
+
+/*
+  generic
+*/
+#content2 {
+  margin:8px;
+}
+
+/*
+  comment list
+*/
+.commentDetail {
+  clear:both;
+  display:block;
+  min-height:150px;
+}
+div.illustration {
+  float:left;
+  margin:4px;
+}
+
+.commentList {
+  list-style:none;
+  padding-left:8px;
+}
+
+/*
+  help
+*/
+.pageBottomActions {
+  text-align:center;
+}
+
+#thePopuphelpPage h1 {
+  font-size:24px;
+  margin:0px;
+  padding-bottom:6px;
+  padding-top:6px;
+  text-align:center;
+}
Index: /extensions/gally/piwigo-2.0/header.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/header.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/header.tpl	(revision 6105)
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!-- **GBL** >HEADER> -->
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+  <meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
+
+  {if isset($meta_ref) }
+    {if isset($INFO_AUTHOR)}
+      <meta name="author" content="{$INFO_AUTHOR|@replace:'"':' '}">
+    {/if}
+    {if isset($related_tags)}
+      <meta name="keywords" content="{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}{$tag.name}{/foreach}">
+    {/if}
+    {if isset($COMMENT_IMG)}
+      <meta name="description" content="{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+    {else}
+      <meta name="description" content="{$PAGE_TITLE}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+    {/if}
+  {/if}
+
+  {if (isset($REVERSE) and $REVERSE and $PAGE_TITLE == l10n('home'))}
+    <title>{$GALLERY_TITLE} | {$PAGE_TITLE}</title>
+  {else}
+    <title>{$PAGE_TITLE} | {$GALLERY_TITLE}</title>
+  {/if}
+  <link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}template-common/favicon.ico">
+
+  <link rel="start" title="{'home'|@translate}" href="{$U_HOME}" >
+  <link rel="search" title="{'Search'|@translate}" href="{$ROOT_URL}search.php" >
+
+  {if isset($first.U_IMG)   }<link rel="first" title="{'first_page'|@translate}" href="{$first.U_IMG}" >{/if}
+  {if isset($previous.U_IMG)}<link rel="prev" title="{'previous_page'|@translate}" href="{$previous.U_IMG}" >{/if}
+  {if isset($next.U_IMG)    }<link rel="next" title="{'next_page'|@translate}" href="{$next.U_IMG}" >{/if}
+  {if isset($last.U_IMG)    }<link rel="last" title="{'last_page'|@translate}" href="{$last.U_IMG}" >{/if}
+  {if isset($U_UP)          }<link rel="up" title="{'thumbnails'|@translate}" href="{$U_UP}" >{/if}
+
+  {$themeconf.local_head}
+  {if isset($U_PREFETCH)}<link rel="prefetch" href="{$U_PREFETCH}">{/if}
+
+  {if not empty($page_refresh)}<meta http-equiv="refresh" content="{$page_refresh.TIME};url={$page_refresh.U_REFRESH}">{/if}
+
+  <script type="text/javascript" src="{$ROOT_URL}template-common/lib/jquery.packed.js"></script>
+  <script type="text/javascript" src="{$ROOT_URL}template-common/scripts.js"></script>
+
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/content.css">
+
+  {known_script id="jquery" src=$ROOT_URL|cat:"template-common/lib/jquery.packed.js"}
+  {known_script id="jquery.ui" src=$ROOT_URL|@cat:"template-common/lib/ui/ui.core.packed.js"}
+  {known_script id="jquery.ui.tabs" src=$ROOT_URL|@cat:"template-common/lib/ui/ui.tabs.packed.js"}
+  {known_script id="jquery.ui.dialog" src=$ROOT_URL|@cat:"template-common/lib/ui/ui.dialog.packed.js"}
+
+  {if $BODY_ID=='theCategoryPage' || $BODY_ID=='thePicturePage'}
+
+    {php}
+      $themeconf=$this->get_template_vars('themeconf');
+      $dir=dirname($_SERVER['SCRIPT_FILENAME'])."/".$themeconf['template_dir']."/theme/".$themeconf['theme']."/";
+      $this->assign("default_conf", $dir."default.conf");
+      if(file_exists($dir."local.conf"))
+      {
+        $this->assign("local_conf", $dir."local.conf");
+      }
+      else
+      {
+        $this->assign("local_conf", "");
+      }
+    {/php}
+
+    {config_load file=$default_conf}
+    {if $local_conf!=""}
+      {config_load file=$local_conf}
+    {/if}
+
+    {include file='config.js.tpl'}
+  {/if}
+
+
+
+  {if $BODY_ID=='theCategoryPage'}
+  {known_script id="gallyjs-tcp" src=$ROOT_URL|cat:$themeconf.template_dir|cat:"/gallyjs-tcp.js"}
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/thumbnails.css">
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/menubar.css">
+  {/if}
+
+  {if $BODY_ID=='thePicturePage'}
+  {known_script id="gallyjs-tpp" src=$ROOT_URL|cat:$themeconf.template_dir|cat:"/gallyjs-tpp.js"}
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/picture.css">
+  {/if}
+
+  {if $BODY_ID=='theProfilePage' or $BODY_ID=='theRegisterPage' or $BODY_ID=='theIdentificationPage'
+    or $BODY_ID=='thePasswordPage' or $BODY_ID=='theTagsPage' or $BODY_ID=='theSearchPage'
+    or $BODY_ID=='theCommentsPage' or $BODY_ID=='theAboutPage' or $BODY_ID=='theNotificationPage'
+    or $BODY_ID=='thePopuphelpPage' or $BODY_ID=='theUploadPage'}
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/generic.css">
+  {/if}
+
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/theme.css">
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template/{$themeconf.template}/local-layout.css">
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}template-common/local-layout.css">
+
+{if not empty($head_elements)}
+  {foreach from=$head_elements item=elt}{$elt}
+  {/foreach}
+{/if}
+
+</head>
+
+<body id="{$BODY_ID}">
+<div id="the_page">
+
+{if not empty($header_msgs)}
+<div class="header_msgs">
+  {foreach from=$header_msgs item=elt}
+  <p>{$elt}</p>
+  {/foreach}
+</div>
+{/if}
+
+
+{if ($BODY_ID=='thePicturePage' and #displayBanner# == "yes") or $BODY_ID!='thePicturePage'}
+<div id="theHeader">
+  {$PAGE_BANNER}
+</div>
+{else}
+<div id="theHeader" style="display:none;"></div>
+{/if}
+
+
+{if isset($theSwiftHeader)}{$theSwiftHeader}{/if}
+{if not empty($header_notes)}
+<div class="header_notes">
+  {foreach from=$header_notes item=elt}
+  <p>{$elt}</p>
+    {/foreach}
+</div>
+{/if}
+
+<!-- **GBL** <HEADER< -->
Index: /extensions/gally/piwigo-2.0/icon/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/icon/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/icon/index.php	(revision 6105)
@@ -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/piwigo-2.0/icon/mimetypes/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/icon/mimetypes/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/icon/mimetypes/index.php	(revision 6105)
@@ -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/piwigo-2.0/identification.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/identification.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/identification.tpl	(revision 6105)
@@ -0,0 +1,71 @@
+<!-- **GBL** >IDENTIFICATION> -->
+
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_lost_password" class="button" href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}">--> </a></li>
+      {if isset($U_REGISTER) }
+      <li><a id="icon_register" class="button" href="{$U_REGISTER}" title="{'Create a new account'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/> --></a></li>
+      {/if}
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/> --></a></li>
+    </ul>
+    <h2>{'Identification'|@translate}</h2>
+  </div>
+
+{include file='dialogs.tpl'}
+
+
+<form action="{$F_LOGIN_ACTION}" method="post" name="login_form" class="properties" id="identification">
+  <fieldset>
+    <legend>{'Connection settings'|@translate}</legend>
+
+    <input type="hidden" name="redirect" value="{$U_REDIRECT}">
+
+    <ul>
+      <li>
+        <div class="property">
+          <label for="username">{'Username'|@translate}</label>
+        </div>
+        <input tabindex="1" class="login" type="text" name="username" id="username" size="25" maxlength="40" />
+      </li>
+
+      <li>
+        <div class="property">
+          <label for="password">{'Password'|@translate}</label>
+        </div>
+        <input tabindex="2" class="login" type="password" name="password" id="password" size="25" maxlength="25" />
+      </li>
+
+      {if $authorize_remembering }
+      <li>
+        <div class="property">
+          <label for="remember_me">{'remember_me'|@translate}</label>
+        </div>
+        <input tabindex="3" type="checkbox" name="remember_me" id="remember_me" value="1">
+      </li>
+      {/if}
+    </ul>
+  </fieldset>
+
+  <p><input class="submit" tabindex="4" type="submit" name="login" value="{'Submit'|@translate}"></p>
+
+  <p>
+    {if isset($U_REGISTER) }
+    <a id="icon_register2" class="button" href="{$U_REGISTER}" title="{'Create a new account'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"> {'Register'|@translate}--></a>
+    {/if}
+    <a id="icon_lost_password2" class="button" href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}"> {'Forgot your password?'|@translate} --></a>
+  </p>
+
+</form>
+
+
+
+
+
+<script type="text/javascript"><!--
+document.login_form.username.focus();
+//--></script>
+
+</div> <!-- content -->
+<!-- **GBL** <IDENTIFICATION< -->
Index: /extensions/gally/piwigo-2.0/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/index.php	(revision 6105)
@@ -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/piwigo-2.0/index.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/index.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/index.tpl	(revision 6105)
@@ -0,0 +1,179 @@
+<!-- **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="switchmenu('', '{$ROOT_URL}{$themeconf.icon_dir}/');">&nbsp;
+        <!-- <img  src="{$ROOT_URL}{$themeconf.icon_dir}/menu-show.png"  alt="{'mode_flat_hint'|@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="{'del_all_favorites_hint'|@translate}">
+          <!-- <img src="{$favorite.FAVORITE_IMG}" class="button" alt="favorite" title="{'del_all_favorites_hint'|@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="{'mode_flat_hint'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/flat.png" class="button" alt="{'mode_flat_hint'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_NORMAL) }
+        <li><a id="icon_normal_mode" class="button" href="{$U_MODE_NORMAL}" title="{'mode_normal_hint'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/normal_mode.png" class="button" alt="{'mode_normal_hint'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_POSTED) }
+        <li><a id="icon_calendar" class="button" href="{$U_MODE_POSTED}" title="{'mode_posted_hint'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar.png" class="button" alt="{'mode_posted_hint'|@translate}"> --></a></li>
+        {/if}
+
+        {if isset($U_MODE_CREATED) }
+        <li><a id="icon_calendar_created" class="button" href="{$U_MODE_CREATED}" title="{'mode_created_hint'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/calendar_created.png" class="button" alt="{'mode_created_hint'|@translate}"> --></a></li>
+        {/if}
+
+        {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if}
+      </ul>
+
+
+  <h2>[&nbsp;{$TITLE}&nbsp;]</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">{'calendar_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($NAV_BAR) }
+  <div class="navigationBar">
+    {$NAV_BAR}
+  </div>
+  {/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/piwigo-2.0/local-layout.css
===================================================================
--- /extensions/gally/piwigo-2.0/local-layout.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/local-layout.css	(revision 6105)
@@ -0,0 +1,1 @@
+/* You can modify this file */
Index: /extensions/gally/piwigo-2.0/mail/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/mail/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/index.php	(revision 6105)
@@ -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/piwigo-2.0/mail/text/html/cat_group_info.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/cat_group_info.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/cat_group_info.tpl	(revision 6105)
@@ -0,0 +1,8 @@
+<div id="cat_group_info">
+<h2>{'Informations'|@translate}</h2>
+<p>{$IMG_URL}</p>
+<p>{'Hello,'|@translate}</p>
+<p>{'Come to discover the category:'|@translate} <a href="{$LINK}">{$CAT_NAME}</a></p>
+<p>{$CPL_CONTENT}</p>
+<p>{'See you soon.'|@translate}</p>
+</div>
Index: /extensions/gally/piwigo-2.0/mail/text/html/footer.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/footer.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/footer.tpl	(revision 6105)
@@ -0,0 +1,19 @@
+</div> <!-- content -->
+<div id="copyright">
+<hr/>
+ {* Please, do not remove this copyright. If you really want to,
+      contact us on http://piwigo.org to find a solution on how
+      to show the origin of the script...*}
+
+  {'powered_by'|@translate}
+  <a href="http://piwigo.org" class="PWG">
+  <span class="P">Pi</span><span class="W">wi</span><span class="G">go</span></a>
+  {$VERSION}
+  - {'send_mail'|@translate}
+  <a href="mailto:{$MAIL}?subject={$TITLE_MAIL}">{'Webmaster'|@translate}</a>
+
+</div> <!-- copyright -->
+</div> <!-- the_page -->
+
+</body>
+</html>
Index: /extensions/gally/piwigo-2.0/mail/text/html/global-mail-css.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/global-mail-css.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/global-mail-css.tpl	(revision 6105)
@@ -0,0 +1,11 @@
+/* Global mail css */
+
+body {ldelim} font-family: Univers, Helvetica, Optima; font-size:12px; margin:0px; padding:0px; }
+#the_page {ldelim} margin:0px; padding:0px; text-align:left;}
+#content {ldelim} margin:0px; padding:82px 0px 0px 62px; width:732px;}
+hr {ldelim} width:632px; margin-left:0;}
+#copyright {ldelim} font-size:10px; margin:0px; padding:48px 0px 32px 62px;}
+.PWG {ldelim} font-family:verdana, sans-serif !important; font-size:0.9em; font-weight:normal; letter-spacing:0px;}
+h2 {ldelim} padding:7px 15px; width:617px; font-weight:bold;}
+img {ldelim} margin:16px; border:16px solid #aaa; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} padding: 15px; border: 1px solid yellow; -moz-border-radius: 4px; border-radius: 4px 4px; }
Index: /extensions/gally/piwigo-2.0/mail/text/html/header.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/header.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/header.tpl	(revision 6105)
@@ -0,0 +1,19 @@
+-----={$BOUNDARY_KEY}
+Content-Type: {$CONTENT_TYPE}; charset="{$CONTENT_ENCODING}";
+Content-Transfer-Encoding: 8bit
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<title>Piwigo Mail</title>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<style><!-- /* Mini style for mails */
+{if isset($GLOBAL_MAIL_CSS)}{$GLOBAL_MAIL_CSS}{/if}
+{if isset($MAIL_CSS)}{$MAIL_CSS}{/if}
+{if isset($LOCAL_MAIL_CSS)}{$LOCAL_MAIL_CSS}{/if}
+--></style>
+</head>
+<body>
+<div id="the_page">
+<div id="header"></div>
+<div id="content" class="content">
Index: /extensions/gally/piwigo-2.0/mail/text/html/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/index.php	(revision 6105)
@@ -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/piwigo-2.0/mail/text/html/notification_by_mail.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/html/notification_by_mail.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/html/notification_by_mail.tpl	(revision 6105)
@@ -0,0 +1,56 @@
+<div id="nbm_message">
+<h2>{'Notification'|@translate}</h2>
+<p>{'nbm_content_hello_1'|@translate}{$USERNAME}{'nbm_content_hello_2'|@translate}</p>
+
+{if isset($subscribe_by_admin)}
+<p>{'nbm_content_subscribe_by_admin'|@translate}</p>
+{/if}
+{if isset($subscribe_by_himself)}
+<p>{'nbm_content_subscribe_by_himself'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_admin)}
+<p>{'nbm_content_unsubscribe_by_admin'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_himself)}
+<p>{'nbm_content_unsubscribe_by_himself'|@translate}</p>
+{/if}
+{if isset($content_new_elements_single)}
+<p>{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_single'|@translate}{$content_new_elements_single.DATE_SINGLE}.</p>
+{/if}
+{if isset($content_new_elements_between)}
+<p>{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_between_1'|@translate}{$content_new_elements_between.DATE_BETWEEN_1}{'nbm_content_new_elements_between_2'|@translate}{$content_new_elements_between.DATE_BETWEEN_2}.</p>
+{/if}
+
+{if not empty($global_new_lines)}
+<ul id="nbm_new_line">
+{foreach from=$global_new_lines item=line}
+  <li>{$line}</li>
+{/foreach}
+</ul>
+{/if}
+
+{if not empty($custom_mail_content)}
+<p>{$custom_mail_content}</p>
+{/if}
+
+{if not empty($GOTO_GALLERY_TITLE)}
+<p>{'nbm_content_goto_1'|@translate}<a href="{$GOTO_GALLERY_URL}">{$GOTO_GALLERY_TITLE}</a>{'nbm_content_goto_2'|@translate}</p>
+{/if}
+<p>{'nbm_content_byebye'|@translate}</p>
+<p style="text-align:center">{$SEND_AS_NAME}</p>
+<p>
+<br/><hr/>
+{'nbm_content_unsubscribe_link'|@translate}{'nbm_content_click_on'|@translate}<a href="{$UNSUBSCRIBE_LINK}">{$UNSUBSCRIBE_LINK}</a><br/>
+{'nbm_content_subscribe_link'|@translate}{'nbm_content_click_on'|@translate}<a href="{$SUBSCRIBE_LINK}">{$SUBSCRIBE_LINK}</a><br/>
+{'nbm_content_problem_contact'|@translate}<a href="mailto:{$CONTACT_EMAIL}?subject={'nbm_content_pb_contact_object'|@translate}">{$CONTACT_EMAIL}</a><br/>
+<hr/><br/>
+</p>
+{if not empty($recent_posts)}
+</div>
+<div id="nbm_recent_post">
+  {foreach from=$recent_posts item=recent_post }
+  <h2>{$recent_post.TITLE}</h2>
+  {$recent_post.HTML_DATA}
+  {/foreach}
+{/if}
+</div>
Index: /extensions/gally/piwigo-2.0/mail/text/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/index.php	(revision 6105)
@@ -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/piwigo-2.0/mail/text/plain/cat_group_info.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/plain/cat_group_info.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/plain/cat_group_info.tpl	(revision 6105)
@@ -0,0 +1,8 @@
+{'Hello,'|@translate}
+
+{'Come to discover the category:'|@translate} {$CAT_NAME}
+{$LINK}
+
+{$CPL_CONTENT}
+
+{'See you soon.'|@translate}
Index: /extensions/gally/piwigo-2.0/mail/text/plain/footer.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/plain/footer.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/plain/footer.tpl	(revision 6105)
@@ -0,0 +1,2 @@
+------------------------
+Piwigo {$VERSION}
Index: /extensions/gally/piwigo-2.0/mail/text/plain/header.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/plain/header.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/plain/header.tpl	(revision 6105)
@@ -0,0 +1,5 @@
+-----={$BOUNDARY_KEY}
+Content-Type: {$CONTENT_TYPE}; charset="{$CONTENT_ENCODING}";
+Content-Transfer-Encoding: 8bit{literal}
+
+{/literal}{*note that there must be an empty line to separate the mime headers*}
Index: /extensions/gally/piwigo-2.0/mail/text/plain/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/plain/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/plain/index.php	(revision 6105)
@@ -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/piwigo-2.0/mail/text/plain/notification_by_mail.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mail/text/plain/notification_by_mail.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mail/text/plain/notification_by_mail.tpl	(revision 6105)
@@ -0,0 +1,41 @@
+{'nbm_content_hello_1'|@translate}{$USERNAME}{'nbm_content_hello_2'|@translate}
+
+{if isset($subscribe_by_admin)}
+{'nbm_content_subscribe_by_admin'|@translate}
+{/if}
+{if isset($subscribe_by_himself)}
+{'nbm_content_subscribe_by_himself'|@translate}
+{/if}
+{if isset($unsubscribe_by_admin)}
+{'nbm_content_unsubscribe_by_admin'|@translate}
+{/if}
+{if isset($unsubscribe_by_himself)}
+{'nbm_content_unsubscribe_by_himself'|@translate}
+{/if}
+{if isset($content_new_elements_single)}
+{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_single'|@translate}{$content_new_elements_single.DATE_SINGLE}.
+{/if}
+{if isset($content_new_elements_between)}
+{'nbm_content_new_elements'|@translate}{'nbm_content_new_elements_between_1'|@translate}{$content_new_elements_between.DATE_BETWEEN_1}{'nbm_content_new_elements_between_2'|@translate}{$content_new_elements_between.DATE_BETWEEN_2}.
+{/if}
+{if not empty($global_new_lines)}
+{foreach from=$global_new_lines item=line}
+  o {$line}
+{/foreach}
+{/if}
+{if not empty($custom_mail_content)}
+{$custom_mail_content}
+{/if}
+{if not empty($GOTO_GALLERY_TITLE)}
+{'nbm_content_goto_1'|@translate}{$GOTO_GALLERY_TITLE} {$GOTO_GALLERY_URL} {'nbm_content_goto_2'|@translate}
+{/if}
+
+{'nbm_content_byebye'|@translate}
+  {$SEND_AS_NAME}
+
+______________________________________________________________________________
+
+{'nbm_content_unsubscribe_link'|@translate}{'nbm_content_click_on'|@translate}{$UNSUBSCRIBE_LINK}
+{'nbm_content_subscribe_link'|@translate}{'nbm_content_click_on'|@translate}{$SUBSCRIBE_LINK}
+{'nbm_content_problem_contact'|@translate}{$CONTACT_EMAIL}
+______________________________________________________________________________
Index: /extensions/gally/piwigo-2.0/mainpage_categories.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/mainpage_categories.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/mainpage_categories.tpl	(revision 6105)
@@ -0,0 +1,32 @@
+<!-- **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">
+      <div class="illustration">
+        <a href="{$cat.URL}">
+          <img src="{$cat.TN_SRC}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '} - {'hint_category'|@translate}">
+        </a>
+      </div>
+      <div class="description">
+        <h3>
+          <a href="{$cat.URL}">{$cat.NAME}</a>
+          {$cat.ICON_TS}
+        </h3>
+        <div class="text">
+          {if isset($cat.INFO_DATES) }
+          <p class="thumbCatDescNfoDate">{$cat.INFO_DATES}</p>
+          {/if}
+          <p class="thumbCatDescNbImg">{$cat.CAPTION_NB_IMAGES}</p>
+          {if not empty($cat.DESCRIPTION)}
+          <p class="thumbCatDesc">{$cat.DESCRIPTION}</p>
+          {/if}
+        </div>
+      </div>
+    </div>
+  </li>
+  {/foreach}
+</ul>
+
+<!-- **GBL** <MAINPAGE_CATEGORIES< -->
Index: /extensions/gally/piwigo-2.0/menubar.css
===================================================================
--- /extensions/gally/piwigo-2.0/menubar.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar.css	(revision 6105)
@@ -0,0 +1,99 @@
+/* -----------------------------------------------------------------------------
+  GALLY 
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/menubar.css
+  file version: 1.1.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  CSS file for the menu
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+#menubar {
+  margin:0px;
+  padding:1px;
+  margin-right:8px;
+  /*float:left;
+  position:relative;
+  top:-1px;
+  left:4px;*/
+  position:absolute;
+  top:0px;
+  left:4px;
+  width:240px;
+  display:block;
+  z-index:1000;
+  visibility:hidden;
+  overflow:hidden;
+  height:0px;
+}
+
+#menubar dl {
+ margin:0px;
+ padding:0px;
+}
+
+#menubar dt {
+ margin:0px;
+ padding:6px;
+}
+
+#menubar dd {
+ margin:0 0 0 10px;
+}
+
+#menubar ul {
+ margin:0px;
+ padding-top:4px;
+ padding-bottom:4px;
+ padding-left:10px;
+}
+
+.totalImages {
+  margin:2px;
+  text-align:right;
+}
+
+.menuInfoCat, .menuInfoCatByChild {
+  font-size:80%;
+  left:-3px;
+  position:relative;
+  top:-3px;
+}
+
+#menubar dd p {
+ margin:4px;
+}
+
+#menubar dd input {
+  padding:2px;
+  margin:1px 1px 1px 8px;
+}
+
+#menubar dt .button{
+  float:right;
+  position:relative;
+  top:-7px;
+  right:-5px;
+}
+
+#ipassword, #iusername {
+ display:block;
+}
+
+#menubar form ul {
+ list-style:none;
+}
+
+#quickconnect p {
+  float:left;
+}
+
+#menubar form ul li {
+ display:inline;
+ float:right;
+}
Index: /extensions/gally/piwigo-2.0/menubar.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar.tpl	(revision 6105)
@@ -0,0 +1,13 @@
+{if !empty($blocks) }
+<div id="menubar">
+  {foreach from=$blocks key=id item=block}
+  <dl id="{$id}">
+    {if not empty($block->template)}
+    {include file=$block->template|@get_extent:$id }
+    {else}
+    {$block->raw_content}
+    {/if}
+  </dl>
+  {/foreach}
+</div>
+{/if}
Index: /extensions/gally/piwigo-2.0/menubar_categories.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_categories.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_categories.tpl	(revision 6105)
@@ -0,0 +1,20 @@
+<dt>
+  {if isset($U_START_FILTER)}
+  <a id="icon_start_filter" class="button" href="{$U_START_FILTER}" title="{'start_filter_hint'|@translate}" rel="nofollow"></a>
+  {/if}
+  {if isset($U_STOP_FILTER)}
+  <a id="icon_stop_filter" class="button" href="{$U_STOP_FILTER}" title="{'stop_filter_hint'|@translate}"></a>
+  {/if}
+  <a href="{$block->data.U_CATEGORIES}">{'Categories'|@translate}</a>
+</dt>
+<dd>
+  {$block->data.MENU_CATEGORIES_CONTENT}
+  {if isset($block->data.U_UPLOAD)}
+  <ul>
+    <li>
+      <a href="{$block->data.U_UPLOAD}">{'upload_picture'|@translate}</a>
+    </li>
+  </ul>
+  {/if}
+  <p class="totalImages">{$pwg->l10n_dec('%d element', '%d elements', $block->data.NB_PICTURE)}</p>
+</dd>
Index: /extensions/gally/piwigo-2.0/menubar_identification.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_identification.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_identification.tpl	(revision 6105)
@@ -0,0 +1,64 @@
+<dt>{'identification'|@translate}</dt>
+<dd>
+	{if isset($USERNAME)}
+	<p>{'hello'|@translate}&nbsp;{$USERNAME}&nbsp;!</p>
+	{/if}
+
+	<ul>
+	{if isset($U_REGISTER)}
+	<li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
+	{/if}
+
+	{if isset($U_LOGIN)}
+	<li><a href="{$U_LOGIN}" rel="nofollow">{'Connection'|@translate}</a></li>
+	{/if}
+
+	{if isset($U_LOGOUT)}
+	<li><a href="{$U_LOGOUT}">{'logout'|@translate}</a></li>
+	{/if}
+
+	{if isset($U_PROFILE)}
+	<li><a href="{$U_PROFILE}" title="{'hint_customize'|@translate}">{'customize'|@translate}</a></li>
+	{/if}
+
+	{if isset($U_ADMIN)}
+	<li><a href="{$U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li>
+	{/if}
+	</ul>
+
+	{if isset($U_LOGIN)}
+	<form method="post" action="{$U_LOGIN}" id="quickconnect">
+	<fieldset>
+	<legend>{'Quick connect'|@translate}</legend>
+	<div>
+	<label for="username">{'Username'|@translate}</label><br/>
+	<input type="text" name="username" id="username" value="" style="width:90%">
+	</div>
+
+	<div><label for="password">{'Password'|@translate}</label>
+	<br/>
+	<input type="password" name="password" id="password" style="width:90%">
+	</div>
+
+	{if $AUTHORIZE_REMEMBERING}
+	<div><label for="remember_me">
+	{'remember_me'|@translate}
+	<input type="checkbox" name="remember_me" id="remember_me" value="1">
+	</label></div>
+	{/if}
+
+	<div>
+	<input class="submit" type="submit" name="login" value="{'Submit'|@translate}">
+	<ul class="actions">
+		<li><a id="icon_lost_password3" class="button" href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/lost_password.png" class="button" alt="{'Forgot your password?'|@translate}">--></a></li>
+		{if isset($U_REGISTER)}
+		<li><a id="icon_register3" class="button" href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/register.png" class="button" alt="{'Register'|@translate}"/>--></a></li>
+		{/if}
+	</ul>
+	</div>
+
+	</fieldset>
+	</form>
+	{/if}
+</dd>
+
Index: /extensions/gally/piwigo-2.0/menubar_links.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_links.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_links.tpl	(revision 6105)
@@ -0,0 +1,15 @@
+<dt>{'Links'|@translate}</dt>
+<dd>
+  <ul>
+    {foreach from=$block->data item=link}
+      <li>
+        <a href="{$link.URL}" class="external"
+          {if isset($link.new_window) }onclick="window.open(this.href, '{$link.new_window.NAME}','{$link.new_window.FEATURES}'); return false;"{/if}
+        >
+        {$link.LABEL}
+        </a>
+      </li>
+    {/foreach}
+  </ul>
+</dd>
+
Index: /extensions/gally/piwigo-2.0/menubar_menu.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_menu.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_menu.tpl	(revision 6105)
@@ -0,0 +1,20 @@
+<dt>{'title_menu'|@translate}</dt>
+<dd>
+  {if isset($block->data.qsearch) and  $block->data.qsearch==true}
+    <form action="{$ROOT_URL}qsearch.php" method="get" id="quicksearch" onsubmit="return this.q.value!='' && this.q.value!=qsearch_prompt;">
+      <p style="margin:0;padding:0"{*this <p> is for html validation only - does not affect positioning*}>
+        <input type="text" name="q" id="qsearchInput" onfocus="if (value==qsearch_prompt) value='';" onblur="if (value=='') value=qsearch_prompt;" style="width:90%"/>
+      </p>
+    </form>
+    <script type="text/javascript">var qsearch_prompt="{'qsearch'|@translate|@escape:'javascript'}"; document.getElementById('qsearchInput').value=qsearch_prompt;</script>
+  {/if}
+
+	<ul>
+	{foreach from=$block->data item=link}
+		{if is_array($link)}
+			<li><a href="{$link.URL}" title="{$link.TITLE}" {if isset($link.REL)}{$link.REL}{/if}>{$link.NAME}</a></li>
+		{/if}
+	{/foreach}
+	</ul>
+</dd>
+
Index: /extensions/gally/piwigo-2.0/menubar_specials.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_specials.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_specials.tpl	(revision 6105)
@@ -0,0 +1,9 @@
+<dt>{'special_categories'|@translate}</dt>
+<dd>
+	<ul>
+		{foreach from=$block->data item=link}
+		<li><a href="{$link.URL}" title="{$link.TITLE}" {if isset($link.REL)}{$link.REL}{/if}>{$link.NAME}</a></li>
+		{/foreach}
+	</ul>
+</dd>
+
Index: /extensions/gally/piwigo-2.0/menubar_tags.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/menubar_tags.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/menubar_tags.tpl	(revision 6105)
@@ -0,0 +1,18 @@
+<dt>{'Related tags'|@translate}</dt>
+<dd>
+	<div id="menuTagCloud">
+		{foreach from=$block->data item=tag}
+		<span>
+			<a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{'See elements linked to this tag only'|@translate}">{$tag.name}</a>
+      {if !empty($tag.U_ADD) }
+      <a class="tagaddbutton" href="{$tag.U_ADD}"
+        title="{$pwg->l10n_dec('%d element are also linked to current tags', '%d elements are also linked to current tags', $tag.counter)}"
+        rel="nofollow">
+        <img src="{$ROOT_URL}{$themeconf.icon_dir}/add_tag.png" alt="+" />
+      </a>
+      {/if}
+		</span>
+		{/foreach}
+	</div>
+</dd>
+
Index: /extensions/gally/piwigo-2.0/month_calendar.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/month_calendar.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/month_calendar.tpl	(revision 6105)
@@ -0,0 +1,78 @@
+<!-- **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 isset($bar.CONTENT)}
+  {$bar.CONTENT}
+  {else}
+  &nbsp;
+  {/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/>
+  {$bar.NAV_BAR}
+</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">
+            <a href="{$day.U_IMG_LINK}">
+                <img style="{$day.IMAGE_STYLE}" src="{$day.IMAGE}" alt="{$day.IMAGE_ALT}" title="{$pwg->l10n_dec('%d element','%d elements', $day.NB_ELEMENTS)}" />
+            </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/piwigo-2.0/nbm.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/nbm.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/nbm.tpl	(revision 6105)
@@ -0,0 +1,15 @@
+<!-- **GBL** >NBM> -->
+
+<div id="content" class="content">
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><!--<img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'nbm_item_notification'|@translate}</h2>
+  </div>
+
+{include file='dialogs.tpl'}
+
+</div>
+
+<!-- **GBL** <NBM< -->
Index: /extensions/gally/piwigo-2.0/notification.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/notification.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/notification.tpl	(revision 6105)
@@ -0,0 +1,24 @@
+<!-- **GBL** >NOTIFICATION> -->
+
+{html_head}
+<link rel="alternate" type="application/rss+xml" title="{'Image only RSS feed'|@translate}" href="{$U_FEED_IMAGE_ONLY}">
+<link rel="alternate" type="application/rss+xml" title="{'Complete RSS feed'|@translate}" href="{$U_FEED}">
+{/html_head}
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!--<img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'Notification'|@translate}</h2>
+  </div>
+
+  <div id="content2">
+    <p>{'The RSS notification feed provides notification on news from this website : new pictures, updated categories, new comments. Use a RSS feed reader.'|@translate}</p>
+
+    <p><a href="{$U_FEED_IMAGE_ONLY}">{'Image only RSS feed'|@translate}</a></p>
+    <p><a href="{$U_FEED}">{'Complete RSS feed'|@translate}</a></p>
+  </div>
+</div>
+
+<!-- **GBL** <NOTIFICATION< -->
Index: /extensions/gally/piwigo-2.0/password.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/password.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/password.tpl	(revision 6105)
@@ -0,0 +1,41 @@
+<!-- **GBL** >PASSWORD> -->
+
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'Go through the gallery as a visitor'|@translate}"><!--<img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'Password forgotten'|@translate}</h2>
+  </div>
+
+{include file='dialogs.tpl'}
+
+
+<form action="{$F_ACTION}" method="post" class="properties">
+  <fieldset>
+    <legend>{'Retrieve password'|@translate}</legend>
+
+    <ul>
+      <li>
+        <div class="property">
+          <label for="mail_address">{'Email address'|@translate}</label>
+        </div>
+        <input class="login" type="text" name="mail_address" id="mail_address" size="35" maxlength="40" >
+      </li>
+      <li>
+        <div class="property">
+          <label for="no_mail_address">{'No email address'|@translate}</label>
+        </div>
+        <input type="checkbox" id="no_mail_address" name="no_mail_address" value="1">
+      </li>
+    </ul>
+  </fieldset>
+
+  <p><input class="submit" type="submit" name="submit" value="{'Send new password'|@translate}"></p>
+</form>
+
+</div> <!-- content -->
+
+
+<!-- **GBL** <PASSWORD< -->
Index: /extensions/gally/piwigo-2.0/picture.css
===================================================================
--- /extensions/gally/piwigo-2.0/picture.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/picture.css	(revision 6105)
@@ -0,0 +1,337 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/picture.css
+  file version: 1.2.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  CSS file forthe pictures pages
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+
+
+
+#imageHeaderBar h2 {
+  font-size:12px;
+  margin:0px;
+  margin-right:8px;
+  padding-top:2px;
+  padding-bottom:2px;
+}
+
+.browsePath {
+  margin:0px;
+  padding:0px;
+  padding-left:5px;
+  float:left;
+}
+
+.imageNumber {
+  float:right;
+  margin:2px;
+  padding:0px;
+  padding-right:3px;
+  padding-left:6px;
+  font-size:90%;
+}
+
+#imageToolBar {
+  position:absolute;
+  overflow:hidden;
+  display:block;
+  height:35px;
+  width:100%;
+  /*visibility:hidden;*/
+  z-index:100;
+}
+
+.randomButtons {
+  left:0px;
+  position:absolute;
+  top:5px;
+  margin-left:5px;
+  z-index:110;
+}
+
+.navButtons {
+  right:0px;
+  margin-right:5px;
+  position:absolute;
+  top:5px;
+  z-index:100;
+  width:auto;
+}
+
+.navButton  {
+  float:right;
+}
+
+#imageToolBarContainer {
+  visibility:hidden;
+}
+
+.imageToolBarBg, #imageToolBarContainer,
+.navThumbPrevBg, .navThumbNextBg  {
+  position:absolute;
+  top:0px;
+  display:block;
+  width:100%;
+  height:100%;
+  text-align:center;
+}
+
+#navThumbPrev, #navThumbNext {
+  background-image:url(./icon/1x1transp.gif);
+  background-repeat:repeat;
+  position:absolute;
+  overflow:hidden;
+  display:block;
+  /*height:100%;*/
+  width:200px;
+  /*visibility:hidden;*/
+  z-index:110;
+}
+
+#navThumbPrev {
+  left:0px;
+}
+
+#navThumbNext {
+  right:0px;
+}
+
+ #navThumbPrevContainer, #navThumbNextContainer {
+  position:absolute;
+  top:0px;
+  width:100%;
+  height:100%;
+  text-align:center;
+  border-collapse:collapsed;
+  vertical-align:middle;
+  visibility:hidden;
+}
+
+.navThumbNextBg, .navThumbPrevBg {
+  /*opacity:0.5;
+  filter:alpha(opacity:50);*/
+  z-index:-1;
+}
+
+.navThumbPrevBg, #navThumbPrevContainer {
+  left:0px;
+}
+
+.navThumbNextBg, #navThumbNextContainer {
+  right:0px;
+}
+
+#theImg {
+  position:relative;
+  left:0px;
+}
+
+#theImgContainer {
+  margin-left:auto;
+  margin-right:auto;
+  margin-top:12px;
+  margin-bottom:25px;
+  overflow:hidden;
+}
+
+#theImage, #theImageTable {
+  width:100%;
+  /*height:100%;*/
+  text-align:center;
+  z-index:-1;
+}
+
+#theImage {
+  position:absolute;
+  top:30px;
+  text-align:center;
+  padding-bottom:80px;
+}
+
+#theImage p {
+  padding:0px 30px 20px 30px;
+  margin:4px;
+}
+
+#theImageTableMouseAreaLeft, #theImageTableMouseAreaRight {
+  width:40px;
+}
+
+.infoTable {
+  margin:auto;
+}
+
+.infoTable tr {
+  vertical-align:top;
+}
+
+#imageInfos {
+  background-image:url(./icon/1x1transp.gif);
+  background-repeat:repeat;
+  width:100%;
+  clear:both;
+}
+
+#imageInfosContainer {
+  min-height:200px;
+}
+
+#rateForm input[type="button"] {
+  cursor:pointer;
+  border:none;
+}
+
+div.imageInfosBg {
+  position:absolute;
+  width:100%;
+  height:100%;
+  z-index:-1;
+  left:0px;
+}
+
+/*
+  comments
+*/
+#theComments {
+  width:100%;
+  clear:both;
+}
+
+#theCommentList {
+  overflow-y:scroll;
+  overflow-x:hidden;
+  height:80%;
+  width:49.75%;
+  position:absolute;
+  display:block;
+}
+
+#theCommentContainer {
+  width:100%;
+}
+
+#theCommentContainer h4 {
+  margin:4px;
+}
+
+#theCommentContainer table tr {
+  vertical-align:top;
+}
+
+#theCommentBG {
+  height:100%;
+  position:absolute;
+  width:100%;
+  z-index:-1;
+}
+
+.navigationBar {
+  padding-left:2px;
+}
+
+.commentList {
+  margin: 0px;
+  padding: 0px 0px 0px 36px;
+}
+
+/*
+  metadata
+*/
+.imageMeta {
+  width:100%;
+  clear:both;
+}
+
+.displaymeta {
+  padding-bottom:10px;
+}
+
+.imageMetaBg {
+  position:absolute;
+  width:100%;
+  height:100%;
+  z-index:-1;
+}
+
+
+/*
+ tabs
+*/
+#theTabsContainer {
+  position:fixed;
+  z-index:850;
+  width:100%;
+  bottom:18px;
+  /* to be fully functionnal, the tabs height must be set in the default.conf
+   * file (tabsHidden & tabsVisible properties)
+   */
+  height:21px;
+}
+
+#theTabs {
+  visibility:hidden;
+}
+
+#theTabsBg {
+  display:block;
+  height:100%;
+  position:absolute;
+  top:0;
+  width:100%;
+  z-index:-1;
+}
+
+#theTabsheets {
+  margin:0px;
+  padding:0px;
+  height:20px;
+}
+
+#theTabsheets li.tab {
+  float:left;
+  display:block;
+  margin:0 0 0 20px;
+}
+
+
+.ui-tabs-selected {
+}
+
+div.ui-tabs-hide {
+  display: none;
+}
+
+/*
+ * vd language switch plugin compatibility inside theme.css file
+ * PWG Stuff plugin compatibility
+*/
+
+/*
+ * Comment editor compatibility
+*/
+div#ce-content.content, div#ce-message-block.content {
+  margin:50px auto auto;
+  width:75%;
+  overflow:hidden;
+}
+
+div#ce-content table {
+  margin:auto;
+}
+
+div#ce-content h2, div#ce-message-block h2 {
+  margin-top:0px;
+}
+
+div#ce-comments {
+  padding:8px;
+}
+
Index: /extensions/gally/piwigo-2.0/picture.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/picture.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/picture.tpl	(revision 6105)
@@ -0,0 +1,365 @@
+<!-- **GBL** >PICTURE> -->
+
+{include file='dialogs.tpl'}
+
+<div id="content">
+
+  <div id="imageHeaderBar">
+    <div class="browsePath">
+      <h2>
+      [ <a href="{$U_HOME}" rel="home">{'home'|@translate}</a>
+      {if !$IS_HOME}{$LEVEL_SEPARATOR}{$SECTION_TITLE}{/if}
+      {$LEVEL_SEPARATOR}{$current.TITLE} ]
+      </h2>
+    </div>
+    <div class="imageNumber">{$PHOTO}</div>
+    <h2>&nbsp;</h2>
+  </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 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="{'slideshow_stop'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_slideshow.png" class="button" alt="{'slideshow_stop'|@translate}">--></a>
+          {/if}
+            <a id="icon_metadata" class="button" href="{$U_METADATA}" title="{'picture_show_metadata'|@translate}" rel="nofollow"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/metadata.png" class="button" alt="metadata" />--></a>
+          {if isset($current.U_DOWNLOAD) }
+            <a id="icon_save" class="button" href="{$current.U_DOWNLOAD}" title="{'download_hint'|@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" href="{$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="{'link_info_image'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/preferences.png" class="button" alt="{'edit'|@translate}"> --></a>
+          {/if}
+          {if isset($U_CADDIE) }{*caddie management BEGIN*}
+          <script type="text/javascript">
+          {literal}
+          function addToCadie(aElement, rootUrl, id)
+          {
+            if (aElement.disabled) return;
+            aElement.disabled=true;
+            var y = new PwgWS(rootUrl);
+
+            y.callService(
+              "pwg.caddie.add", {image_id: id} ,
+              {
+                onFailure: function(num, text) { alert(num + " " + text); document.location=aElement.href; },
+                onSuccess: function(result) { aElement.disabled = false; }
+              }
+            );
+          }{/literal}
+          </script>
+          <a id="icon_caddie" class="button" href="{$U_CADDIE}" 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} {*caddie management END*}
+        </div>
+        {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+
+        {if $SHOW_PICTURE_NAME_ON_TITLE }
+        <div><h2>{$current.TITLE}</h2></div>
+        {/if}
+
+    </div>
+  </div> <!-- imageToolBar -->
+
+  {if isset($previous) }
+  <div id="navThumbPrev">
+    <table id="navThumbPrevContainer" class="uiImg"><tr><td>
+      <div class="navThumbPrevBg">&nbsp;</div>
+      <div class="navThumbPrevContent">
+        <a class="navThumb" id="thumbPrev" href="{$previous.U_IMG}" title="{'previous_page'|@translate} : {$previous.TITLE}" rel="prev">
+          <img src="{$previous.THUMB_SRC}" class="thumbLink" id="linkPrev" alt="{$previous.TITLE}">
+        </a>
+      </div>
+    </td></tr></table>
+  </div> <!-- navThumbPrev -->
+  {/if}
+
+  {if isset($next) }
+  <div id="navThumbNext">
+    <table id="navThumbNextContainer" class="uiImg"><tr><td>
+      <div class="navThumbNextBg">&nbsp;</div>
+      <div class="navThumbNextContent">
+        <a class="navThumb" id="thumbNext" href="{$next.U_IMG}" title="{'next_page'|@translate} : {$next.TITLE}" rel="next">
+          <img src="{$next.THUMB_SRC}" class="thumbLink" id="linkNext" alt="{$next.TITLE}">
+        </a>
+      </div>
+    </td></tr></table>
+  </div> <!-- navThumbNext -->
+  {/if}
+
+
+    <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}">{'slideshow_stop'|@translate}</a> ]
+        </p>
+        {/if}
+    </div> <!-- theImage -->
+
+
+  <div id="theTabsContainer">
+  <div id="theTabs" class="uiImg">
+    <ul id="theTabsheets">
+      <li class="tab" id="tabImageInfos"><a href="#imageInfos">{"Informations"|@translate}</a></li>
+      {if isset($metadata)}
+        {foreach from=$metadata item=meta key=id}
+          <li class="tab" id="tabImageMeta"><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>
+
+    <div id="imageInfos" class="tabPanel">
+      <div id="imageInfosContainer">
+      <div class="imageInfosBg">&nbsp;</div>
+
+    <table class="infoTable" summary="Some info about this picture">
+      <tr  class="emptyrow" style="line-height:0px;">
+        <td colspan="2" width="49.75%">&nbsp;</td>
+        <td>&nbsp;</td>
+        <td colspan="2" width="49.75%">&nbsp;</td>
+      </tr>
+
+      <tr>
+        <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>
+        <td class="label">{'Dimensions'|@translate}</td>
+        <td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS|@replace:"*":"x"}{else}{'N/A'|@translate}{/if}</td>
+      </tr>
+      <tr>
+        <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>
+        <td class="label">{'File'|@translate}</td>
+        <td class="value">{$INFO_FILE}</td>
+      </tr>
+      <tr>
+        <td class="label">{'Posted on'|@translate}</td>
+        <td class="value">{$INFO_POSTED_DATE}</td>
+        <td>&nbsp;</td>
+        <td class="label">{'Filesize'|@translate}</td>
+        <td class="value">{if isset($INFO_FILESIZE)}{$INFO_FILESIZE}{else}{'N/A'|@translate}{/if}</td>
+      </tr>
+      {if isset($related_tags)}
+        <tr class="emptyrow"><td colspan="5">&nbsp;</td></tr>
+        <tr id="infoTags">
+          <td class="label">{'Tags'|@translate}</td>
+          <td colspan="4" 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)}
+        <tr class="emptyrow"><td colspan="5">&nbsp;</td></tr>
+        <tr id="infoCats">
+          <td class="label">{'Categories'|@translate}</td>
+          <td colspan="4" class="value">
+            {foreach from=$related_categories item=cat name=tag_loop}{if !$smarty.foreach.tag_loop.first},&nbsp;{/if}
+            {$cat}
+            {/foreach}
+          </td>
+        </tr>
+      {/if}
+      <tr class="emptyrow"><td colspan="5">&nbsp;</td><tr>
+      <tr>
+        <td class="label">{'Visits'|@translate}</td>
+        <td colspan="4" class="value">{$INFO_VISITS}</td>
+      </tr>
+
+    {if isset($rate_summary) or isset($rating)}
+      <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, standard deviation = %.2f)'|@translate }
+            {$pwg->sprintf($rate_text, $rate_summary.average, $rate_summary.count, $rate_summary.std) }
+          {else}
+            {'no_rate'|@translate}
+          {/if}
+          </td>
+        {else}
+          <td colspan="2">&nbsp;</td>
+        {/if}
+        <td>&nbsp;</td>
+        {if isset($rating)}
+          <td class="label">
+            <span id="updateRate">{if isset($rating.USER_RATE)}{'update_rate'|@translate}{else}{'new_rate'|@translate}{/if}</span>
+          </td>
+          <td class="value">
+            <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}template/{$themeconf.template}/rating.js"></script>
+            <script type="text/javascript">
+            makeNiceRatingForm( {ldelim}rootUrl: '{$ROOT_URL|@escape:"javascript"}', image_id: {$current.id},
+            updateRateText: "{'update_rate'|@translate|@escape:'javascript'}", updateRateElement: document.getElementById("updateRate"),
+            ratingSummaryText: "{'%.2f (rated %d times, standard deviation = %.2f)'|@translate|@escape:'javascript'}", ratingSummaryElement: document.getElementById("ratingSummary") {rdelim} );
+            </script>
+            </div>
+            </form>
+          </td>
+        {else}
+          <td colspan="2">&nbsp;</td>
+        {/if}
+      </tr>
+    {/if}
+
+    {if isset($available_permission_levels) }
+      <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=level}
+        <option value="{$level}"{if $current.level==$level} selected="selected"{/if}>{$pwg->l10n($pwg->sprintf('Level %d',$level))}</option>
+      {/foreach}
+      </select>
+      </td></tr>
+    {/if}
+
+    </table>
+
+      </div>
+    </div> <!-- imageInfos -->
+
+
+
+
+    {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>
+        <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|@replace:',':', '}</td>
+        {/foreach}
+        </table>
+      </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($COMMENT_NAV_BAR)}
+      <div class="navigationBar">{$COMMENT_NAV_BAR}</div>
+      {/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>{'comments_add'|@translate}</h4>
+            <form  method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
+              <table>
+                {if $comment_add.SHOW_AUTHOR}
+                <tr>
+                  <td>{'upload_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/piwigo-2.0/picture_content.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/picture_content.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/picture_content.tpl	(revision 6105)
@@ -0,0 +1,15 @@
+<!-- **GBL** >PICTURE_CONTENT> -->
+{if isset($high) }
+<a href="javascript:phpWGOpenWindow('{$high.U_HIGH}','{$high.UUID}','scrollbars=yes,toolbar=no,status=no,resizable=yes')">
+{/if}
+  <div id="theImgContainer">
+    <img id="theImg" src="{$SRC_IMG}" style="width:{$WIDTH_IMG}px;height:{$HEIGHT_IMG}px;" alt="{$ALT_IMG}"
+      {if isset($COMMENT_IMG)}
+        title="{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}" {else} title="{$current.TITLE|@replace:'"':' '} - {$ALT_IMG}"
+      {/if}>
+  </div>
+{if isset($high) }
+</a>
+  <p>{'picture_high'|@translate}</p>
+{/if}
+<!-- **GBL** <PICTURE_CONTENT< -->
Index: /extensions/gally/piwigo-2.0/picture_nav_buttons.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/picture_nav_buttons.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/picture_nav_buttons.tpl	(revision 6105)
@@ -0,0 +1,102 @@
+  <div class="navButtons">
+
+{if isset($last)}
+  <a id="icon_last" class="navButton" href="{$last.U_IMG}" title="{'last_page'|@translate} : {$last.TITLE}" rel="last"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/last.png" class="button" alt="{'last_page'|@translate}">--></a>
+{else}
+  <a class="navButton"><img src="{$ROOT_URL}{$themeconf.icon_dir}/last_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($next)}
+  <a id="icon_right" class="navButton" href="{$next.U_IMG}" title="{'next_page'|@translate} : {$next.TITLE}" rel="next"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/right.png" class="button" alt="{'next_page'|@translate}">--></a>
+{else}
+  <a class="navButton"><img src="{$ROOT_URL}{$themeconf.icon_dir}/right_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($slideshow.U_START_PLAY)}
+  <a id="icon_play" class="navButton" href="{$slideshow.U_START_PLAY}" title="{'start_play'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/play.png" class="button" alt="{'start_play'|@translate}"> --></a>
+{/if}
+
+{if isset($slideshow.U_STOP_PLAY)}
+  <a id="icon_pause" class="navButton" href="{$slideshow.U_STOP_PLAY}" title="{'stop_play'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/pause.png" class="button" alt="{'stop_play'|@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="{'previous_page'|@translate} : {$previous.TITLE}" rel="prev"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/left.png" class="button" alt="{'previous_page'|@translate}">--></a>
+{else}
+  <a class="navButton"><img src="{$ROOT_URL}{$themeconf.icon_dir}/left_unactive.png" class="button" alt=""></a>
+{/if}
+
+{if isset($first)}
+  <a id="icon_first" class="navButton" href="{$first.U_IMG}" title="{'first_page'|@translate} : {$first.TITLE}" rel="first"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/first.png" class="button" alt="{'first_page'|@translate}">--></a>
+{else}
+  <a class="navButton"><img src="{$ROOT_URL}{$themeconf.icon_dir}/first_unactive.png" class="button" alt=""></a>
+{/if}
+
+
+{if isset($slideshow.U_START_REPEAT)}
+  <a id="icon_start_repeat" class="navButton" href="{$slideshow.U_START_REPEAT}" title="{'start_repeat'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/start_repeat.png" class="button" alt="{'start_repeat'|@translate}">--></a>
+{/if}
+
+{if isset($slideshow.U_STOP_REPEAT)}
+  <a id="icon_stop_repeat" class="navButton" href="{$slideshow.U_STOP_REPEAT}" title="{'stop_repeat'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/stop_repeat.png" class="button" alt="{'stop_repeat'|@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="{'dec_period'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/dec_period.png" class="button" alt="{'dec_period'|@translate}">--></a>
+  {else}
+    <a class="navButton"> <img src="{$ROOT_URL}{$themeconf.icon_dir}/dec_period_unactive.png" class="button" alt=""></a>
+  {/if}
+
+  {if isset($slideshow.U_INC_PERIOD)}
+    <a id="icon_inc_period" class="navButton" href="{$slideshow.U_INC_PERIOD}" title="{'inc_period'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/inc_period.png" class="button" alt="{'inc_period'|@translate}">--></a>
+  {else}
+    <a class="navButton"> <img src="{$ROOT_URL}{$themeconf.icon_dir}/inc_period_unactive.png" class="button" alt=""></a>
+  {/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/piwigo-2.0/popuphelp.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/popuphelp.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/popuphelp.tpl	(revision 6105)
@@ -0,0 +1,16 @@
+<!-- **GBL** >POPUPHELP> -->
+<div id="content" class="content help">
+{$HELP_CONTENT}
+
+  <ul class="categoryActions">
+    <li>
+      <a id="icon_exit" class="button" href="#" onclick="window.close();" title="{'Close this window'|@translate}"><!--
+        <img src="{$ROOT_URL}{$themeconf.icon_dir}/exit.png" class="button" alt="exit">-->
+      </a>
+    </li>
+  </ul>
+
+</div> <!-- content -->
+
+
+<!-- **GBL** <POPUPHELP< -->
Index: /extensions/gally/piwigo-2.0/print.css
===================================================================
--- /extensions/gally/piwigo-2.0/print.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/print.css	(revision 6105)
@@ -0,0 +1,14 @@
+#menubar, .content .navigationBar, UL.categoryActions, .content DIV.calendarViews, .calendarBar,
+#imageToolBar, .navThumb, #addComment {
+    display: none;
+}
+
+BODY {
+    margin: 0;
+    color: #000000;
+    background: #ffffff;
+}
+
+.content {
+    margin: 0;
+}
Index: /extensions/gally/piwigo-2.0/profile.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/profile.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/profile.tpl	(revision 6105)
@@ -0,0 +1,31 @@
+<!-- **GBL** >PROFILE> -->
+
+<div id="content" class="content">
+
+{if isset($errors) and count($errors)}
+<div id="div_errors" class="errors">
+  <div>
+    <ul>
+      {foreach from=$errors item=error}
+      <li>{$error}</li>
+      {/foreach}
+    </ul>
+    <form>
+      <input class="submit" type="button" value="{'ok'|@translate}" onclick="closeDiv('div_errors');">
+    </form>
+  </div>
+</div>
+{/if}
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'Profile'|@translate}</h2>
+  </div>
+
+{$PROFILE_CONTENT}
+</div> <!-- content -->
+
+
+<!-- **GBL** <PROFILE< -->
Index: /extensions/gally/piwigo-2.0/profile_content.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/profile_content.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/profile_content.tpl	(revision 6105)
@@ -0,0 +1,114 @@
+<!-- **GBL** >PROFILE_CONTENT> -->
+<form method="post" name="profile" action="{$F_ACTION}" id="profile" class="properties">
+
+  <fieldset>
+    <legend>{'Registration'|@translate}</legend>
+    <input type="hidden" name="redirect" value="{$REDIRECT}" />
+    <ul>
+      <li>
+        <div class="property">{'Username'|@translate}</div>
+        {$USERNAME}
+      </li>
+{if not $SPECIAL_USER} {* can modify password + email*}
+      <li>
+        <div class="property">
+          <label for="mail_address">{'Email address'|@translate}</label>
+        </div>
+        <input type="text" name="mail_address" id="mail_address" value="{$EMAIL}" size=35>
+      </li>
+{if not $IN_ADMIN} {* admins do not need old password*}
+      <li>
+        <div class="property">
+          <label for="password">{'Password'|@translate}</label>
+        </div>
+        <input type="password" name="password" id="password" value="">
+      </li>
+{/if}
+      <li>
+        <div class="property">
+          <label for="use_new_pwd">{'new_password'|@translate}</label>
+        </div>
+        <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+      </li>
+      <li>
+        <div class="property">
+          <label for="passwordConf">{'Confirm Password'|@translate}</label>
+        </div>
+        <input type="password" name="passwordConf" id="passwordConf" value="">
+      </li>
+    </ul>
+{/if}
+  </fieldset>
+
+  <fieldset>
+    <legend>{'preferences'|@translate}</legend>
+
+    <ul>
+      <li>
+        <div class="property">
+          <label for="nb_image_line">{'nb_image_per_row'|@translate}</label>
+        </div>
+        <input type="text" size="3" maxlength="2" name="nb_image_line" id="nb_image_line" value="{$NB_IMAGE_LINE}">
+      </li>
+      <li>
+        <div class="property">
+          <label for="nb_line_page">{'nb_row_per_page'|@translate}</label>
+        </div>
+        <input type="text" size="3" maxlength="2" name="nb_line_page" id="nb_line_page" value="{$NB_ROW_PAGE}" >
+      </li>
+      <li>
+        <div class="property">
+          <label for="template">{'theme'|@translate}</label>
+        </div>
+        {html_options name=template options=$template_options selected=$template_selection}
+      </li>
+      <li>
+        <div class="property">
+          <label for="language">{'language'|@translate}</label>
+        </div>
+        {html_options name=language options=$language_options selected=$language_selection}
+      </li>
+      <li>
+        <div class="property">
+          <label for="recent_period">{'recent_period'|@translate}</label>
+        </div>
+        <input type="text" size="3" maxlength="2" name="recent_period" id="recent_period" value="{$RECENT_PERIOD}">
+      </li>
+      <li>
+        <div class="property">{'auto_expand'|@translate}</div>
+        {html_radios name='expand' options=$radio_options selected=$EXPAND}
+      </li>
+      <li>
+        <div class="property">{'show_nb_comments'|@translate}</div>
+        {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS}
+      </li>
+      <li>
+        <div class="property">{'show_nb_hits'|@translate}</div>
+        {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS}
+      </li>
+      <li>
+        <div class="property">
+          <label for="maxwidth">{'maxwidth'|@translate}</label>
+        </div>
+        <input type="text" size="4" maxlength="4" name="maxwidth" id="maxwidth" value="{$MAXWIDTH}">
+      </li>
+      <li>
+        <div class="property">
+          <label for="maxheight">{'maxheight'|@translate}</label>
+        </div>
+        <input type="text" size="4" maxlength="4" name="maxheight" id="maxheight" value="{$MAXHEIGHT}">
+      </li>
+    </ul>
+  </fieldset>
+
+  <p class="bottomButtons">
+    <input class="submit" type="submit" name="validate" value="{'Submit'|@translate}">
+    <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+    <input class="submit" type="submit" name="reset_to_default" value="{'Reset_To_Default'|@translate}">
+
+  </p>
+
+</form>
+
+
+<!-- **GBL** <PROFILE_CONTENT< -->
Index: /extensions/gally/piwigo-2.0/rating.js
===================================================================
--- /extensions/gally/piwigo-2.0/rating.js	(revision 6105)
+++ /extensions/gally/piwigo-2.0/rating.js	(revision 6105)
@@ -0,0 +1,100 @@
+var gRatingOptions, gRatingButtons, gUserRating;
+
+function makeNiceRatingForm(options)
+{
+  gRatingOptions = options || {};
+  var form = document.getElementById('rateForm');
+  if (!form) return; //? template changed
+
+  gRatingButtons = form.getElementsByTagName('input');
+  gUserRating = "";
+  for (var i=0; i<gRatingButtons.length; i++)
+  {
+    if ( gRatingButtons[i].type=="button" )
+    {
+      gUserRating = gRatingButtons[i].value;
+      break;
+    }
+  }
+
+  for (var i=0; i<gRatingButtons.length; i++)
+  {
+    var rateButton = gRatingButtons[i];
+    rateButton.initialRateValue = rateButton.value; // save it as a property
+    try { rateButton.type = "button"; } catch (e){}// avoid normal submit (use ajax); not working in IE6
+
+    if (navigator.userAgent.indexOf('AppleWebKit/') == -1 && navigator.userAgent.indexOf('MSIE 8')==-1) rateButton.value = ""; //hide the text IE<8/Opera - breaks safari
+    with (rateButton.style)
+    {
+      textIndent = "-50px"; //hide the text FF
+      marginLeft = marginRight = 0;
+    }
+
+    if (i!=gRatingButtons.length-1 && rateButton.nextSibling.nodeType == 3 /*TEXT_NODE*/)
+      rateButton.parentNode.removeChild(rateButton.nextSibling);
+    if (i>0 && rateButton.previousSibling.nodeType == 3 /*TEXT_NODE*/)
+      rateButton.parentNode.removeChild(rateButton.previousSibling);
+
+    if(window.addEventListener){ // Mozilla, Netscape, Firefox
+      rateButton.addEventListener("click", updateRating, false );
+      rateButton.addEventListener("mouseout", resetRatingStarDisplay, false );
+      rateButton.addEventListener("mouseover", updateRatingStarDisplayEvt, false );
+    }
+    else if(window.attachEvent) { // IE
+      rateButton.attachEvent("onclick", updateRating);
+      rateButton.attachEvent("onmouseout", resetRatingStarDisplay);
+      rateButton.attachEvent("onmouseover", updateRatingStarDisplayEvt);
+    }
+  }
+  resetRatingStarDisplay();
+}
+
+function resetRatingStarDisplay()
+{
+  updateRatingStarDisplay( gUserRating );
+}
+
+function updateRatingStarDisplay(userRating)
+{
+  for (var i=0; i<gRatingButtons.length; i++)
+    gRatingButtons[i].className = (userRating!=="" && userRating>=gRatingButtons[i].initialRateValue ) ? "rateButtonStarFull" : "rateButtonStarEmpty";
+}
+
+function updateRatingStarDisplayEvt(e)
+{
+  updateRatingStarDisplay(
+    e.target ? e.target.initialRateValue : e.srcElement.initialRateValue);
+}
+
+function updateRating(e)
+{
+  var rateButton = e.target || e.srcElement;
+  if (rateButton.initialRateValue == gUserRating)
+    return false; //nothing to do
+
+  for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=true;
+  var y = new PwgWS(gRatingOptions.rootUrl);
+  y.callService(
+    "pwg.images.rate", {image_id: gRatingOptions.image_id, rate: rateButton.initialRateValue } ,
+    {
+      onFailure: function(num, text) {
+        alert(num + " " + text);
+        document.location = rateButton.form.action + "&rate="+rateButton.initialRateValue;
+      },
+      onSuccess: function(result) {
+        gUserRating = rateButton.initialRateValue;
+        for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=false;
+        if (gRatingOptions.updateRateElement) gRatingOptions.updateRateElement.innerHTML = gRatingOptions.updateRateText;
+        if (gRatingOptions.ratingSummaryElement)
+        {
+          var t = gRatingOptions.ratingSummaryText;
+          var args =[result.average, result.count, result.stdev], idx = 0, rexp = new RegExp( /%\.?\d*[sdf]/ );
+          _xxx = t.match( rexp );
+          while (idx<args.length) t=t.replace(rexp, args[idx++]);
+          gRatingOptions.ratingSummaryElement.innerHTML = t;
+        }
+      }
+    }
+  );
+  return false;
+}
Index: /extensions/gally/piwigo-2.0/redirect.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/redirect.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/redirect.tpl	(revision 6105)
@@ -0,0 +1,4 @@
+<!-- **GBL** >REDIRECT> -->
+<p>{$REDIRECT_MSG}</p>
+<p><a href="{$page_refresh.U_REFRESH}">{'click_to_redirect'|@translate}</a></p>
+<!-- **GBL** <REDIRECT< -->
Index: /extensions/gally/piwigo-2.0/register.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/register.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/register.tpl	(revision 6105)
@@ -0,0 +1,86 @@
+<!-- **GBL** >REGISTER> -->
+
+<div id="registerPage">
+
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'Registration'|@translate}</h2>
+  </div>
+
+{if isset($errors) and count($errors)}
+  <div id="div_errors" class="errors">
+    <div>
+      <ul>
+        {foreach from=$errors item=error}
+        <li>{$error}</li>
+        {/foreach}
+      </ul>
+      <form>
+        <input class="submit" type="button" value="{'ok'|@translate}" onclick="closeDiv('div_errors');">
+      </form>
+    </div>
+  </div>
+{/if}
+
+<form method="post" action="{$F_ACTION}" class="properties" name="register_form" id="register">
+  <fieldset>
+    <legend>{'Enter your personnal informations'|@translate}</legend>
+
+    <ul>
+      <li>
+        <div class="property">
+          <label for="login">{'Username'|@translate}</label>
+        </div>
+        <input type="text" name="login" id="login" value="{$F_LOGIN}" >&nbsp;<span class="mandatorystar">*</span>
+      </li>
+      <li>
+        <div class="property">
+          <label for="password">{'Password'|@translate}</label>
+        </div>
+        <input type="password" name="password" id="password" >&nbsp;<span class="mandatorystar">*</span>
+      </li>
+      <li>
+        <div class="property">
+          <label for="password_conf">{'Confirm Password'|@translate}</label>
+        </div>
+        <input type="password" name="password_conf" id="password_conf" >&nbsp;<span class="mandatorystar">*</span>
+      </li>
+      <li>
+        <div class="property">
+          <label for="mail_address">{'Mail address'|@translate}</label>
+        </div>
+        <input type="text" name="mail_address" id="mail_address" value="{$F_EMAIL}" size=35>
+        ({'useful when password forgotten'|@translate})
+      </li>
+    </ul>
+
+  </fieldset>
+
+  <p class="bottomButtons">
+    <input class="submit" type="submit" name="submit" value="{'Register'|@translate}">
+    <input class="submit" type="reset" value="{'Reset'|@translate}">
+  </p>
+
+  <p class="mandatorynfo">
+    <span class="mandatorystar">*</span> : {'mandatory'|@translate}
+  </p>
+
+</form>
+
+
+
+
+
+<script type="text/javascript"><!--
+document.register_form.login.focus();
+//--></script>
+
+</div> <!-- content -->
+</div> <!-- registerPage -->
+
+
+<!-- **GBL** <REGISTER< -->
Index: /extensions/gally/piwigo-2.0/release_notes.txt
===================================================================
--- /extensions/gally/piwigo-2.0/release_notes.txt	(revision 6105)
+++ /extensions/gally/piwigo-2.0/release_notes.txt	(revision 6105)
@@ -0,0 +1,71 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  | release | date       | changes
+  | 1.0.0   | 2008-11-11 | first release for Piwigo 2.0.0RC4
+  | 1.1.0   | 2009-04-25 | * include some changes made on the "yoga" template
+  |         |            |   . r3031, r3037, r3040, r3090, r3108
+  |         |            | * use of jQuery for the js scripts
+  |         |            | * some bugs (display&js) corrected
+  |         |            | * enhanced interface on the picture page
+  |         |            |   . add the autoscroll feature
+  |         |            |   . add effects on the interface
+  |         |            | * enhanced interface on the category page
+  |         |            |   . add the auto menuwidth feature
+  |         |            | * possibility to configure the interface mode for
+  |         |            |   each themes (conf files)
+  | 1.1.1   | 2009-05-03 | * enhanced interface on the picture page
+  |         |            |   . add the imageCenterMode feature
+  |         |            | * giving more space between image and notes
+  | 1.2.0   | 2009-12-06 | * js for picture & category page are partially
+  |         |            |   rewrited
+  |         |            | * interface on the picture page is updated and is now
+  |         |            |   easier to use
+  |         |            |   . using tabs to display picture information
+  |         |            | * EXIF & IPTC markup can be translated by the
+  |         |            |   template ($lang["markup_id"] need to be defined in
+  |         |            |   a local language file)
+  |         |            | * use of jQuery.ui.dialog to display modal messages
+  |         |            | * main theme are finalized
+  |         |            |   . Grum-dark II
+  |         |            |   . Graphite
+  |         |            | * add a new theme
+  |         |            |   . Lapis-Lazuli
+  |         |            | * mantis: feature 1096
+  |         |            |   . Compatibility with the plugin CommentEditor
+  |         |            | * mantis: feature 1097
+  |         |            |   . The template don't manage the local-layout file
+  |         |            | * mantis: feature 1098
+  |         |            |   . Metadata panel doesn't works very well => the UI
+  |         |            |     is handled differently, this problem is not here
+  |         |            |     anymore
+  |         |            | * mantis: feature 1099
+  |         |            |   . Compatibility with the plugin PWG_Stuff
+  |         |            | * mantis: feature 1313
+  |         |            |   . gally's theme "Grum-dark II" contain spaces in
+  |         |            |     filename
+  |         |            |     => renamed "Grum-dark-II" : it's ugly :-(
+  |         |            | * Compatibility with the plugin VD language switch
+  |         |            | * report some changes made on the "yoga" template
+  |         |            |   . r3060, r3121, r3137, r3147, r3196, r3538, r4512
+  |         |            |
+  |         |            |
+  ------------------------------------------------------------------------------
+
+
+  ------------------------------------------------------------------------------
+  | files           | description
+  | content.css     | CSS for all pages
+  | generic.css     | CSS for all pages excepted categories&pictures
+  | menubar.css     | CSS for the menu
+  | picture.css     | CSS for the pictures pages
+  | thumbnails.css  | CSS for the categories pages
+  | gallyjs-tcp.js  | Javascript for the categories pages management
+  | gallyjs-tpp.js  | Javascript for the pictures pages management
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+
+----------------------------------------------------------------------------- */
Index: /extensions/gally/piwigo-2.0/search.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/search.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/search.tpl	(revision 6105)
@@ -0,0 +1,128 @@
+<!-- **GBL** >SEARCH> -->
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_help" class="button" href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}" rel="nofollow"> <!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/help.png" class="button" alt="(?)"> --></a></li>
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}" rel="home"> <!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--> </a></li>
+    </ul>
+    <h2>{'Search'|@translate}</h2>
+  </div>
+
+{if isset($errors) }
+<div class="errors">
+  <ul>
+    {foreach from=$errors item=error}
+    <li>{$error}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+<form class="filter" method="post" name="search" action="{$F_SEARCH_ACTION}">
+<fieldset>
+  <legend>{'Filter'|@translate}</legend>
+  <label>{'search_keywords'|@translate}
+    <input type="text" style="width: 300px" name="search_allwords" size="30"  />
+  </label>
+  <ul>
+    <li><label>
+      <input type="radio" name="mode" value="AND" checked="checked" />{'search_mode_and'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="mode" value="OR" />{'search_mode_or'|@translate}
+    </label></li>
+  </ul>
+  <label>{'search_author'|@translate}
+    <input type="text" style="width: 300px" name="search_author" size="30"  />
+  </label>
+</fieldset>
+
+{if isset($TAG_SELECTION)}
+<fieldset>
+  <legend>{'Search tags'|@translate}</legend>
+  {$TAG_SELECTION}
+  <label><span><input type="radio" name="tag_mode" value="AND" checked="checked" /> {'All tags'|@translate}</span></label>
+  <label><span><input type="radio" name="tag_mode" value="OR" /> {'Any tag'|@translate}</span></label>
+</fieldset>
+{/if}
+
+<fieldset>
+  <legend>{'search_date'|@translate}</legend>
+  <ul>
+    <li><label>{'search_date_type'|@translate}</label></li>
+    <li><label>
+      <input type="radio" name="date_type" value="date_creation" checked="checked" />{'Creation date'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="date_type" value="date_available" />{'Post date'|@translate}
+    </label></li>
+  </ul>
+  <ul>
+    <li><label>{'search_date_from'|@translate}</label></li>
+    <li>
+      <select name="start_day">
+          <option value="0">--</option>
+        {section name=day start=1 loop=32}
+          <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$START_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select name="start_month">
+        {html_options options=$month_list selected=$START_MONTH_SELECTED}
+      </select>
+      <input name="start_year" type="text" size="4" maxlength="4" >
+    </li>
+    <li>
+      <a href="#" onClick="document.search.start_day.value={$smarty.now|date_format:"%d"};document.search.start_month.value={$smarty.now|date_format:"%m"};document.search.start_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+    </li>
+  </ul>
+  <ul>
+    <li><label>{'search_date_to'|@translate}</label></li>
+    <li>
+      <select name="end_day">
+          <option value="0">--</option>
+        {section name=day start=1 loop=32}
+          <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$END_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select name="end_month">
+        {html_options options=$month_list selected=$END_MONTH_SELECTED}
+      </select>
+      <input name="end_year" type="text" size="4" maxlength="4" >
+    </li>
+    <li>
+      <a href="#" onClick="document.search.end_day.value={$smarty.now|date_format:"%d"};document.search.end_month.value={$smarty.now|date_format:"%m"};document.search.end_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+    </li>
+  </ul>
+</fieldset>
+
+<fieldset>
+  <legend>{'search_options'|@translate}</legend>
+  <label>{'search_categories'|@translate}<br/>
+    <select class="categoryList" name="cat[]" multiple="multiple" >
+      {html_options options=$category_options selected=$category_options_selected}
+    </select>
+  </label>
+  <ul>
+    <li><label>{'search_subcats_included'|@translate}</label></li>
+    <li><label>
+      <input type="radio" name="subcats-included" value="1" checked="checked" />{'Yes'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="subcats-included" value="0" />{'No'|@translate}
+    </label></li>
+  </ul>
+</fieldset>
+<p>
+  <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}" />
+  <input class="submit" type="reset" value="{'Reset'|@translate}" />
+</p>
+</form>
+
+<script type="text/javascript"><!--
+document.search.search_allwords.focus();
+//--></script>
+
+</div> <!-- content -->
+
+<!-- **GBL** <SEARCH< -->
Index: /extensions/gally/piwigo-2.0/search_rules.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/search_rules.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/search_rules.tpl	(revision 6105)
@@ -0,0 +1,60 @@
+<!-- **GBL** >SEARCH_RULES> -->
+
+<div id="content2" class="content">
+<ul class="categoryActions">
+  <li>
+    <a id="icon_exit" class="button" href="#" onclick="window.close();" title="{'Close this window'|@translate}">
+      <!--<img src="{$ROOT_URL}{$themeconf.icon_dir}/exit.png" class="button" alt="exit">-->
+    </a>
+  </li>
+</ul>
+
+<h2>{'Search rules'|@translate}</h2>
+
+{if isset($INTRODUCTION) }
+<p>{$INTRODUCTION}</p>
+{/if}
+
+<ul>
+
+  {if isset($search_words) }
+  {foreach from=$search_words item=v}
+  <li>{$v}</li>
+  {/foreach}
+  {/if}
+
+  {if isset($SEARCH_TAGS_MODE) }
+  <li>
+    <p>{if 'AND'==$SEARCH_TAGS_MODE}{'All tags must match'|@translate}{else}{'At least one tag must match'|@translate}{/if}</p>
+    <ul>
+      {foreach from=$search_tags item=v}
+      <li>{$v}</li>
+      {/foreach}
+    </ul>
+  </li>
+  {/if}
+  
+  {if isset($DATE_CREATION) }
+  <li>{$DATE_CREATION}</li>
+  {/if}
+
+  {if isset($DATE_AVAILABLE) }
+  <li>{$DATE_AVAILABLE}</li>
+  {/if}
+
+  {if isset($search_categories) }
+  <li>
+    <p>{'Categories'|@translate}</p>
+
+    <ul>
+      {foreach from=$search_categories item=v}
+      <li>{$v}</li>
+      {/foreach}
+    </ul>
+  </li>
+  {/if}
+  
+</ul>
+
+</div> <!-- content -->
+
Index: /extensions/gally/piwigo-2.0/slideshow.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/slideshow.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/slideshow.tpl	(revision 6105)
@@ -0,0 +1,31 @@
+<!-- **GBL** >SLIDESHOW> -->
+
+<div id="content">
+  <div id="imageHeaderBar">
+    <div class="browsePath slideShow">
+      {if isset($U_SLIDESHOW_STOP) }
+      [ <a href="{$U_SLIDESHOW_STOP}">{'slideshow_stop'|@translate}</a> ]
+      {/if}
+      {if $SHOW_PICTURE_NAME_ON_TITLE }
+        <span class="showtitle">{$current.TITLE}</span>
+      {/if}
+    </div>
+    <div class="imageNumber">{$PHOTO}</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/piwigo-2.0/tags.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/tags.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/tags.tpl	(revision 6105)
@@ -0,0 +1,54 @@
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+{if $display_mode == 'letters'}
+      <li><a id="icon_cloud" class="button" href="{$U_CLOUD}" title="{'show tag cloud'|@translate}"><!--<img src="{$themeconf.icon_dir}/tag_cloud.png" class="button" alt="{'cloud'|@translate}"/>--></a></li>
+{/if}
+
+{if $display_mode == 'cloud'}
+      <li><a id="icon_tag_letters" class="button" href="{$U_LETTERS}" title="{'group by letters'|@translate}"><!--<img src="{$themeconf.icon_dir}/tag_letters.png" class="button" alt="{'letters'|@translate}"/>--></a></li>
+{/if}
+
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!--<img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'Tags'|@translate}</h2>
+  </div>
+
+{if isset($tags)}
+  {if $display_mode == 'cloud'}
+  <div id="fullTagCloud">
+    {foreach from=$tags item=tag}
+    <span><a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{$tag.counter}">{$tag.name}</a></span>
+    {/foreach}
+  </div>
+  {/if}
+
+  {if $display_mode == 'letters'}
+  <table class="tagLetters">
+    <tr>
+      <td valign="top">
+    {foreach from=$letters item=letter}
+  <fieldset class="tagLetter">
+    <legend class="tagLetterLegend">{$letter.TITLE}</legend>
+    <table class="tagLetterContent">
+      {foreach from=$letter.tags item=tag}
+      <tr class="tagLine">
+        <td><a href="{$tag.URL}">{$tag.name}</a></td>
+        <td class="nbEntries">{$pwg->l10n_dec('%d element', '%d elements', $tag.counter)}</td>
+      </tr>
+      {/foreach}
+    </table>
+  </fieldset>
+      {if isset($letter.CHANGE_COLUMN) }
+      </td>
+      <td valign="top">
+      {/if}
+    {/foreach}
+      </td>
+    </tr>
+  </table>
+  {/if}
+{/if}
+
+</div> <!-- content -->
Index: /extensions/gally/piwigo-2.0/theme/graphite/default.conf
===================================================================
--- /extensions/gally/piwigo-2.0/theme/graphite/default.conf	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/graphite/default.conf	(revision 6105)
@@ -0,0 +1,180 @@
+# ------------------------------------------------------------------------------
+# GRUM:GRAPHITE
+# Theme for Piwigo
+# ------------------------------------------------------------------------------
+# file: gally/graphite/default.conf
+# file release: 1.2.0
+# ------------------------------------------------------------------------------
+# author: grum at grum.dnsalias.com
+# << May the Little SpaceFrog be with you >>
+# ------------------------------------------------------------------------------
+# Graphite for template "Gally"
+#
+# see the 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
+#
+# ------------------------------------------------------------------------------
+
+
+# ------- 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'
+
+# 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"
+
+# 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"
+
+# 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=5000
+
+# The 'commentAnimated' option can take theses values :
+#   "yes" => use slide to switch the comment area (slide in/slide out)
+#   "no"  => no effect to switch the comment area (on/off)
+commentAnimated="yes"
+
+# The 'animateDelay' option can take any positive integer value
+# This option define the duration (in milliseconds) of effects
+animateDelay=0
+
+# The 'margin_container' option can take any positive integer value
+# This option define the space between the picture side (left/right) and the
+# window borders.
+# Only used when the 'imageAutoScroll' is set to yes
+margin_container=30
+
+# -- 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="bottom"
+
+# -- 1.2.0 --
+# The 'displayBanner' option can take theses values :
+#   "yes" => display the banner on the picture page
+#   "no"  => hide the banner on the picture page
+displayBanner="no"
+
+# -- 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
+
+# ------- 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="none"
+
+# 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
+#
+# please note that under MSIE, the "auto" option don't work as well as other browser
+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 "none", there is no maximum width applied to the menu
+#
+# please note that under MSIE, 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 = 350
Index: /extensions/gally/piwigo-2.0/theme/graphite/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/graphite/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/graphite/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/graphite/mail-css.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/theme/graphite/mail-css.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/graphite/mail-css.tpl	(revision 6105)
@@ -0,0 +1,9 @@
+{literal}
+body { background-color:#333333; color:#999999;}
+#copyright { font-size:8px; }
+h2 { background-color: #606060;}
+img { border:1px #606060 solid; margin:8px; border-radius:0; -moz-border-radius:0;}
+img:hover { border:1px #fff solid; margin:8px; padding:0px; border-radius:0; -moz-border-radius:0;}
+a { color: #fff; }
+a:hover { color: #fff; }
+{/literal}
Index: /extensions/gally/piwigo-2.0/theme/graphite/theme.css
===================================================================
--- /extensions/gally/piwigo-2.0/theme/graphite/theme.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/graphite/theme.css	(revision 6105)
@@ -0,0 +1,926 @@
+/* -----------------------------------------------------------------------------
+  GRUM:GRAPHITE
+  Theme for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/graphite/theme.css
+  file version: 1.1.0
+  date: 2008-11-11
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  Graphite for template "Gally"
+----------------------------------------------------------------------------- */
+
+
+div.errors {
+  background:#FFB0B0;
+  border:4px solid #A04040;
+  color:#A04040;
+  padding:8px;
+}
+div.errors a {
+  color:#FF0000;
+  font-weight:bold;
+}
+
+div.infos {
+  background:#B0FFB0;
+  border:4px solid #40A040;
+  color:#40A040;
+  padding:8px;
+}
+div.infos a {
+  color:#00FF00;
+  font-weight:bold;
+}
+
+div.errors ul, div.infos ul {
+  text-align:justify;
+  padding-left:0px;
+}
+
+div.errors ul li, div.infos ul li {
+  margin-bottom:4px;
+}
+
+.ui-dialog-overlay {
+  background:#333333;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+}
+
+.ui-dialog-buttonpane {
+  margin-bottom:8px;
+}
+
+
+
+/*
+ page
+*/
+body, #menubar {
+  background-color:#333333;
+  color:#999999;
+}
+
+a {
+  color:#f0f0f0;
+}
+
+#menubar p.totalImages {
+  font-style:italic;
+}
+
+a.button, a.navButton {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+}
+
+/* index.tpl */
+#icon_menu {
+  background:url(./../../icon/menu-show.png);
+}
+#icon_menu:hover {
+  background:url(./../../icon/menu-show_h.png);
+}
+#icon_menu.button2 {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./../../icon/menu-hide.png);
+}
+#icon_menu.button2:hover {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./../../icon/menu-hide_h.png);
+}
+
+
+#icon_caddie {
+  background:url(./../../icon/caddie_add.png);
+}
+#icon_caddie:hover {
+  background:url(./../../icon/caddie_add_h.png);
+}
+
+#icon_category_edit {
+  background:url(./../../icon/category_edit.png);
+}
+#icon_category_edit:hover {
+  background:url(./../../icon/category_edit_h.png);
+}
+
+#icon_search_rules {
+  background:url(./../../icon/search_rules.png);
+}
+#icon_search_rules:hover {
+  background:url(./../../icon/search_rules_h.png);
+}
+
+#icon_start_slideshow {
+  background:url(./../../icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./../../icon/start_slideshow_h.png);
+}
+
+#icon_flat {
+  background:url(./../../icon/flat.png);
+}
+#icon_flat:hover {
+  background:url(./../../icon/flat_h.png);
+}
+
+#icon_normal_mode {
+  background:url(./../../icon/normal_mode.png);
+}
+#icon_normal_mode:hover {
+  background:url(./../../icon/normal_mode_h.png);
+}
+
+#icon_calendar {
+  background:url(./../../icon/calendar.png);
+}
+#icon_calendar:hover {
+  background:url(./../../icon/calendar_h.png);
+}
+
+#icon_calendar_created {
+  background:url(./../../icon/calendar_created.png);
+}
+#icon_calendar_created:hover {
+  background:url(./../../icon/calendar_created_h.png);
+}
+
+/* about.tpl */
+/* comments.tpl */
+/* identification.tpl */
+/* nbm.tpl */
+/* notification.tpl */
+/* password.tpl */
+/* tags.tpl */
+/* profile.tpl */
+/* register.tpl */
+/* upload.tpl */
+#icon_home {
+  background:url(./../../icon/home.png);
+}
+#icon_home:hover {
+  background:url(./../../icon/home_h.png);
+}
+
+/* identification.tpl */
+/* menubar_identification.tpl */
+#icon_lost_password {
+  background:url(./../../icon/lost_password.png);
+}
+#icon_lost_password:hover {
+  background:url(./../../icon/lost_password_h.png);
+}
+
+#icon_register, #icon_register2, #icon_register3 {
+  background:url(./../../icon/register.png);
+}
+#icon_register:hover, #icon_register2:hover, #icon_register3:hover {
+  background:url(./../../icon/register_h.png);
+}
+
+#icon_lost_password, #icon_lost_password2, #icon_lost_password3 {
+  background:url(./../../icon/lost_password.png);
+}
+#icon_lost_password:hover, #icon_lost_password2:hover, #icon_lost_password3:hover {
+  background:url(./../../icon/lost_password_h.png);
+}
+
+/* menubar_categories.tpl */
+#icon_start_filter {
+  background:url(./../../icon/start_filter.png);
+}
+#icon_start_filter:hover {
+  background:url(./../../icon/start_filter_h.png);
+}
+
+#icon_stop_filter {
+  background:url(./../../icon/stop_filter.png);
+}
+#icon_stop_filter:hover {
+  background:url(./../../icon/stop_filter_h.png);
+}
+
+/* picture.tpl */
+#icon_start_slideshow {
+  background:url(./../../icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./../../icon/start_slideshow_h.png);
+}
+
+#icon_stop_slideshow {
+  background:url(./../../icon/stop_slideshow.png);
+}
+#icon_stop_slideshow:hover {
+  background:url(./../../icon/stop_slideshow_h.png);
+}
+
+#icon_metadata {
+  background:url(./../../icon/metadata.png);
+}
+#icon_metadata:hover {
+  background:url(./../../icon/metadata_h.png);
+}
+
+#icon_save {
+  background:url(./../../icon/save.png);
+}
+#icon_save:hover {
+  background:url(./../../icon/save_h.png);
+}
+
+#icon_favorite {
+  background:url(./../../icon/favorite.png);
+}
+#icon_favorite:hover {
+  background:url(./../../icon/favorite_h.png);
+}
+
+#icon_del_favorite {
+  background:url(./../../icon/del_favorite.png);
+}
+#icon_del_favorite:hover {
+  background:url(./../../icon/del_favorite_h.png);
+}
+
+#icon_delall_favorite {
+  background:url(./../../icon/del_favorite.png);
+}
+#icon_delall_favorite:hover {
+  background:url(./../../icon/del_favorite_h.png);
+}
+
+#icon_representative {
+  background:url(./../../icon/representative.png);
+}
+#icon_representative:hover {
+  background:url(./../../icon/representative_h.png);
+}
+
+#icon_preferences {
+  background:url(./../../icon/preferences.png);
+}
+#icon_preferences:hover {
+  background:url(./../../icon/preferences_h.png);
+}
+
+/* tags.tpl */
+#icon_cloud {
+  background:url(./../../icon/tag_cloud.png);
+}
+#icon_cloud:hover {
+  background:url(./../../icon/tag_cloud_h.png);
+}
+
+#icon_tag_letters {
+  background:url(./../../icon/tag_letters.png);
+}
+#icon_tag_letters:hover {
+  background:url(./../../icon/tag_letters_h.png);
+}
+
+/* picture_nav_buttons.tpl */
+#icon_last {
+  background:url(./../../icon/last.png);
+}
+#icon_last:hover {
+  background:url(./../../icon/last_h.png);
+}
+
+#icon_right {
+  background:url(./../../icon/right.png);
+}
+#icon_right:hover {
+  background:url(./../../icon/right_h.png);
+}
+
+#icon_play {
+  background:url(./../../icon/play.png);
+}
+#icon_play:hover {
+  background:url(./../../icon/play_h.png);
+}
+
+#icon_pause {
+  background:url(./../../icon/pause.png);
+}
+#icon_pause:hover {
+  background:url(./../../icon/pause_h.png);
+}
+
+#icon_up {
+  background:url(./../../icon/up.png);
+}
+#icon_up:hover {
+  background:url(./../../icon/up_h.png);
+}
+
+#icon_left {
+  background:url(./../../icon/left.png);
+}
+#icon_left:hover {
+  background:url(./../../icon/left_h.png);
+}
+
+#icon_first {
+  background:url(./../../icon/first.png);
+}
+#icon_first:hover {
+  background:url(./../../icon/first_h.png);
+}
+
+#icon_start_repeat {
+  background:url(./../../icon/start_repeat.png);
+}
+#icon_start_repeat:hover {
+  background:url(./../../icon/start_repeat_h.png);
+}
+
+#icon_stop_repeat {
+  background:url(./../../icon/stop_repeat.png);
+}
+#icon_stop_repeat:hover {
+  background:url(./../../icon/stop_repeat_h.png);
+}
+
+#icon_dec_period {
+  background:url(./../../icon/dec_period.png);
+}
+#icon_dec_period:hover {
+  background:url(./../../icon/dec_period_h.png);
+}
+
+#icon_inc_period {
+  background:url(./../../icon/inc_period.png);
+}
+#icon_inc_period:hover {
+  background:url(./../../icon/inc_period_h.png);
+}
+
+/* popuphelp.tpl */
+/* search_rules.tpl */
+#icon_exit {
+  background:url(./../../icon/exit.png);
+}
+#icon_exit:hover {
+  background:url(./../../icon/exit_h.png);
+}
+
+/* search.tpl */
+#icon_help {
+  background:url(./../../icon/help.png);
+}
+#icon_help:hover {
+  background:url(./../../icon/help_h.png);
+}
+
+
+
+
+/*
+ page : title
+*/
+.titrePage, .navigationBar, #imageHeaderBar {
+  background-color:#606060;
+}
+
+/*
+ page content : thumbnails
+*/
+
+#additional_infoTOP, #additional_infoBOTTOM {
+  border-top:1px solid #404040;
+  border-bottom:1px solid #404040;
+}
+
+.additional_info {
+  border-right:1px #606060 dotted;
+}
+
+#thumbnails {
+  font-size:80%;
+  font-weight:bold;
+}
+
+
+.wrap2 a img{
+  border:1px #707070 solid;
+}
+
+.wrap2 a:hover img{
+  border:1px #f0f0f0 solid;
+}
+
+/*
+  page content : categories thumbnails
+*/
+.thumbnailCategory {
+  border-bottom: 3px #606060 solid;
+  background-color:#404040;
+}
+
+.thumbnailCategory:hover {
+  background-color:#606060;
+}
+
+.illustration a img {
+  border:1px #606060 solid;
+}
+
+.illustration a:hover img {
+  border:1px #f0f0f0 solid;
+}
+
+p.thumbCatDesc {
+  border-top:1px #606060 dotted;
+  text-align:justify;
+}
+
+/*
+ * page :profile
+*/
+form#profile {
+  padding-bottom:20px;
+}
+
+
+/*
+ * page :search
+*/
+form.filter {
+  padding-bottom:20px;
+}
+
+/*
+ * page:help
+*/
+.help {
+  margin:8px;
+}
+
+/*
+ page : copyright
+*/
+#copyright {
+  font-size:10px;
+  border-top:2px #606060 solid;
+  background:#404040;
+}
+
+/*
+ page : menubar
+*/
+#menubar {
+ border:1px #606060 solid;
+ padding-bottom:30px;
+}
+
+#menubar dt {
+ background-color: #606060;
+}
+
+/*
+ calendar bar
+*/
+.calItem, .calItemP, .calItemN {
+  border:1px #606060 solid;
+}
+
+.calItem:hover, .calItemP:hover, .calItemN:hover {
+  background-color:#606060;
+}
+
+.calendarBar {
+  text-align:center;
+}
+
+.calItemP {
+  border-left-width:8px;
+  float:left;
+}
+.calItemN {
+  border-right-width:8px;
+  float:right;
+}
+
+table.calMonth {
+  border:1px #606060 solid;
+  background:transparent url('./../../icon/calendar-bg.png');
+}
+
+table.calMonth thead {
+  background-color:#606060;
+}
+
+table.calMonth tbody {
+  color:#f0f0f0;
+}
+
+table.calMonth tbody td.calDayCellFull, table.calMonth tbody td.calDayCellEmpty {
+  background:#333333;
+  border:1px #606060 solid;
+  overflow:hidden;
+}
+
+
+.calBackDate {
+  color:#000000;
+}
+
+.calendarCalBar {
+  border-bottom:1px dotted #606060;
+  padding-left:10px;
+}
+
+div.calImg {
+  position:relative;
+  left:8px;
+  top:8px;
+}
+
+table.calMonth td.calDayCellFull:hover {
+  background-color:#606060;
+}
+
+table.calMonth {
+  margin-left:auto;
+  margin-right:auto;
+  left:0px;
+}
+
+td.calDayCellEmpty  {
+  color:#606060;
+}
+
+
+/*
+  inputs
+*/
+input[type="text"], input[type="password"], select, textarea, file {
+ font-family: monospace;
+ background: #f0f0f0;
+ color:#333333;
+ border:none;
+ margin:0px;
+}
+
+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;
+}
+
+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:1px #606060 dotted;
+  margin:3px;
+  padding:8px;
+}
+
+fieldset legend {
+  background-color:#333333;
+  padding-left:3px;
+  padding-right:3px;
+}
+
+
+
+/*
+  picture page
+*/
+.imageNumber {
+  border:1px #999999 solid;
+}
+
+#theImgContainer {
+  border:8px #ffffff solid;
+}
+
+#imageHeaderBar {
+  height:20px;
+}
+
+#imageHeaderBar .browsePath h2 {
+  font-weight:normal;
+}
+
+#imageToolBarContainer {
+  top:-2px;
+  border-bottom:1px #606060 solid;
+}
+
+#navThumbPrevContainer {
+  top:-1px;
+  left:0px;
+  height:200px;
+  border-bottom:1px #606060 solid;
+  border-right:1px #606060 solid;
+  background:#404040;
+}
+
+#navThumbNextContainer {
+  top:-1px;
+  right:0px;
+  height:200px;
+  border-bottom:1px #606060 solid;
+  border-left:1px #606060 solid;
+  background:#404040;
+}
+
+.imageToolBarBg {
+  background:#404040;
+  z-index:-1;
+  left:0px;
+}
+
+#navThumbNext, #navThumbPrev {
+  top:53px;
+}
+
+.navThumbPrevContent a img, .navThumbNextContent a img {
+  border:1px #606060 solid;
+}
+
+.navThumbPrevContent a:hover img, .navThumbNextContent a:hover img {
+  border:1px #f0f0f0 solid;
+}
+
+#imageToolBar {
+  top:0px;
+}
+
+#imageToolBar h2 {
+  color:#f0f0f0;
+  margin-top:6px;
+}
+
+#imageInfosContainer {
+  margin-left:140px;
+  margin-right:140px;
+}
+
+
+.infoTable {
+  margin:auto;
+  font-size:90%;
+  max-width:80%;
+  color:#f0f0f0;
+  z-index:200;
+  border-collapse:collapse;
+  position:relative;
+  left:25px;
+}
+
+.infoTable td {
+  padding-bottom:5px;
+  padding-left:4px;
+  padding-right:50px;
+}
+
+.infoTable .label {
+  font-weight:bold;
+  border-left:1px dotted #606060;
+}
+
+.infoTable tr:hover {
+  background-color:#606060;
+}
+.infoTable tr.emptyrow:hover {
+  background:transparent;
+}
+.infoTable tr.emptyrow td {
+  height:4px;
+  padding:0px;
+}
+
+
+#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;
+}
+
+#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;
+}
+
+#rateForm input[type="button"],
+#rateForm  input[type="button"]:active,
+#rateForm input[type="submit"],
+#rateForm  input[type="submit"]:active {
+  cursor:pointer;
+  border:none;
+  padding:0;
+}
+
+
+#theComments {
+  background:#404040;
+}
+
+#theCommentBG {
+  position:absolute;
+  top:0;
+  width:100%;
+  z-index:-1;
+}
+
+#theComments div.navigationBar {
+  bottom:0;
+  position:absolute;
+  width:100%;
+}
+
+.commentDetail {
+  border-bottom:1px dotted #606060;
+}
+
+.commentDetail ul {
+  list-style-type:none;
+  padding:4px;
+}
+
+.commentDetail .description .author,
+.commentDetail .description .date {
+  font-weight:bold;
+  color:#f0f0f0;
+}
+
+.commentDetail .description blockquote {
+  margin:0;
+  padding:4px 4px 8px 12px;
+  text-align:justify;
+}
+
+#titleComment h3:hover {
+  background:#606060;
+}
+
+.comment_icon {
+  height:10px;
+  position:absolute;
+  right:0;
+  top:2px;
+}
+
+
+#imageMetaBg {
+  position:absolute;
+  width:100%;
+  height:100%;
+  z-index:-1;
+}
+
+#theTabs {
+}
+
+#theTabsBg {
+  background:#404040;
+  border-top:1px solid #606060;
+  position:absolute;
+  top:20px;
+}
+
+#theTabsheets li.tab {
+  background-color:#404040;
+  border:1px solid #606060;
+  display:block;
+  float:left;
+  margin:0 0 0 4px;
+  padding:2px 8px;
+  position:relative;
+}
+
+#theTabsheets li.tab:hover {
+  background-color:#606060;
+}
+
+#theTabsheets li.ui-tabs-selected:hover  {
+  background-color:#404040;
+}
+
+#theTabsheets li.ui-tabs-selected {
+  padding:4px 8px;
+  top:-5px;
+  border-top-width:3px;
+  border-bottom-width:0px;
+}
+
+
+#theTabsContainer .navigationBar {
+  text-align:right;
+}
+
+
+/*
+  tags
+*/
+
+#fullTagCloud SPAN a:hover {
+  background:#606060;
+}
+
+#menuTagCloud SPAN {
+  margin:0px;
+}
+
+.nbEntries {
+  text-align:right;
+}
+
+.tagaddbutton {
+  left:-4px;
+  position:relative;
+  top:-3px;
+}
+
+
+.mandatorystar {
+  color:#A04040;
+}
+
+.mandatorynfo {
+  font-size:90%;
+  margin:0 0 4px 8px
+}
+
+/*
+  help
+*/
+#thePopuphelpPage h1 {
+  background:#606060;
+}
+
+
+/*
+ vd language switch plugin
+*/
+.menuf ul li a, .menuf ul li a:visited {
+  height:27px;
+  line-height:27px;
+  margin-top:5px;
+}
+
+.menuf ul.flag-pan .flags:hover, .menuf a img.flags {
+  border:1px solid #606060;
+}
+
+.menuf ul.flag-pan .flags {
+  border:1px solid #303030;
+}
+
+ul.flag-pan {
+  background-color:#404040;
+  border:2px solid #606060;
+}
+
+/*
+ * PWG Stuff plugin compatibility
+*/
+div.stuffs {
+  margin:0px;
+}
+
+div.stuffs h2 {
+  margin-top:0px;
+}
+
+/*
+ * Comment editor compatibility
+*/
+div#ce-content.content, div#ce-message-block.content {
+  background-color:#333333;
+  border:2px solid #606060;
+}
+
Index: /extensions/gally/piwigo-2.0/theme/graphite/themeconf.inc.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/graphite/themeconf.inc.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/graphite/themeconf.inc.php	(revision 6105)
@@ -0,0 +1,11 @@
+<?php
+$themeconf = array(
+  'template' => 'gally',
+  'theme' => 'graphite',
+  'template_dir' => 'template/gally',
+  'icon_dir' => 'template/gally/icon',
+  'admin_icon_dir' => 'template/gally/icon',
+  'mime_icon_dir' => 'template/gally/icon/mimetypes/',
+  'local_head' => '<!-- no theme specific head content -->',
+);
+?>
Index: /extensions/gally/piwigo-2.0/theme/grum-dark-II/default.conf
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/default.conf	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/default.conf	(revision 6105)
@@ -0,0 +1,177 @@
+# ------------------------------------------------------------------------------
+# GRUM:DARK-II
+# Theme for Piwigo
+# ------------------------------------------------------------------------------
+# file: gally/grum-dark-II/default.conf
+# file release: 1.2.0
+# ------------------------------------------------------------------------------
+# author: grum at grum.dnsalias.com
+# << May the Little SpaceFrog be with you >>
+# ------------------------------------------------------------------------------
+# Grum-dark-II for template "Gally"
+#
+# see the 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
+#
+# ------------------------------------------------------------------------------
+
+
+# ------- 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"
+
+# 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"
+
+
+# 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="fade"
+
+# 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=5000
+
+# The 'animateDelay' option can take any positive integer value
+# This option define the duration (in milliseconds) of effects
+animateDelay=250
+
+# The 'margin_container' option can take any positive integer value
+# This option define the space between the picture side (left/right) and the
+# window borders.
+# Only used when the 'imageAutoScroll' is set to yes
+margin_container=30
+
+# -- 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="yes"
+
+# -- 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="bottom"
+
+# -- 1.2.0 --
+# The 'displayBanner' option can take theses values :
+#   "yes" => display the banner on the picture page
+#   "no"  => hide the banner on the picture page
+displayBanner="no"
+
+# -- 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
+
+
+
+
+# ------- 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="fade"
+
+# 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, 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 = 350
Index: /extensions/gally/piwigo-2.0/theme/grum-dark-II/icon/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/icon/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/icon/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/grum-dark-II/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/grum-dark-II/mail-css.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/mail-css.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/mail-css.tpl	(revision 6105)
@@ -0,0 +1,9 @@
+{literal}
+body { background-color:#000; color:#fff;}
+#copyright { font-size:8px; }
+h2 { background-color: #303030;}
+img { border:1px #303030 solid; margin:8px; border-radius:0; -moz-border-radius:0;}
+img:hover { border:1px #fff solid; margin:8px; padding:0px; border-radius:0; -moz-border-radius:0;}
+a { color: #52ff97; }
+a:hover { color: #ffff80; }
+{/literal}
Index: /extensions/gally/piwigo-2.0/theme/grum-dark-II/theme.css
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/theme.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/theme.css	(revision 6105)
@@ -0,0 +1,1000 @@
+/* -----------------------------------------------------------------------------
+  GRUM:DARK-II
+  Theme for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/grum-dark II/theme.css
+  file version: 1.2.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  Grum-dark II for template "Gally"
+----------------------------------------------------------------------------- */
+
+div.errors {
+  background:#FFB0B0;
+  border:4px solid #802020;
+  color:#802020;
+  padding:8px;
+}
+div.errors a {
+  color:#800000;
+  font-weight:bold;
+}
+
+div.infos {
+  background:#B0FFB0;
+  border:4px solid #208020;
+  color:#208020;
+  padding:8px;
+}
+div.infos a {
+  color:#008000;
+  font-weight:bold;
+}
+
+div.errors ul, div.infos ul {
+  text-align:justify;
+  padding-left:0px;
+}
+
+div.errors ul li, div.infos ul li {
+  margin-bottom:4px;
+}
+
+.ui-dialog-overlay {
+  background:#101010;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+}
+
+.ui-dialog-buttonpane {
+  margin-bottom:8px;
+}
+
+
+/*
+ page
+*/
+body, #menubar {
+  background:#000000 url(./icon/backgd.png) repeat scroll 0 0;;
+  color:#DEDEDE;
+}
+
+a {
+  color: #52ff97;
+}
+
+A:hover {
+  color: #ffff80;
+}
+
+
+a.button, a.navButton {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+}
+
+/* index.tpl */
+#icon_menu {
+  background:url(./icon/menu-show.png);
+}
+#icon_menu:hover {
+  background:url(./icon/menu-show_h.png);
+}
+
+#icon_menu.button2 {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./icon/menu-hide.png);
+}
+#icon_menu.button2:hover {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./icon/menu-hide_h.png);
+}
+
+
+#icon_caddie {
+  background:url(./icon/caddie_add.png);
+}
+#icon_caddie:hover {
+  background:url(./icon/caddie_add_h.png);
+}
+
+#icon_category_edit {
+  background:url(./icon/category_edit.png);
+}
+#icon_category_edit:hover {
+  background:url(./icon/category_edit_h.png);
+}
+
+#icon_search_rules {
+  background:url(./icon/search_rules.png);
+}
+#icon_search_rules:hover {
+  background:url(./icon/search_rules_h.png);
+}
+
+#icon_start_slideshow {
+  background:url(./icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./icon/start_slideshow_h.png);
+}
+
+#icon_flat {
+  background:url(./icon/flat.png);
+}
+#icon_flat:hover {
+  background:url(./icon/flat_h.png);
+}
+
+#icon_normal_mode {
+  background:url(./icon/normal_mode.png);
+}
+#icon_normal_mode:hover {
+  background:url(./icon/normal_mode_h.png);
+}
+
+#icon_calendar {
+  background:url(./icon/calendar.png);
+}
+#icon_calendar:hover {
+  background:url(./icon/calendar_h.png);
+}
+
+#icon_calendar_created {
+  background:url(./icon/calendar_created.png);
+}
+#icon_calendar_created:hover {
+  background:url(./icon/calendar_created_h.png);
+}
+
+/* about.tpl */
+/* comments.tpl */
+/* identification.tpl */
+/* nbm.tpl */
+/* notification.tpl */
+/* password.tpl */
+/* tags.tpl */
+/* profile.tpl */
+/* register.tpl */
+/* upload.tpl */
+#icon_home {
+  background:url(./icon/home.png);
+}
+#icon_home:hover {
+  background:url(./icon/home_h.png);
+}
+
+/* identification.tpl */
+/* menubar_identification.tpl */
+#icon_lost_password {
+  background:url(./icon/lost_password.png);
+}
+#icon_lost_password:hover {
+  background:url(./icon/lost_password_h.png);
+}
+
+#icon_register, #icon_register2, #icon_register3 {
+  background:url(./icon/register.png);
+}
+#icon_register:hover, #icon_register2:hover, #icon_register3:hover {
+  background:url(./icon/register_h.png);
+}
+
+#icon_lost_password, #icon_lost_password2, #icon_lost_password3 {
+  background:url(./icon/lost_password.png);
+}
+#icon_lost_password:hover, #icon_lost_password2:hover, #icon_lost_password3:hover {
+  background:url(./icon/lost_password_h.png);
+}
+
+/* menubar_categories.tpl */
+#icon_start_filter {
+  background:url(./icon/start_filter.png);
+}
+#icon_start_filter:hover {
+  background:url(./icon/start_filter_h.png);
+}
+
+#icon_stop_filter {
+  background:url(./icon/stop_filter.png);
+}
+#icon_stop_filter:hover {
+  background:url(./icon/stop_filter_h.png);
+}
+
+/* picture.tpl */
+#icon_start_slideshow {
+  background:url(./icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./icon/start_slideshow_h.png);
+}
+
+#icon_stop_slideshow {
+  background:url(./icon/stop_slideshow.png);
+}
+#icon_stop_slideshow:hover {
+  background:url(./icon/stop_slideshow_h.png);
+}
+
+#icon_metadata {
+  background:url(./icon/metadata.png);
+}
+#icon_metadata:hover {
+  background:url(./icon/metadata_h.png);
+}
+
+#icon_save {
+  background:url(./icon/save.png);
+}
+#icon_save:hover {
+  background:url(./icon/save_h.png);
+}
+
+#icon_favorite {
+  background:url(./icon/favorite.png);
+}
+#icon_favorite:hover {
+  background:url(./icon/favorite_h.png);
+}
+
+#icon_del_favorite {
+  background:url(./icon/del_favorite.png);
+}
+#icon_del_favorite:hover {
+  background:url(./icon/del_favorite_h.png);
+}
+
+#icon_delall_favorite {
+  background:url(./../../icon/del_favorite.png);
+}
+#icon_delall_favorite:hover {
+  background:url(./../../icon/del_favorite_h.png);
+}
+
+#icon_representative {
+  background:url(./icon/representative.png);
+}
+#icon_representative:hover {
+  background:url(./icon/representative_h.png);
+}
+
+#icon_preferences {
+  background:url(./icon/preferences.png);
+}
+#icon_preferences:hover {
+  background:url(./icon/preferences_h.png);
+}
+
+/* tags.tpl */
+#icon_cloud {
+  background:url(./icon/tag_cloud.png);
+}
+#icon_cloud:hover {
+  background:url(./icon/tag_cloud_h.png);
+}
+
+#icon_tag_letters {
+  background:url(./icon/tag_letters.png);
+}
+#icon_tag_letters:hover {
+  background:url(./icon/tag_letters_h.png);
+}
+
+/* picture_nav_buttons.tpl */
+#icon_last {
+  background:url(./icon/last.png);
+}
+#icon_last:hover {
+  background:url(./icon/last_h.png);
+}
+
+#icon_right {
+  background:url(./icon/right.png);
+}
+#icon_right:hover {
+  background:url(./icon/right_h.png);
+}
+
+#icon_play {
+  background:url(./icon/play.png);
+}
+#icon_play:hover {
+  background:url(./icon/play_h.png);
+}
+
+#icon_pause {
+  background:url(./icon/pause.png);
+}
+#icon_pause:hover {
+  background:url(./icon/pause_h.png);
+}
+
+#icon_up {
+  background:url(./icon/up.png);
+}
+#icon_up:hover {
+  background:url(./icon/up_h.png);
+}
+
+#icon_left {
+  background:url(./icon/left.png);
+}
+#icon_left:hover {
+  background:url(./icon/left_h.png);
+}
+
+#icon_first {
+  background:url(./icon/first.png);
+}
+#icon_first:hover {
+  background:url(./icon/first_h.png);
+}
+
+#icon_start_repeat {
+  background:url(./icon/start_repeat.png);
+}
+#icon_start_repeat:hover {
+  background:url(./icon/start_repeat_h.png);
+}
+
+#icon_stop_repeat {
+  background:url(./icon/stop_repeat.png);
+}
+#icon_stop_repeat:hover {
+  background:url(./icon/stop_repeat_h.png);
+}
+
+#icon_dec_period {
+  background:url(./icon/dec_period.png);
+}
+#icon_dec_period:hover {
+  background:url(./icon/dec_period_h.png);
+}
+
+#icon_inc_period {
+  background:url(./icon/inc_period.png);
+}
+#icon_inc_period:hover {
+  background:url(./icon/inc_period_h.png);
+}
+
+/* popuphelp.tpl */
+/* search_rules.tpl */
+#icon_exit {
+  background:url(./icon/exit.png);
+}
+#icon_exit:hover {
+  background:url(./icon/exit_h.png);
+}
+
+/* search.tpl */
+#icon_help {
+  background:url(./icon/help.png);
+}
+#icon_help:hover {
+  background:url(./icon/help_h.png);
+}
+
+
+
+
+/*
+ page : title
+*/
+.titrePage {
+  height:31px;
+  padding:0 12px 0 30px;
+}
+
+.titrePage, .navigationBar, #imageHeaderBar {
+  background-color:#303030;
+}
+
+.titrePage .categoryActions {
+  padding-top:2px;
+}
+
+/*
+ page content : thumbnails
+*/
+
+#additional_infoTOP, #additional_infoBOTTOM {
+  background-color:#101010;
+  -moz-border-radius:8px;
+  -webkit-border-radius:8px;
+  -khtml-border-radius:8px;
+  border-radius:8px;
+}
+
+.additional_info {
+  border-right:1px #303030 dotted;
+  padding:8px;
+}
+
+#thumbnails {
+  font-size:80%;
+  font-weight:bold;
+}
+
+/*
+  page content : categories thumbnails
+*/
+
+#subContent h2 {
+  font-size: 150%;
+  border-bottom:1px solid #303030;
+  padding-bottom:4px;
+}
+
+.thumbnailCategory {
+  border: none;
+  border-bottom: 1px #303030 solid;
+  background-color: #101010;
+  display:block;
+  margin:8px;
+  padding:8px 8px 0 4px;
+}
+
+.thumbnailCategory:hover {
+  background-color:#303030;
+}
+
+ul.thumbnailCategories {
+margin:4px;
+padding:0px;
+top:0px;
+}
+
+ul.thumbnailCategories li {
+  width:50%;
+}
+
+#thumbContents {
+  margin:0px;
+}
+
+.illustration {
+  text-align:center;
+}
+
+.illustration a img {
+  border:2px #ffffff solid;
+}
+
+p.thumbCatDesc {
+  border-top:1px #303030 dotted;
+  text-align:justify;
+}
+
+p.thumbCatDescNbImg {
+  text-align:right;
+  font-style:italic;
+}
+
+div ul.thumbnails img, #linkPrev img, #linkNext img {
+  border:1px solid #FFFFFF;
+}
+
+div ul.thumbnails span.wrap2 {
+  display:table-cell;
+  margin:0;
+  vertical-align:middle;
+  height:140px;
+  width:140px;
+  -moz-border-radius: 8px;  /* round corners with Geko */
+  -webkit-border-radius: 8px;  /* round corners with Geko */
+  -khtml-border-radius: 8px;  /* round corners with Geko */
+  border-radius: 8px; /* round corners with CSS3 compliant browsers */
+  background-color:#101010;
+  border:none;
+}
+
+div ul.thumbnails SPAN.wrap2:hover {
+  background-color: #FFFFFF;
+}
+
+table.wrap1 {
+  padding:25px 50px;
+}
+
+/*
+ * page :profile
+*/
+form#profile {
+  padding-bottom:20px;
+}
+
+/*
+ * page :search
+*/
+form.filter {
+  padding-bottom:20px;
+}
+
+/*
+ * page:help
+*/
+.help {
+  margin:8px;
+}
+
+/*
+ page : copyright
+*/
+#copyright {
+  font-size:10px;
+  border-top:1px #303030 solid;
+  background:#101010;
+}
+
+/*
+ page : menubar
+*/
+#menubar {
+  border:1px #303030 solid;
+  padding-bottom:30px;
+}
+
+#menubar dt {
+  background-color: #303030;
+  font-size:120%;
+  font-weight:bold;
+}
+
+#menubar ul {
+  list-style-type:square;
+  font-size:92%;
+}
+
+#menubar ul ul {
+  font-size:100%;
+  padding-bottom:0px;
+  padding-top:0px;
+}
+
+#menubar dt .button {
+  right:-3px;
+  top:-5px;
+}
+
+#menubar p.totalImages {
+  font-size:80%;
+}
+
+
+/*
+ calendar bar
+*/
+.calendarBar {
+  margin-top:2px;
+  text-align:center;
+}
+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 gray solid;
+  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 #101010;
+  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:#303030;
+  padding-left:12px;
+  padding-top:8px;
+}
+
+div.calImg {
+  position:relative;
+  left:8px;
+  top:8px;
+}
+
+
+.calendarCalBar {
+  border-bottom:1px dotted #606060;
+  padding-left:10px;
+}
+
+table.calMonth {
+  margin-left:auto;
+  margin-right:auto;
+  left:0px;
+}
+
+table.calMonth td.calDayCellFull:hover {
+  background-color:#ffffff;
+}
+
+
+
+/*
+  inputs
+*/
+input[type="text"], input[type="password"], select, textarea, file {
+ font-family: monospace;
+ background: #f0f0f0;
+ color:#333333;
+ border:none;
+ margin:0px;
+}
+
+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;
+}
+
+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:1px #606060 dotted;
+  margin:3px;
+  padding:8px;
+}
+
+fieldset legend {
+  padding-left:3px;
+  padding-right:3px;
+  background:#000000;
+}
+
+
+
+/*
+  picture page
+*/
+.imageNumber {
+  border:1px #999999 solid;
+}
+
+#theImgContainer {
+  border:8px #ffffff solid;
+}
+
+#imageHeaderBar .browsePath h2 {
+  font-weight:normal;
+}
+
+#imageToolBar {
+  height:37px;
+  top:0px;
+  overflow:visible;
+}
+
+#imageToolBarContainer {
+  border-bottom:1px #606060 solid;
+}
+
+.imageToolBarBg {
+  background:#101010;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+  z-index:-1;
+  left:0px;
+}
+
+#imageToolBar h2 {
+  color:#f0f0f0;
+  margin-top:6px;
+}
+
+#navThumbNext, #navThumbPrev {
+  top:265px;
+}
+
+#navThumbPrevContainer, #navThumbNextContainer {
+  height:200px;
+}
+
+.navThumbPrevContent a img, .navThumbNextContent a img {
+  border:1px #606060 solid;
+}
+
+.navThumbPrevContent a:hover img, .navThumbNextContent a:hover img {
+  border:1px #f0f0f0 solid;
+}
+
+
+
+#imageInfos {
+  z-index:100;
+}
+
+#imageInfosContainer {
+  padding-bottom:8px;
+}
+
+.infoTable {
+  margin:auto;
+  font-size:90%;
+  max-width:80%;
+  color:#f0f0f0;
+  z-index:200;
+  border-collapse:collapse;
+  position:relative;
+  left:25px;
+}
+
+.infoTable td {
+  padding-bottom:5px;
+  padding-left:4px;
+  padding-right:50px;
+}
+
+.infoTable .label {
+  font-weight:bold;
+  border-left:1px dotted #606060;
+}
+
+.infoTable tr:hover {
+  background-color:#303030;
+}
+.infoTable tr.emptyrow:hover {
+  background:transparent;
+}
+.infoTable tr.emptyrow td {
+  height:4px;
+  padding:0px;
+}
+
+
+#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;
+}
+
+#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;
+}
+
+#rateForm input[type="button"],
+#rateForm  input[type="button"]:active,
+#rateForm input[type="submit"],
+#rateForm  input[type="submit"]:active {
+  cursor:pointer;
+  border:none;
+  padding:0;
+}
+
+.commentDetail {
+  border-bottom:1px dotted #606060;
+}
+
+.commentDetail ul {
+  list-style-type:none;
+  padding:4px;
+}
+
+.commentDetail .description .author,
+.commentDetail .description .date {
+  font-weight:bold;
+  color:#f0f0f0;
+}
+
+.commentDetail .description blockquote {
+  margin:0;
+  padding:4px 4px 8px 12px;
+  text-align:justify;
+}
+
+#titleComment h3:hover {
+  background:#303030;
+}
+
+.comment_icon {
+  margin-left:5px;
+  padding:0;
+  position:absolute;
+}
+
+/*
+ * tabs
+*/
+#theTabs {
+  border-top:1px solid #606060;
+}
+
+#theTabsBg {
+  background:#101010;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+}
+
+#theTabsheets li.tab {
+  background-color:#303030;
+  border:1px solid #606060;
+  display:block;
+  float:left;
+  margin:0 0 0 4px;
+  padding:2px 8px;
+  position:relative;
+  top:-2px;
+}
+
+#theTabsheets li.ui-tabs-selected {
+  padding:4px 8px;
+  top:-6px;
+  border-top-width:3px;
+}
+
+#theTabsContainer .navigationBar {
+  text-align:right;
+}
+
+
+/*
+  tags
+*/
+
+#fullTagCloud SPAN a:hover {
+  background:#303030;
+  -moz-border-radius:3px;
+  -webkit-border-radius:3px;
+  -khtml-border-radius:3px;
+  border-radius:3px;
+}
+
+#menuTagCloud SPAN {
+  margin:0px;
+}
+
+#fullTagCloud span a {
+  padding:4px;
+  margin:0px;
+}
+
+.nbEntries {
+  text-align:right;
+}
+
+.tagaddbutton {
+  left:-4px;
+  position:relative;
+  top:-3px;
+}
+
+
+.mandatorystar {
+  color:#A04040;
+}
+
+.mandatorynfo {
+  font-size:90%;
+  margin:0 0 4px 8px
+}
+
+/*
+  help
+*/
+#thePopuphelpPage h1 {
+  background:#606060;
+}
+
+/*
+ * diaporama
+*/
+#imageHeaderBar h2.showtitle {
+  padding-top:0px;
+}
+
+/*
+ vd language switch plugin
+*/
+.menuf ul li a, .menuf ul li a:visited {
+  height:27px;
+  line-height:27px;
+  margin-top:5px;
+}
+
+.menuf ul.flag-pan .flags:hover, .menuf a img.flags {
+  border:1px solid #303030;
+}
+
+.menuf ul.flag-pan .flags {
+  border:1px solid #000000;
+}
+
+ul.flag-pan {
+  background:#000000 url(./icon/backgd.png) repeat scroll 0 0;
+  border:1px solid #303030;
+}
+
+/*
+ * PWG Stuff plugin compatibility
+*/
+div.stuffs {
+  margin:0px;
+}
+
+div.stuffs h2 {
+  margin-top:0px;
+}
+
+/*
+ * Comment editor compatibility
+*/
+div#ce-content.content, div#ce-message-block.content  {
+  background:#000000 url(./icon/backgd.png) repeat scroll 0 0;
+  border:1px solid #606060;
+}
+
+div#ce-content h2, div#ce-message-block h2 {
+  padding-top:4px;
+}
+
+div#ce-content.content ul.categoryActions {
+  padding-top:1px;
+}
+
+div#ce-comments {
+  padding-bottom:0;
+  padding-top:16px;
+}
+
+
+
Index: /extensions/gally/piwigo-2.0/theme/grum-dark-II/themeconf.inc.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/grum-dark-II/themeconf.inc.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/grum-dark-II/themeconf.inc.php	(revision 6105)
@@ -0,0 +1,13 @@
+<?php
+$themeconf = array(
+  'template' => 'gally',
+  'theme' => 'grum-dark-II',
+  'template_dir' => 'template/gally',
+  'icon_dir' => 'template/gally/theme/grum-dark-II/icon',
+  'admin_icon_dir' => 'template/gally/icon',
+  'mime_icon_dir' => 'template/gally/icon/mimetypes/',
+  'local_head' => '<!-- no theme specific head content -->',
+);
+global $user;
+$user["expand"] = false;
+?>
Index: /extensions/gally/piwigo-2.0/theme/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/lapis-lazuli/default.conf
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/default.conf	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/default.conf	(revision 6105)
@@ -0,0 +1,179 @@
+# ------------------------------------------------------------------------------
+# LAPIS-LAZULI
+# Theme for Piwigo
+# ------------------------------------------------------------------------------
+# file: gally/lapis-lazuli/default.conf
+# file release: 1.2.0
+# ------------------------------------------------------------------------------
+# author: grum at piwigo.org
+# << May the Little SpaceFrog be with you >>
+# ------------------------------------------------------------------------------
+# Lapis-Lazuli for template "Gally"
+#
+# see the 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
+#
+# ------------------------------------------------------------------------------
+
+
+# ------- 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"
+
+# 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"
+
+
+# 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"
+
+# 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 'margin_container' option can take any positive integer value
+# This option define the space between the picture side (left/right) and the
+# window borders.
+# Only used when the 'imageAutoScroll' is set to yes
+margin_container=30
+
+# -- 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.2.0 --
+# The 'displayBanner' option can take theses values :
+#   "yes" => display the banner on the picture page
+#   "no"  => hide the banner on the picture page
+displayBanner="yes"
+
+# -- 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
+
+
+
+
+# ------- 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, 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
+
+
Index: /extensions/gally/piwigo-2.0/theme/lapis-lazuli/icon/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/icon/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/icon/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/lapis-lazuli/index.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/index.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/index.php	(revision 6105)
@@ -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/piwigo-2.0/theme/lapis-lazuli/mail-css.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/mail-css.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/mail-css.tpl	(revision 6105)
@@ -0,0 +1,37 @@
+{literal}
+body {
+  background:#303030 url({/literal}{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/icon/backgd.png{literal});
+  color:#dedede;
+}
+#the_page {
+  width:1012px;
+  margin:auto;
+}
+#content {
+  width:1012px;
+  background:transparent url({/literal}{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/icon/skin_page.png{literal}) repeat-y;
+  color:#dedede;
+  margin:0px;
+  padding:32px;
+}
+#header {
+  width:1012px;
+  height:120px;
+  background:transparent url({/literal}{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/icon/skin_top.png{literal}) no-repeat;
+}
+#copyright {
+  background:transparent url({/literal}{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/icon/skin_bottom.png{literal}) no-repeat;
+  font-size:9px;
+  height:45px;
+  padding:16px;
+  width:1012px;
+}
+
+h2 { background: #303030 url({/literal}{$ROOT_URL}template/{$themeconf.template}/theme/{$themeconf.theme}/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/piwigo-2.0/theme/lapis-lazuli/theme.css
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/theme.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/theme.css	(revision 6105)
@@ -0,0 +1,1399 @@
+/* -----------------------------------------------------------------------------
+  LAPIS-LAZULI
+  Theme for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/lapis-lazuli/theme.css
+  file version: 1.2.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  Lapis-Lazuli for template "Gally"
+----------------------------------------------------------------------------- */
+
+div.errors {
+  background:#FFB0B0;
+  border:4px solid #802020;
+  color:#802020;
+  padding:8px;
+}
+div.errors a {
+  color:#800000;
+  font-weight:bold;
+}
+
+div.infos {
+  background:#B0FFB0;
+  border:4px solid #208020;
+  color:#208020;
+  padding:8px;
+}
+div.infos a {
+  color:#008000;
+  font-weight:bold;
+}
+
+div.errors ul, div.infos ul {
+  text-align:justify;
+  padding-left:0px;
+}
+
+div.errors ul li, div.infos ul li {
+  margin-bottom:4px;
+}
+
+.ui-dialog-overlay {
+  background:#101010;
+  opacity:0.88;
+  filter:alpha(opacity:88);
+}
+
+.ui-dialog-buttonpane {
+  margin-bottom:8px;
+}
+
+
+/*
+ page
+*/
+
+body {
+  background:#303030 url(./icon/backgd.png) repeat scroll 0 0;
+  color:#dedede;
+}
+
+#the_page {
+  display:block;
+  margin:auto;
+  width:1012px;
+  background:transparent;
+}
+
+a {
+  color: #0066cc;
+}
+
+A:hover {
+  color: #F07D00;
+}
+
+
+a.button, a.navButton {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+}
+
+
+
+
+
+/* index.tpl */
+#icon_menu {
+  background:url(./icon/menu-show.png);
+}
+#icon_menu:hover {
+  background:url(./icon/menu-show_h.png);
+}
+
+#icon_menu.button2 {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./icon/menu-hide.png);
+}
+#icon_menu.button2:hover {
+  display:block;
+  display:inline-block;
+  /*display:table-cell;*/
+  width:28px;
+  height:28px;
+  background:url(./icon/menu-hide_h.png);
+}
+
+
+#icon_caddie {
+  background:url(./icon/caddie_add.png);
+}
+#icon_caddie:hover {
+  background:url(./icon/caddie_add_h.png);
+}
+
+#icon_category_edit {
+  background:url(./icon/category_edit.png);
+}
+#icon_category_edit:hover {
+  background:url(./icon/category_edit_h.png);
+}
+
+#icon_search_rules {
+  background:url(./icon/search_rules.png);
+}
+#icon_search_rules:hover {
+  background:url(./icon/search_rules_h.png);
+}
+
+#icon_start_slideshow {
+  background:url(./icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./icon/start_slideshow_h.png);
+}
+
+#icon_flat {
+  background:url(./icon/flat.png);
+}
+#icon_flat:hover {
+  background:url(./icon/flat_h.png);
+}
+
+#icon_normal_mode {
+  background:url(./icon/normal_mode.png);
+}
+#icon_normal_mode:hover {
+  background:url(./icon/normal_mode_h.png);
+}
+
+#icon_calendar {
+  background:url(./icon/calendar.png);
+}
+#icon_calendar:hover {
+  background:url(./icon/calendar_h.png);
+}
+
+#icon_calendar_created {
+  background:url(./icon/calendar_created.png);
+}
+#icon_calendar_created:hover {
+  background:url(./icon/calendar_created_h.png);
+}
+
+/* about.tpl */
+/* comments.tpl */
+/* identification.tpl */
+/* nbm.tpl */
+/* notification.tpl */
+/* password.tpl */
+/* tags.tpl */
+/* profile.tpl */
+/* register.tpl */
+/* upload.tpl */
+#icon_home {
+  background:url(./icon/home.png);
+}
+#icon_home:hover {
+  background:url(./icon/home_h.png);
+}
+
+/* identification.tpl */
+/* menubar_identification.tpl */
+#icon_lost_password {
+  background:url(./icon/lost_password.png);
+}
+#icon_lost_password:hover {
+  background:url(./icon/lost_password_h.png);
+}
+
+#icon_register, #icon_register2, #icon_register3 {
+  background:url(./icon/register.png);
+}
+#icon_register:hover, #icon_register2:hover, #icon_register3:hover {
+  background:url(./icon/register_h.png);
+}
+
+#icon_lost_password, #icon_lost_password2, #icon_lost_password3 {
+  background:url(./icon/lost_password.png);
+}
+#icon_lost_password:hover, #icon_lost_password2:hover, #icon_lost_password3:hover {
+  background:url(./icon/lost_password_h.png);
+}
+
+/* menubar_categories.tpl */
+#icon_start_filter {
+  background:url(./icon/start_filter.png);
+}
+#icon_start_filter:hover {
+  background:url(./icon/start_filter_h.png);
+}
+
+#icon_stop_filter {
+  background:url(./icon/stop_filter.png);
+}
+#icon_stop_filter:hover {
+  background:url(./icon/stop_filter_h.png);
+}
+
+/* picture.tpl */
+#icon_start_slideshow {
+  background:url(./icon/start_slideshow.png);
+}
+#icon_start_slideshow:hover {
+  background:url(./icon/start_slideshow_h.png);
+}
+
+#icon_stop_slideshow {
+  background:url(./icon/stop_slideshow.png);
+}
+#icon_stop_slideshow:hover {
+  background:url(./icon/stop_slideshow_h.png);
+}
+
+#icon_metadata {
+  background:url(./icon/metadata.png);
+}
+#icon_metadata:hover {
+  background:url(./icon/metadata_h.png);
+}
+
+#icon_save {
+  background:url(./icon/save.png);
+}
+#icon_save:hover {
+  background:url(./icon/save_h.png);
+}
+
+#icon_favorite {
+  background:url(./icon/favorite.png);
+}
+#icon_favorite:hover {
+  background:url(./icon/favorite_h.png);
+}
+
+#icon_del_favorite {
+  background:url(./icon/del_favorite.png);
+}
+#icon_del_favorite:hover {
+  background:url(./icon/del_favorite_h.png);
+}
+
+#icon_delall_favorite {
+  background:url(./../../icon/del_favorite.png);
+}
+#icon_delall_favorite:hover {
+  background:url(./../../icon/del_favorite_h.png);
+}
+
+#icon_representative {
+  background:url(./icon/representative.png);
+}
+#icon_representative:hover {
+  background:url(./icon/representative_h.png);
+}
+
+#icon_preferences {
+  background:url(./icon/preferences.png);
+}
+#icon_preferences:hover {
+  background:url(./icon/preferences_h.png);
+}
+
+/* tags.tpl */
+#icon_cloud {
+  background:url(./icon/tag_cloud.png);
+}
+#icon_cloud:hover {
+  background:url(./icon/tag_cloud_h.png);
+}
+
+#icon_tag_letters {
+  background:url(./icon/tag_letters.png);
+}
+#icon_tag_letters:hover {
+  background:url(./icon/tag_letters_h.png);
+}
+
+/* picture_nav_buttons.tpl */
+#icon_last {
+  background:url(./icon/last.png);
+}
+#icon_last:hover {
+  background:url(./icon/last_h.png);
+}
+
+#icon_right {
+  background:url(./icon/right.png);
+}
+#icon_right:hover {
+  background:url(./icon/right_h.png);
+}
+
+#icon_play {
+  background:url(./icon/play.png);
+}
+#icon_play:hover {
+  background:url(./icon/play_h.png);
+}
+
+#icon_pause {
+  background:url(./icon/pause.png);
+}
+#icon_pause:hover {
+  background:url(./icon/pause_h.png);
+}
+
+#icon_up {
+  background:url(./icon/up.png);
+}
+#icon_up:hover {
+  background:url(./icon/up_h.png);
+}
+
+#icon_left {
+  background:url(./icon/left.png);
+}
+#icon_left:hover {
+  background:url(./icon/left_h.png);
+}
+
+#icon_first {
+  background:url(./icon/first.png);
+}
+#icon_first:hover {
+  background:url(./icon/first_h.png);
+}
+
+#icon_start_repeat {
+  background:url(./icon/start_repeat.png);
+}
+#icon_start_repeat:hover {
+  background:url(./icon/start_repeat_h.png);
+}
+
+#icon_stop_repeat {
+  background:url(./icon/stop_repeat.png);
+}
+#icon_stop_repeat:hover {
+  background:url(./icon/stop_repeat_h.png);
+}
+
+#icon_dec_period {
+  background:url(./icon/dec_period.png);
+}
+#icon_dec_period:hover {
+  background:url(./icon/dec_period_h.png);
+}
+
+#icon_inc_period {
+  background:url(./icon/inc_period.png);
+}
+#icon_inc_period:hover {
+  background:url(./icon/inc_period_h.png);
+}
+
+/* popuphelp.tpl */
+/* search_rules.tpl */
+#icon_exit {
+  background:url(./icon/exit.png);
+}
+#icon_exit:hover {
+  background:url(./icon/exit_h.png);
+}
+
+/* search.tpl */
+#icon_help {
+  background:url(./icon/help.png);
+}
+#icon_help:hover {
+  background:url(./icon/help_h.png);
+}
+
+/*
+ * page : header
+*/
+#theHeader {
+  background:transparent url(./icon/skin_top.png) no-repeat scroll 0 0;
+  height:120px;
+}
+
+
+/*
+ page : title
+*/
+.titrePage {
+  height:auto;
+  padding:0 12px 0 30px;
+  min-height:31px;
+}
+
+.titrePageEmpty {
+  height:0px;
+  min-height:0px;
+}
+
+
+.titrePage, .navigationBar, #imageHeaderBar {
+  background:#303030 url(./icon/backgd.png) repeat scroll 0 0;
+  border-left:1px solid #FFFFFF;
+  border-right:1px solid #FFFFFF;
+  margin-left:8px;
+  margin-right:10px;
+  padding-left:8px;
+  padding-right:8px;
+}
+
+.titrePage .categoryActions {
+  padding-top:2px;
+  height:28px;
+}
+
+#titrePageID {
+  min-height:62px;
+  height:auto;
+  padding-bottom:1px;
+}
+
+/*
+ * page content
+*/
+#content {
+  background:transparent url(./icon/skin_page.png) repeat scroll 0 0;
+  min-height:450px;
+}
+
+#content h2 {
+  clear:left;
+}
+
+#content2 {
+  padding:8px;
+}
+
+/*
+ * page : identification, register, profile
+*/
+#identification, #register, #profile {
+  margin:0;
+  padding:16px;
+}
+
+/*
+ page content : thumbnails
+*/
+
+#additional_infoTOP, #additional_infoBOTTOM {
+  background-color:#101010;
+  -moz-border-radius:8px;
+  -webkit-border-radius:8px;
+  -khtml-border-radius:8px;
+  border-radius:8px;
+  margin:12px 26px 16px 16px;
+}
+
+.additional_info {
+  border-right:1px #303030 dotted;
+  padding:8px 8px 8px 16px;
+}
+
+#thumbnails {
+  font-size:80%;
+  font-weight:bold;
+}
+
+/*
+  page content : categories thumbnails
+*/
+
+#subContent {
+  padding:0px;
+  clear:both;
+}
+
+#subContent h2 {
+  font-size: 150%;
+  border-bottom:1px solid #303030;
+  padding-bottom:4px;
+}
+
+
+.thumbnailCategory {
+  background-color: #101010;
+  border:2px solid #000000;
+  display:block;
+  margin:8px;
+  padding:8px 8px 0 4px;
+  -moz-border-radius:12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+}
+
+.thumbnailCategory:hover {
+  background-color:#dedede;
+  border:2px solid #0066cc;
+  color:#101010;
+}
+
+ul.thumbnailCategories {
+  padding:16px 0 0;
+}
+
+ul.thumbnailCategories li {
+  float:none;
+  margin:auto;
+  width:96%;
+}
+
+#thumbContents {
+  margin:0px;
+}
+
+.illustration {
+  text-align:center;
+  padding-left:20px;
+  padding-right:20px;
+}
+
+li.odd1 .illustration {
+  float:right;
+}
+
+
+.illustration a img {
+  border:2px #ffffff solid;
+}
+
+p.thumbCatDesc {
+  border-top:1px #303030 dotted;
+  text-align:justify;
+}
+
+p.thumbCatDescNbImg {
+  text-align:right;
+  font-style:italic;
+}
+
+.content ul.thumbnails img, #linkPrev img, #linkNext img {
+  border:1px solid #FFFFFF;
+}
+
+.content ul.thumbnails span.wrap2 {
+  display:table-cell;
+  margin:0;
+  vertical-align:middle;
+  height:140px;
+  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: #FFFFFF;
+}
+
+table.wrap1 {
+  padding:25px 50px;
+}
+
+/*
+ * page :search
+*/
+form.filter {
+  margin:0;
+  padding:16px;
+}
+
+/*
+ * page:help
+*/
+.help {
+  margin:8px;
+}
+
+/*
+ page : copyright
+*/
+#copyright {
+  font-size:10px;
+  background:transparent url(./icon/skin_bottom.png) no-repeat;
+  width:1012px;
+  height:45px;
+  padding:16px;
+  position:relative;
+  color:#dedede;
+  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;
+}
+
+#menubar dt {
+  font-size:120%;
+  font-weight:bold;
+  cursor:default;
+  z-index:1010;
+}
+
+#menubar dt a {
+  color:#dedede;
+}
+
+#menubar dl:hover dt:hover, #menubar dl:hover dt a:hover {
+  color:#F07D00;
+}
+
+#menubar dl:hover dt, #menubar dl:hover dt a {
+  color:#0066cc;
+}
+
+#menubar dl {
+  float:left;
+  margin:1px 1px 1px 10px;
+  padding:0px 6px 0;
+  max-height:30px;
+}
+
+#menubar dl:hover {
+  background-color:#000000;
+  border:1px #ffffff solid;
+  border-bottom:none;
+  -moz-border-radius-topleft:12px;
+  -moz-border-radius-topright:12px;
+  -webkit-border-top-left-radius:12px;
+  -webkit-border-top-right-radius:12px;
+  -khtml-border-top-left-radius: 12px;
+  -khtml-border-top-right-radius: 12px;
+  border-radius:12px 0px;
+  margin:-4px 0px 0px 9px;
+  padding-top:4px;
+}
+
+#menubar ul {
+  list-style-type:disc;
+  font-size:92%;
+  margin:8px 0 0;
+  padding:0 0 0 10px;
+}
+
+#menubar ul ul {
+  font-size:100%;
+  padding-bottom:0px;
+  padding-top:0px;
+}
+
+#menubar dt .button {
+  left:-4px;
+  top:-5px;
+  float:left;
+}
+
+#menubar p.totalImages {
+  font-size:80%;
+}
+
+
+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:8px;
+  padding-bottom:8px;
+  padding-left:10px;
+  margin:-23px 0px 0px -8px; /* 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:#000000;
+  border:1px solid #ffffff;
+  padding-bottom:6px;
+  min-width:180px;
+}
+
+#menubar dd {
+  position:absolute;
+  z-index:-1;
+  margin:-1px 0 0 -7px;
+  -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:0px;
+  padding-right:8px;
+  margin-left:8px;
+}
+
+#mbCategories dt {
+  height:18px;
+  overflow:hidden;
+}
+
+
+/*
+ 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 #303030;
+  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 #101010;
+  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:#303030;
+  padding-left:12px;
+  padding-top:8px;
+}
+
+div.calImg {
+  position:relative;
+  left:8px;
+  top:8px;
+}
+
+
+.calendarCalBar {
+  border-bottom:1px dotted #606060;
+  padding-left:16px;
+  padding-top:8px;
+  margin-left:8px;
+  margin-right:12px;
+}
+
+table.calMonth {
+  margin-left:auto;
+  margin-right:auto;
+  left:0px;
+}
+
+table.calMonth td.calDayCellFull:hover {
+  background-color:#ffffff;
+}
+
+
+
+/*
+  inputs
+*/
+input[type="text"], input[type="password"], select, textarea, file {
+ font-family: monospace;
+ background: #f0f0f0;
+ 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;
+}
+
+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:1px #606060 dotted;
+  margin:3px;
+  padding:8px;
+}
+
+fieldset legend {
+  padding-left:3px;
+  padding-right:3px;
+  background:#000000;
+}
+
+
+
+/*
+  picture page
+*/
+#imageHeaderBar {
+  height:20px;
+}
+
+
+.imageNumber {
+  border:1px #999999 solid;
+}
+
+#theImage {
+  position:static;
+  padding-bottom:0px;
+}
+
+#theImage p {
+  margin:0;
+}
+
+#theImgContainer {
+  border:8px #ffffff solid;
+  margin-top:30px;
+}
+
+#imageHeaderBar .browsePath h2 {
+  font-weight:normal;
+}
+
+#imageToolBar {
+  height:37px;
+  top:0px;
+  overflow:visible;
+  margin-left:9px;
+  width:992px;
+}
+
+.imageToolBarBg {
+  background:#303030 url(./icon/backgd.png) repeat scroll 0 -2px;
+  z-index:-1;
+  left:0px;
+}
+
+#imageToolBar h2 {
+  color:#f0f0f0;
+  margin-top:6px;
+}
+
+#navThumbNext {
+  right:auto;
+  margin-left:824px;
+}
+
+#navThumbPrev {
+  left:auto;
+  margin-left:-14px;
+}
+
+#navThumbNext, #navThumbPrev {
+  top:310px;
+  max-height:200px;
+  height:200px;
+}
+
+#navThumbPrevContainer, #navThumbNextContainer {
+  height:200px;
+}
+
+.navThumbPrevContent a img, .navThumbNextContent a img {
+  border:1px #606060 solid;
+}
+
+.navThumbPrevContent a:hover img, .navThumbNextContent a:hover img {
+  border:1px #f0f0f0 solid;
+}
+
+.navThumbNextBg, .navThumbPrevBg {
+  -moz-border-radius:12px;
+  -webkit-border-radius:12px;
+  -khtml-border-radius:12px;
+  border-radius:12px;
+  background:#303030 url(./icon/backgd.png);
+  border:1px solid #ffffff;
+  height:180px;
+  width:180px;
+  margin:10px;
+}
+
+#navThumbNextContainer:hover div.navThumbNextBg,
+#navThumbPrevContainer:hover div.navThumbPrevBg {
+  background:#ffffff;
+}
+
+
+#imageInfos {
+  z-index:100;
+}
+
+#imageInfosContainer {
+  padding-bottom:8px;
+}
+
+.infoTable {
+  margin:auto;
+  font-size:90%;
+  max-width:94%;
+  color:#f0f0f0;
+  z-index:200;
+  border-collapse:collapse;
+  position:relative;
+  left:25px;
+}
+
+.infoTable td {
+  padding-bottom:5px;
+  padding-left:4px;
+  padding-right:50px;
+}
+
+.infoTable .label {
+  font-weight:bold;
+  border-left:1px dotted #606060;
+}
+
+.infoTable tr:hover {
+  color:#0066cc;
+  cursor:default;
+}
+.infoTable tr.emptyrow td {
+  height:4px;
+  padding:0px;
+}
+
+.imageMeta {
+  padding-top:16px;
+}
+
+
+#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;
+}
+
+#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;
+}
+
+#rateForm input[type="button"],
+#rateForm  input[type="button"]:active,
+#rateForm input[type="submit"],
+#rateForm  input[type="submit"]:active {
+  cursor:pointer;
+  border:none;
+  padding:0;
+}
+
+.commentList {
+  margin-left:8px;
+  padding:10px 4px 10px 10px;
+}
+
+#theCommentsPage ul.commentList {
+  margin-bottom:0;
+  margin-left:8px;
+  margin-right:8px;
+  padding-left:0px;
+}
+
+.commentDetail {
+  border-bottom:1px dotted #606060;
+}
+
+.commentDetail ul {
+  list-style-type:none;
+  padding:4px;
+}
+
+.commentDetail .description .author,
+.commentDetail .description .date {
+  font-weight:bold;
+  color:#f0f0f0;
+}
+
+.commentDetail .description blockquote {
+  margin:0;
+  padding:4px 4px 8px 12px;
+  text-align:justify;
+}
+
+#titleComment h3:hover {
+  background:#303030;
+}
+
+.comment_icon {
+  margin-left:5px;
+  padding:0;
+  position:absolute;
+}
+
+#theCommentContainer {
+  clear:both;
+}
+
+#theCommentContainer input, #theCommentContainer textarea {
+  max-width:458px;
+}
+
+#theCommentContainer form {
+  padding-right:8px;
+  padding-left:8px;
+  padding-top:0px;
+}
+
+#theCommentList {
+  width:489px;
+  height:75%;
+}
+
+/*
+ * tabs
+*/
+#theTabs {
+}
+
+#theTabsBg {
+  background:#303030 url(./icon/backgd.png) repeat scroll 0 0;
+}
+
+#theTabsheets {
+  margin:6px 0 0;
+}
+
+#theTabsheets li.tab {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  background-color:#303030;
+  border:1px solid #606060;
+  display:block;
+  float:left;
+  margin:0 0 0 4px;
+  padding:2px 8px;
+  position:relative;
+  top:-2px;
+}
+
+#theTabsheets li.ui-tabs-selected {
+  border-bottom-width:3px;
+  padding:4px 8px;
+  top:-3px;
+}
+
+#theTabsContainer {
+  margin-left:9px;
+  position:absolute;
+  width:992px;
+}
+
+#theTabsContainer .navigationBar {
+  background:transparent;
+  margin:0px;
+  border:none;
+  float:right;
+}
+
+
+
+/*
+  tags
+*/
+
+#fullTagCloud SPAN a:hover {
+  background:#303030 url(./icon/backgd.png) repeat scroll 0 0;
+  -moz-border-radius:3px;
+  -webkit-border-radius:3px;
+  -khtml-border-radius:3px;
+  border-radius:3px;
+}
+
+#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;
+}
+
+.tagaddbutton {
+  left:-4px;
+  position:relative;
+  top:-3px;
+}
+
+
+.mandatorystar {
+  color:#A04040;
+}
+
+.mandatorynfo {
+  font-size:90%;
+  margin:0 0 4px 8px
+}
+
+/*
+  help
+*/
+#thePopuphelpPage h1 {
+  background:transparent;
+  padding-top:30px;
+}
+
+
+#thePopuphelpPage #the_page {
+  width:auto;
+}
+
+#thePopuphelpPage #theHeader {
+  -moz-border-radius-topleft:12px;
+  -moz-border-radius-topright:12px;
+  -webkit-border-top-left-radius:12px;
+  -webkit-border-top-right-radius:12px;
+  -khtml-border-top-left-radius:12px;
+  -khtml-border-top-right-radius:12px;
+  border-radius:12px 0px;
+  background:#000000 none repeat scroll 0 0;
+  border-color:#FFFFFF;
+  border-style:solid solid none;
+  border-width:1px 1px medium;
+  height:80px;
+  margin:8px 8px 0;
+}
+
+#thePopuphelpPage #content {
+  background:#000000 none repeat scroll 0 0;
+  border-color:-moz-use-text-color #FFFFFF;
+  border-style:none solid;
+  border-width:medium 1px;
+  margin:0 8px;
+  min-height:0;
+  padding:16px;
+}
+
+#thePopuphelpPage #copyright {
+  -moz-border-radius-bottomleft:12px;
+  -moz-border-radius-bottomright:12px;
+  -webkit-border-bottom-left-radius:12px;
+  -webkit-border-bottom-right-radius:12px;
+  -khtml-border-bottom-left-radius:12px;
+  -khtml-border-bottom-right-radius:12px;
+  border-radius:0px 12px;
+  background:#000000 none repeat scroll 0 0;
+  border-color:#FFFFFF;
+  border-style:none solid solid;
+  border-width:1px;
+  height:25px;
+  margin:0 8px 8px;
+  width:auto;
+}
+
+#thePopuphelpPage ul.categoryActions {
+  margin:-16px 0 0;
+  padding:0;
+}
+
+/*
+ * diaporama
+*/
+#imageHeaderBar h2.showtitle {
+  display:inline;
+}
+
+#imageHeaderBar div.slideShow {
+  padding:2px 0 0 5px;
+}
+
+/*
+ vd language switch plugin
+*/
+.menuf ul li a, .menuf ul li a:visited {
+  height:27px;
+  line-height:27px;
+  margin-top:5px;
+}
+
+.menuf ul.flag-pan .flags:hover, .menuf a img.flags {
+  border:1px solid #303030;
+}
+
+.menuf ul.flag-pan .flags {
+  border:1px solid #000000;
+}
+
+.menuf ul.flag-pan {
+  background:#000000 url(./icon/backgd.png) repeat scroll 0 -2px;
+  -moz-border-radius-bottomleft:12px;
+  -moz-border-radius-bottomright:12px;
+  -webkit-border-bottom-left-radius:12px;
+  -webkit-border-bottom-right-radius:12px;
+  -khtml-border-bottom-left-radius:12px;
+  -khtml-border-bottom-right-radius:12px;
+  border-radius:12px;
+  padding-bottom:4px;
+  border:none;
+}
+
+/*
+ * PWG Stuff plugin
+*/
+div.stuffs_block {
+  background:transparent url(./icon/skin_page.png);
+  margin:0px;
+  padding:0px;
+}
+
+div.stuffs_block .stuffs {
+  margin:0px;
+  padding:0px;
+  background:transparent;
+}
+
+div.stuffs_block .stuffs h2 {
+  margin:0px;
+  padding-top:4px;
+}
+
+/*
+ * Comment editor compatibility
+*/
+
+#theCategoryPage div#ce-content.content,
+#theCategoryPage div#ce-message-block.content {
+  background:transparent url(./icon/skin_page.png);
+}
+
+
+#thePicturePage div#ce-content.content,
+#thePicturePage div#ce-message-block.content {
+  margin:70px auto auto;
+  border:1px solid #FFFFFF;
+}
+
+div#ce-content .titrePage, div#ce-message-block .titrePage {
+  background:#303030 url(./icon/backgd.png);
+  height:31px;
+  border:none;
+  margin:0;
+}
+
+#theCategoryPage div#ce-content .titrePage,
+#theCategoryPage div#ce-message-block .titrePage {
+  margin:0 11px 0 9px;
+}
+
+div#ce-content h2, div#ce-message-block h2 {
+  padding-top:4px;
+  margin:0px;
+}
+
+div#ce-content.content ul.categoryActions {
+  padding-top:1px;
+}
+
+div#ce-comments {
+  padding-bottom:0;
+  padding-top:16px;
+}
+
+/*
+ * AMM compatibility
+*/
+div#menubar dd.randompicdd {
+  margin-left:-7px;
+}
+
+div#irandompicinner.illustration {
+  height:auto;
+  padding:0px;
+}
Index: /extensions/gally/piwigo-2.0/theme/lapis-lazuli/themeconf.inc.php
===================================================================
--- /extensions/gally/piwigo-2.0/theme/lapis-lazuli/themeconf.inc.php	(revision 6105)
+++ /extensions/gally/piwigo-2.0/theme/lapis-lazuli/themeconf.inc.php	(revision 6105)
@@ -0,0 +1,14 @@
+<?php
+$themeconf = array(
+  'template' => 'gally',
+  'theme' => 'lapis-lazuli',
+  'template_dir' => 'template/gally',
+  'icon_dir' => 'template/gally/theme/lapis-lazuli/icon',
+  'admin_icon_dir' => 'template/gally/icon',
+  'mime_icon_dir' => 'template/gally/icon/mimetypes/',
+  'local_head' => '<!-- no theme specific head content -->',
+);
+
+global $user;
+$user["expand"] = true; /* Forced to assign subcategory links inside each category on index page */
+?>
Index: /extensions/gally/piwigo-2.0/thumbnails.css
===================================================================
--- /extensions/gally/piwigo-2.0/thumbnails.css	(revision 6105)
+++ /extensions/gally/piwigo-2.0/thumbnails.css	(revision 6105)
@@ -0,0 +1,317 @@
+/* -----------------------------------------------------------------------------
+  GALLY
+  Template for Piwigo
+  ------------------------------------------------------------------------------
+  file: gally/content.css
+  file version: 1.1.0
+  ------------------------------------------------------------------------------
+  author: grum at grum.dnsalias.com
+  << May the Little SpaceFrog be with you >>
+  ------------------------------------------------------------------------------
+  CSS file for the categories pages
+
+  see the release_notes.txt file for more informations
+----------------------------------------------------------------------------- */
+#thumbContents {
+  margin:0px;
+  margin-top:4px;
+  margin-bottom:4px;
+  border-collapse:collapse;
+  width:100%;
+}
+
+#thumbContainer {
+  position:relative;
+  text-align:center;
+  width:auto;
+  vertical-align:top;
+}
+
+/*
+  images thumbnails
+*/
+#thumbnails {
+  position:relative;
+  width: auto;
+  text-align:center;
+}
+
+div ul.thumbnails {
+/*  margin:0px;
+  padding:0px;
+  list-style: none;
+  float:left; */
+  margin:0px;
+  padding:0px;
+  padding-left:8px;
+  overflow:hidden;
+  list-style:none;
+  text-align:center;
+}
+
+div ul.thumbnails li {
+  margin:0px;
+  padding:0px;
+  float:left;
+  width:240px;
+  height:210px;
+}
+
+
+span.wrap1 {
+  display:block;
+  overflow:hidden;
+  border-collapse:collapse;
+  font-size:90%;
+}
+
+#additional_infoTOP span.wrap2, #additional_infoBOTTOM span.wrap2 {
+  width:140px;
+}
+
+table.wrap1 {
+  display:block;
+  overflow:hidden;
+  border-collapse:collapse;
+}
+
+table.wrap1 tr {
+  text-align:center;
+  vertical-align:middle;
+}
+
+.wrap2 {
+  display:block;
+  width:235px;
+}
+
+/*
+  categories thumbnails
+*/
+ul.thumbnailCategories {
+  margin:0px;
+  padding:0px;
+  padding-left:8px;
+  overflow:hidden;
+  list-style:none;
+  text-align:center;
+  position:relative;
+  top:-8px;
+}
+
+ul.thumbnailCategories li {
+  float:left;
+  /*border:1px #ff0000 solid;*/
+  width:49%;
+  min-width:350px;
+  text-align:left;
+  /*height:200px;*/
+  overflow:hidden;
+}
+
+.thumbnailCategory {
+  display:block;
+  padding:4px;
+  margin:0px;
+  margin-right:8px;
+  margin-top:8px;
+}
+
+.illustration {
+  float:left;
+  width:140px;
+}
+
+.description {
+  height:140px;
+  overflow:auto;
+  padding-left:8px;
+}
+
+.description h3 {
+  margin:0px;
+}
+
+p.thumbCatDescNfoDate, p.thumbCatDescNbImg {
+  margin:0px;
+  font-size:80%;
+}
+
+p.thumbCatDesc {
+  margin:0px;
+  padding-top:4px;
+}
+
+/*
+  page : title bar
+*/
+#titrePageID {
+  height:31px;
+}
+
+.titrePage {
+  margin:0px;
+  padding:0px;
+  padding-left:30px;
+}
+
+.titrePage .categoryActions {
+  float:right;
+  margin: 0px;
+  padding: 0px;
+  list-style: none;
+  width: auto;
+}
+
+.categoryActions li {
+  display: inline;
+}
+
+#menuswitcher {
+  position:relative;
+  left:-15px;
+  top:2px;
+  float:left;
+  cursor:pointer;
+}
+
+/*
+  page : content
+*/
+#subContent {
+  width:auto;
+  display:block;
+  min-height:550px;
+  padding-bottom:30px;
+}
+
+
+#content h2 {
+  font-size:12px;
+  margin:0px;
+  padding-top:8px;
+  padding-bottom:8px;
+}
+
+.additional_info {
+  width:234px;
+  margin:0px;
+  padding-right:8px;
+  padding-left:8px;
+  text-align:justify;
+  vertical-align:top;
+  visibility:hidden;
+}
+
+#additional_infoTOP, #additional_infoBOTTOM {
+  margin:8px 8px 16px;
+  padding:8px;
+  visibility:hidden;
+}
+
+#additional_infoTOP ul.thumbnails, #additional_infoBOTTOM ul.thumbnails {
+  list-style:none;
+}
+
+#additional_infoTOP ul.thumbnails li, #additional_infoBOTTOM ul.thumbnails li {
+  float:left;
+  width:140px;
+  margin:5px;
+  height:170px;
+}
+
+.navigationBar {
+  padding:8px;
+  text-align:right;
+  clear:both;
+}
+
+/*
+  page content : title bar
+*/
+#titreContent1 {
+  padding-left:60px;
+  height:auto;
+}
+#titreContent1 h2 {
+  padding-top:2px;
+  padding-bottom:2px;
+}
+
+/*
+ page content : calendar bar
+*/
+.calendarBar {
+  margin-top:-1px;
+  padding:0px;
+  padding-left:60px;
+  position:relative;
+  left:-4px;
+}
+
+.calItem, .calItemEmpty, .calItemP, .calItemN {
+  display:inline-block;
+  text-align:center;
+
+  margin-left:4px;
+  padding-left:4px;
+  padding-right:4px;
+}
+
+.calendarCalBar {
+  margin-top:15px;
+}
+
+.calCalHead {
+  margin:0px;
+}
+
+.calCal {
+  margin-left:15px;
+}
+
+.calCalNbImg {
+  font-size:80%;
+  left:-3px;
+  position:relative;
+  top:-3px;
+}
+
+/* calendar */
+table.calMonth {
+  margin-top:30px;
+  margin-bottom:20px;
+  position:relative;
+  border-collapse:collapse;
+}
+
+table.calMonth thead {
+  text-align:center;
+}
+
+table.calMonth tbody td.calDayCellFull, table.calMonth tbody td.calDayCellEmpty {
+  height:98px;
+  width:96px;
+  font-family:sans-serif;
+  font-size:18px;
+  text-align:left;
+  vertical-align:top;
+}
+
+div.calImg {
+  height:80px;
+  width:80px;
+  overflow:hidden;
+  z-index:1;
+}
+
+.calBackDate {
+  position:absolute;
+  z-index:2;
+}
+
+.calForeDate {
+  position:absolute;
+  z-index:3;
+  margin:1px;
+}
Index: /extensions/gally/piwigo-2.0/thumbnails.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/thumbnails.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/thumbnails.tpl	(revision 6105)
@@ -0,0 +1,46 @@
+<!-- **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 class="thumbnail" src="{$thumbnail.TN_SRC}" alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}" />
+          </a>
+          </span>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <span class="thumbLegend">
+
+          {if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if}
+          {if !empty($thumbnail.ICON_TS)}{$thumbnail.ICON_TS}{/if}
+
+          {if isset($thumbnail.NB_COMMENTS)}
+          <span class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
+          <br />
+          {$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
+          </span>
+          {/if}
+
+          {if isset($thumbnail.NB_HITS)}
+          <span class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits">
+          <br />
+          {$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
+          </span>
+          {/if}
+          </span>
+        </td>
+      </tr>
+    </table>
+  </li>
+{/foreach}
+</ul>
+{/if}
+
+
+<!-- **GBL** <THUMBNAILS< -->
Index: /extensions/gally/piwigo-2.0/upload.tpl
===================================================================
--- /extensions/gally/piwigo-2.0/upload.tpl	(revision 6105)
+++ /extensions/gally/piwigo-2.0/upload.tpl	(revision 6105)
@@ -0,0 +1,100 @@
+<!-- **GBL** >UPLOAD> -->
+
+<div id="content" class="content">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li><a id="icon_home" class="button" href="{$U_HOME}" title="{'return to homepage'|@translate}"><!--<img src="{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}"/>--></a></li>
+    </ul>
+    <h2>{'upload_title'|@translate}</h2>
+  </div>
+
+  {if isset($errors) and count($errors)}
+    <div id="div_errors" class="errors">
+      <div>
+        <ul>
+          {foreach from=$errors item=error}
+          <li>{$error}</li>
+          {/foreach}
+        </ul>
+        <form>
+          <input class="submit" type="button" value="{'ok'|@translate}" onclick="closeDiv('div_errors');">
+        </form>      
+      </div>
+    </div>
+  {/if}
+
+
+  {if not $UPLOAD_SUCCESSFUL }
+  <form enctype="multipart/form-data" method="post" action="{$F_ACTION}">
+    <fieldset>
+      <legend>{$ADVISE_TITLE}</legend>
+      {if not empty($advises)}
+      <ul>
+        {foreach from=$advises item=advise}
+        <li>{$advise}</li>
+        {/foreach}
+      </ul>
+      {/if}
+
+      <ul>
+        <li>
+            <div class="property">&nbsp;</div><input name="picture" type="file" value="" />
+        </li>
+        {if isset($SHOW_FORM_FIELDS) and $SHOW_FORM_FIELDS}
+        <!-- category -->
+        <li>
+          <div class="property">{'Category'|@translate}</div>
+          {html_options name="category" options=$categories selected=$categories_selected}
+        </li>
+        <!-- username -->
+        <li>
+          <div class="property">{'Username'|@translate}</div>
+          <input name="username" type="text" value="{$NAME}" />&nbsp;<span class="mandatorystar">*</span>
+        </li>
+        <!-- mail address -->
+        <li>
+          <div class="property">{'mail_address'|@translate}</div>
+          <input name="mail_address" type="text" value="{$EMAIL}" size="35"/>&nbsp;<span class="mandatorystar">*</span>
+        </li>
+        <!-- name of the picture -->
+        <li>
+          <div class="property">{'upload_name'|@translate}</div>
+          <input name="name" type="text" value="{$NAME_IMG}" size="35"/>
+        </li>
+        <!-- author -->
+        <li>
+          <div class="property">{'upload_author'|@translate}</div>
+          <input name="author" type="text" value="{$AUTHOR_IMG}" size="35"/>
+        </li>
+        <!-- date of creation -->
+        <li>
+          <div class="property">{'Creation date'|@translate} (DD/MM/YYYY)</div>
+          <input name="date_creation" type="text" value="{$DATE_IMG}" />
+        </li>
+        <!-- comment -->
+        <li>
+          <div class="property">{'comment'|@translate}</div>
+          <textarea name="comment" rows="6" cols="60" style="overflow:auto">{$COMMENT_IMG}</textarea>
+        </li>
+        {/if}
+      </ul>
+    </fieldset>
+    <p class="bottomButtons">
+      <input class="submit" name="submit" type="submit" value="{'Submit'|@translate}" />
+    </p>
+  </form>
+  {else}
+  {'upload_successful'|@translate}<br />
+  <div style="text-align:center;">
+    <a href="{$U_RETURN}">[ {'home'|@translate} ]</a>
+  </div>
+  {/if}
+  
+  {if isset($SHOW_FORM_FIELDS) and $SHOW_FORM_FIELDS}
+  <div class="mandatorynfo"><span class="mandatorystar">*</span> : {'mandatory'|@translate}</div>
+  {/if}
+</div> <!-- content -->
+
+
+<!-- **GBL** <UPLOAD< -->
