Index: /extensions/gally/gally-black-graphite/conf/default.conf
===================================================================
--- /extensions/gally/gally-black-graphite/conf/default.conf	(revision 16016)
+++ /extensions/gally/gally-black-graphite/conf/default.conf	(revision 16017)
@@ -123,5 +123,5 @@
 # window borders. Normal & high resolution view use this property
 # Only used when the 'imageAutoScroll' is set to yes
-marginContainer=0
+marginContainer=30
 
 # -- 1.3.0 --
@@ -185,10 +185,4 @@
 #             in the window
 defaultZoomSize="full"
-
-# -- 1.3.0 --
-# the 'displayHighResIcon' option can take theses values :
-#   "yes" => display an icon 'view full res' in the toolbar
-#   "no"  => don't display an icon 'view full res' in the toolbar
-displayHighResIcon="yes"
 
 # -- 1.3.0 --
@@ -213,4 +207,9 @@
 manageTipsPos="tipOnBottom"
 
+# -- 1.5.0 --
+# the 'tipsSize' option can take any positive integer values.
+# This option define the size (Width&Height) of an arrow
+tipsSize=17
+
 
 # ------- Menu parameters ------------------------------------------------------
Index: /extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css
===================================================================
--- /extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css	(revision 16016)
+++ /extensions/gally/gally-black-graphite/css/ASEgally-black-graphite.css	(revision 16017)
@@ -7,5 +7,5 @@
 .gcLink { color: #c0c0c0; }                 /* used for link */
 .gcLinkHover { color: #f0f0f0; }            /* used for link */
-.gcBgPage { background-color: #101010; }               /* used for page background */
+.gcBgPage { background-color: #202020; }               /* used for page background */
 .gcBgTabSheet { background-color: #404040; }           /* used inside tabsheet & menu */
 .gcBgTableRow1 { background-color: #292929; }            /* used in for tables rows background */
@@ -33,5 +33,14 @@
 .ui-datepicker td.ui-datepicker-current-day { background-color:#404040; color:#f0f0f0; }
 .ui-datepicker td.ui-datepicker-current-day a { color:#f0f0f0; }
-.ui-category-selector-arrow { color:#202020; }
+.ui-category-selector-arrow {
+  background-image: url("./../icon/buttons_gpc.png");
+  background-position: -30px -30px;
+  background-repeat: no-repeat;
+  border: 0 none;
+  border-radius: 2px 2px 2px 2px;
+}
+.ui-category-selector-arrow:hover {
+  background-position: -30px -15px;
+}
 .ui-category-selector, .ui-category-selector-list { font-family:monospace; font-size:12px; }
 li.ui-category-selector-item:hover, li.ui-tag-selector-list-item:hover { background-color:#666666; color:#f0f0f0; }
@@ -55,5 +64,5 @@
 }
 .ui-tag-selector-selected-tag-list li.ui-tag-selector-selected-tag {
-  background:#666666;
+  background:#202020;
   color:#F0F0F0;
   margin-top:0px;
@@ -84,22 +93,52 @@
 }
 
-.iconEdit, .iconDelete {
-  background-image:url(./../icon/buttons.png);
-  background-repeat:no-repeat;
-  width:16px;
-  height:16px;
-}
-.iconEdit { background-position:-616px 0;}
-.iconEdit:hover { background-position:-616px -22px;}
-.iconDelete { background-position:-594px 0;}
-.iconDelete:hover { background-position:-594px -22px;}
-
-.iconMove { background:url(./../icon/asearchengine/move.png) no-repeat 0 0 transparent; }
-.iconMove:hover { background:url(./../icon/asearchengine/move_h.png) no-repeat 0 0 transparent; }
-.iconSwitchCondition  { background:url(./../icon/asearchengine/switch.png) no-repeat 0 0 transparent; }
-.iconSwitchCondition:hover { background:url(./../icon/asearchengine/switch_h.png) no-repeat 0 0 transparent; }
+
+.iconSwitchCondition,
+.iconMove,
+.iconEdit,
+.iconDelete {
+  background:url(./../icon/buttons_gpc.png) no-repeat 0 0 transparent;
+  -moz-border-radius:2px;
+  -webkit-border-radius:2px;
+  -khtml-border-radius:2px;
+  border-radius:2px;
+}
+.iconSwitchCondition:hover,
+.iconMove:hover,
+.iconEdit:hover,
+.iconDelete:hover {
+  background-color:#666666;
+}
+
+
+.iconEdit {
+  background-position:-240px -30px;
+}
+.iconDelete {
+  background-position:-255px -30px;
+}
+.iconMove {
+  background-position:-285px -30px;
+}
+.iconSwitchCondition {
+  background-position:-300px -30px;
+}
+.iconEdit:hover {
+  background-position:-240px -15px;
+}
+.iconDelete:hover {
+  background-position:-255px -15px;
+}
+.iconMove:hover {
+  background-position:-285px -15px;
+}
+.iconSwitchCondition:hover {
+  background-position:-300px -15px;
+}
+
+
 .cbItemMultiple { border:1px solid #666666; }
 .cbItemOverGroup { border:1px dotted #666666; }
-.itemContent { border-left:22px solid #404040; min-height:34px; padding:3px; }
+.itemContent { border-left:22px solid #666666; min-height:34px; padding:3px; }
 .cbItem { padding:0px; }
 
@@ -131,7 +170,9 @@
   font-weight: bold;
   padding: 4px;
+  cursor:pointer;
 }
 .cbButtons:hover {
-  color: #f0f0f0;
+  color: #c0c0c0;
+  background:#666666;
 }
 
@@ -158,4 +199,5 @@
 
 div#iMenuCaddieBar div#iMenuCaddieItems { z-index:1000; }
+div#iMenuCriterions div#iMenuCItems { margin-top: 0px; }
 
 ul.rbResultList td.rbResultItemDetail {
@@ -173,4 +215,41 @@
 #iResultQueryContent a {
   border-bottom:1px dotted #666666;
+}
+
+
+#iResultQuery .gcBgInput {
+  background-color: #202020;
+  color: #666666;
+}
+
+#iDialogASECategoryChoose #iASECategoryCategory {
+  width:495px;
+}
+
+
+.ui-datepicker-next,
+.ui-datepicker-prev {
+  cursor:pointer;
+}
+#ui-datepicker-div div.ui-datepicker-header a.ui-datepicker-next span {
+  left:auto;
+  right:0;
+}
+
+#iASECategoryCategory .ui-category-selector-name li.ui-category-selector-selected-cat {
+  background: none repeat scroll 0 0 #202020;
+  border-radius: 8px 8px 8px 8px;
+  font-size: 12px;
+  margin-top: 0;
+  padding-bottom: 1px;
+  padding-top: 1px;
+  color:#f0f0f0;
+}
+#iASECategoryCategory div.ui-category-selector-check {
+  position:relative;
+}
+div.ui-dialog-buttonset {
+  padding-left:2px;
+  padding-bottom:2px;
 }
 
@@ -183,5 +262,17 @@
 .error, input.error { background:#FFAAAA; border:1px solid #800000; color:#800000; }
 #iDMCSelectMeta { font-size:12px; }
-#iDMCListValues li { background:#666666; border:none; }
-
-
+#iDMCListValues li.valueItems {
+  border: 0 none;
+  border-radius: 4px 4px 4px 4px;
+  margin-bottom: 5px;
+  padding: 4px;
+}
+
+
+/* LMT */
+#iBDLMTLicenceList li.valueItems {
+  border: 0 none;
+  border-radius: 4px 4px 4px 4px;
+  margin-bottom: 5px;
+  padding: 4px;
+}
Index: /extensions/gally/gally-black-graphite/css/theme.css
===================================================================
--- /extensions/gally/gally-black-graphite/css/theme.css	(revision 16016)
+++ /extensions/gally/gally-black-graphite/css/theme.css	(revision 16017)
@@ -4,5 +4,5 @@
   ------------------------------------------------------------------------------
   file: gally/gally-black-graphite/theme.css
-  file version: 1.0.0
+  file version: 1.5.0
   ------------------------------------------------------------------------------
   author: grum at grum.fr
@@ -194,4 +194,11 @@
 #icon_calendar_created:hover {
   background-position:-44px -22px;
+}
+
+#icon_sort {
+  background-position:-1078px 0;
+}
+#icon_sort:hover {
+  background-position:-1078px -22px;
 }
 
@@ -260,5 +267,5 @@
 }
 #icon_high_res:hover {
-  background-position:-176px -22;
+  background-position:-176px -22px;
 }
 
@@ -317,4 +324,11 @@
 #icon_preferences:hover {
   background-position:-66px -22px;
+}
+
+#icon_derivatives {
+  background-position:-1056px 0;
+}
+#icon_derivatives:hover {
+  background-position:-1056px -22px;
 }
 
@@ -602,5 +616,5 @@
 
 .additional_info {
-  padding:8px 8px 8px 16px;
+  padding: 8px 0px 8px 8px;
 }
 
@@ -710,25 +724,34 @@
   display:table-cell;
   margin:0;
+  padding:0;
   vertical-align:middle;
-  height:140px;
-  min-width:140px;
+  border:none;
+}
+
+.content ul.thumbnails table.wrap1 tr.imgRow td:hover {
+  vertical-align:middle;
   -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;
+  background-color:#666666;
   border:none;
 }
 
-#content UL.thumbnails SPAN.wrap2:hover {
-  background-color: #666666;
+.content ul.thumbnails table.wrap1 tr.nfoRow {
+  visibility:hidden;
+}
+
+.content ul.thumbnails table.wrap1:hover tr.nfoRow {
+  visibility:visible;
 }
 
 table.wrap1 {
-  padding:25px 50px;
+  padding:20px 11px;
 }
 
 div ul.thumbnails li {
-  width: 220px;
+  width: auto;
+  height: auto;
 }
 
@@ -1047,10 +1070,4 @@
 
 input[type="submit"], input[type="button"], input[type="reset"], button {
-/*  font-family: monospace;
-  border-bottom:1px #606060 solid;
-  border-right:1px #606060 solid;
-  border-top:1px #ffffff solid;
-  border-left:1px #ffffff solid;
-*/
   -moz-border-radius: 8px;
   -webkit-border-radius:8px;
@@ -1063,4 +1080,6 @@
   font-weight: bold;
   padding: 4px;
+  margin-top:1px;
+  cursor: pointer;
 }
 
@@ -1127,4 +1146,25 @@
   picture page
 */
+.switchBox {
+  -moz-border-radius:4px;
+  -webkit-border-radius:4px;
+  -khtml-border-radius:4px;
+  border-radius:4px;
+  background-color: #202020;
+  border: 1px solid #666666;
+  margin-left:4px;
+  z-index:15000;
+  margin-top:12px;
+}
+
+.switchBoxTitle {
+  font-size: 12px;
+  font-weight: bold;
+}
+
+.switchBoxCat {
+  margin-top:25px;
+}
+
 #thePicturePage #titrePageID {
   min-height:0;
@@ -1254,16 +1294,16 @@
 #navThumbNext {
   right:auto;
-  margin-left:768px;
+  margin-left:726px;
 }
 
 #navThumbPrev {
   left:auto;
-  margin-left:-14px;
+  margin-left:28px;
 }
 
 #navThumbNext, #navThumbPrev {
-  top:310px;
   max-height:200px;
   height:200px;
+  top:-1px; /* will be calculated automatically */
 }
 
@@ -1297,8 +1337,23 @@
 }
 
+#imageInfosRight {
+  display: block;
+  float: right;
+  height: 5px;
+  width: 40px;
+}
+
+table.infoTable td.cTitle {
+  width:10%;
+}
+
+table.infoTable td.cNfo {
+  width:20%;
+}
+
 .infoTable {
   margin:auto;
   font-size:90%;
-  max-width:94%;
+  max-width:98%;
   color:#d9d9d9;
   z-index:200;
@@ -1314,5 +1369,5 @@
 
 .infoTable td.value, .infoTable td.label {
-  padding-right:50px;
+  padding-right:10px;
 }
 
@@ -1347,5 +1402,8 @@
 #rateForm input[type="button"].rateButtonStarFull:focus,
 #rateForm input[type="submit"].rateButtonStarFull  {
-  background: url('./../icon/buttons.png') no-repeat scroll; background-position:-111px 1px; width:16px; height:16px;
+  background: url('./../icon/buttons.png') no-repeat scroll;
+  background-position:-111px 1px;
+  width:16px;
+  height:16px;
   outline:none;
   -moz-border-radius:0px;
@@ -1358,5 +1416,8 @@
 #rateForm input[type="button"].rateButtonStarEmpty:focus,
 #rateForm input[type="submit"].rateButtonStarEmpty {
-  background: url('./../icon/buttons.png') no-repeat scroll; background-position:-89px 1px; width:16px; height:16px;
+  background: url('./../icon/buttons.png') no-repeat scroll;
+  background-position:-89px 1px;
+  width:16px;
+  height:16px;
   outline:none;
   -moz-border-radius:0px;
@@ -1373,4 +1434,17 @@
   border:none;
   padding:0;
+}
+
+#privacyLevelBox {
+  font-weight:normal;
+}
+
+#privacyLevelBox a {
+  cursor:pointer;
+}
+
+#iPrivacyLevelLink {
+  cursor:pointer;
+  font-style:italic;
 }
 
@@ -1726,5 +1800,5 @@
   font-family: sans-serif;
   font-size: 11px;
-  max-width: 200px;
+  max-width: 250px;
   padding: 4px;
   min-height: 15px;
@@ -1761,4 +1835,14 @@
 }
 
+.cSimpleTipArrow {
+    background-image: url("./../icon/sTipArrows.png");
+}
+
+.cSimpleTipArrow {
+    background-repeat: no-repeat;
+    height: 12px;
+    position: absolute;
+    width: 12px;
+}
 
 
@@ -1782,10 +1866,9 @@
 
 div.content ul.categoryActions li.menuf ul.flag-pan .flags:hover,
-div.content ul.categoryActions li.menuf a img.flags {
-  border:1px solid #202020;
-}
-
-div.content ul.categoryActions li.menuf ul.flag-pan .flags {
-  border:1px solid #202020;
+div.content ul.categoryActions li.menuf ul.flag-pan .flags,
+div.content ul.categoryActions li.menuf a img.flags,
+li.menuf img.flags {
+  border:0px solid #202020 !important;
+  margin-top:7px;
 }
 
Index: /extensions/gally/gally-black-graphite/template/index.tpl
===================================================================
--- /extensions/gally/gally-black-graphite/template/index.tpl	(revision 16016)
+++ /extensions/gally/gally-black-graphite/template/index.tpl	(revision 16017)
@@ -11,56 +11,81 @@
     <div id="menuswitcher">
       <a id="icon_menu" class="button" onclick="gallyCP.switchmenu('', '{$ROOT_URL}{$themeconf.icon_dir}/');">&nbsp;
-        <!-- <img  src="{$ROOT_URL}{$themeconf.icon_dir}/menu-show.png"  alt="{'display all elements in all sub-categories'|@translate}"> -->
       </a>
     </div>
     {/if}
+
+      {if !empty($image_orders)}
+      <div id="sortOrderBox" class="switchBox switchBoxCat">
+        <div class="switchBoxTitle">{'Sort order'|@translate}</div>
+        {foreach from=$image_orders item=image_order name=loop}{if !$smarty.foreach.loop.first}<br>{/if}
+        {if $image_order.SELECTED}
+        <span>&#x2714; </span>{$image_order.DISPLAY}
+        {else}
+        <span style="visibility:hidden">&#x2714; </span><a href="{$image_order.URL}" rel="nofollow">{$image_order.DISPLAY}</a>
+        {/if}
+        {/foreach}
+      </div>
+      {/if}
+
+      {if !empty($image_derivatives)}
+      <div id="derivativeSwitchBox" class="switchBox switchBoxCat">
+        <div class="switchBoxTitle">{'Photo sizes'|@translate}</div>
+        {foreach from=$image_derivatives item=image_derivative name=loop}
+        {if !$smarty.foreach.loop.first}<br>{/if}
+        {if $image_derivative.SELECTED}
+        <span>&#x2714; </span>{$image_derivative.DISPLAY}
+        {else}
+        <span style="visibility:hidden">&#x2714; </span>
+        <a href="{$image_derivative.URL}" rel=nofollow">{$image_derivative.DISPLAY}</a>
+        {/if}
+        {/foreach}
+      </div>
+      {/if}
 
       <ul class="categoryActions" id="categoryActionsID">
         <li>&nbsp;</li>
         {if !empty($image_orders) }
-        <li class="selector">
-        {'Sort order'|@translate}:
-        <select onchange="document.location = this.options[this.selectedIndex].value;">
-          {foreach from=$image_orders item=image_order }
-          <option value="{$image_order.URL}"{if $image_order.SELECTED} selected="selected"{/if}>{$image_order.DISPLAY}</option>
-          {/foreach}
-        </select>
-        </li>
-        {/if}
-
-        {if isset($favorite) }
-        <li><a id="icon_delall_favorite" class="button" href="{$favorite.U_FAVORITE}" title="{'delete all photos from your favorites'|@translate}"></a></li>
-        {/if}
-
-        {if isset($U_CADDIE) }
-        <li><a id="icon_caddie" class="button" href="{$U_CADDIE}" title="{'caddie'|@translate}"></a></li>
-        {/if}
-
-        {if isset($U_EDIT) }
-        <li><a id="icon_category_edit" class="button" href="{$U_EDIT}" title="{'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"></a></li>
-        {/if}
-
-        {if isset($U_SLIDESHOW) }
-        <li><a id="icon_start_slideshow" class="button" href="{$U_SLIDESHOW}" title="{'slideshow'|@translate}" rel="nofollow"></a></li>
-        {/if}
-
-        {if isset($U_MODE_FLAT) }
-        <li><a id="icon_flat" class="button" href="{$U_MODE_FLAT}" title="{'display all photos in all sub-albums'|@translate}" rel="nofollow"></a></li>
-        {/if}
-
-        {if isset($U_MODE_NORMAL) }
-        <li><a id="icon_normal_mode" class="button" href="{$U_MODE_NORMAL}" title="{'return to normal view mode'|@translate}"></a></li>
-        {/if}
-
-        {if isset($U_MODE_POSTED) }
-        <li><a id="icon_calendar" class="button" href="{$U_MODE_POSTED}" title="{'display a calendar by posted date'|@translate}" rel="nofollow"></a></li>
-        {/if}
-
-        {if isset($U_MODE_CREATED) }
-        <li><a id="icon_calendar_created" class="button" href="{$U_MODE_CREATED}" title="{'display a calendar by creation date'|@translate}" rel="nofollow"></a></li>
+        <li><a title="{'Sort order'|@translate}" id="icon_sort" class="button"></a></li>
+        {/if}
+
+        {if !empty($image_derivatives) }
+        <li><a title="{'Photo sizes'|@translate}" id="icon_derivatives" class="button"></a></li>
+        {/if}
+
+
+        {if isset($favorite)}
+        <li><a href="{$favorite.U_FAVORITE}" title="{'delete all photos from your favorites'|@translate}" id="icon_delall_favorite" class="button"></a></li>
+        {/if}
+
+        {if isset($U_CADDIE)}
+        <li><a href="{$U_CADDIE}" title="{'Add tocaddie'|@translate}" id="icon_caddie" class="button"></a></li>
+        {/if}
+
+        {if isset($U_EDIT)}
+        <li><a href="{$U_EDIT}" title="{'Edit album'|@translate}" id="icon_category_edit" class="button" ></a></li>
+        {/if}
+
+        {if isset($U_SEARCH_RULES)}
+        <li><a href="{$U_SEARCH_RULES}" style="border:none;" onclick="popuphelp(this.href); return false;" title="{'Search rules'|@translate}" rel="nofollow" id="icon_search_rules" class="button"></a></li>
+        {/if}
+
+        {if isset($U_SLIDESHOW)}
+        <li><a href="{$U_SLIDESHOW}" title="{'slideshow'|@translate}" rel="nofollow" id="icon_start_slideshow" class="button"></a></li>
+        {/if}
+
+        {if isset($U_MODE_FLAT)}
+        <li><a href="{$U_MODE_FLAT}" title="{'display all photos in all sub-albums'|@translate}" rel="nofollow" id="icon_flat" class="button"></a></li>
+        {/if}
+
+        {if isset($U_MODE_NORMAL)}
+        <li><a href="{$U_MODE_NORMAL}" title="{'return to normal view mode'|@translate}" id="icon_normal_mode" class="button"></a></li>
+        {/if}
+
+        {if isset($U_MODE_POSTED)}
+        <li><a href="{$U_MODE_POSTED}" title="{'display a calendar by posted date'|@translate}" rel="nofollow" id="icon_calendar" class="button"></a></li>
+        {/if}
+
+        {if isset($U_MODE_CREATED)}
+        <li><a href="{$U_MODE_CREATED}" title="{'display a calendar by creation date'|@translate}" rel="nofollow" id="icon_calendar_created" class="button"></a></li>
         {/if}
 
@@ -82,5 +107,5 @@
 <div id="subContent">
   <div class="titrePage{if !(isset($chronology_views) or isset($chronology.TITLE))}Empty{/if}" id="titreContent1">
-    {if isset($chronology_views) }
+    {if isset($chronology_views)}
     <div class="calendarViews">{'View'|@translate}:
       <select onchange="document.location = this.options[this.selectedIndex].value;">
@@ -92,12 +117,15 @@
     {/if}
 
-    {if isset($chronology.TITLE) }
-    <h2>{$chronology.TITLE}</h2>
+    {if isset($chronology.TITLE)}
+    <h2 class="calendarTitle">{$chronology.TITLE}</h2>
     {/if}
   </div>
 
+  {if isset($errors) or not empty($infos)}
+  {include file='infos_errors.tpl'}
+  {/if}
   {if !empty($PLUGIN_INDEX_CONTENT_BEGIN)}{$PLUGIN_INDEX_CONTENT_BEGIN}{/if}
 
-  {if !empty($category_search_results) }
+  {if !empty($category_search_results)}
   <div style="font-size:16px;text-align:left;margin:10px">{'Album results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
     <em><strong>
@@ -110,5 +138,5 @@
   {/if}
 
-  {if !empty($tag_search_results) }
+  {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>
@@ -121,5 +149,5 @@
   {/if}
 
-  {if isset($FILE_CHRONOLOGY_VIEW) }
+  {if isset($FILE_CHRONOLOGY_VIEW)}
   {include file=$FILE_CHRONOLOGY_VIEW}
   {/if}
@@ -145,6 +173,6 @@
         </div>
 
-        {if !empty($CATEGORIES) }<div id="categories">{$CATEGORIES}</div>{/if}
-        {if !empty($THUMBNAILS) }<div id="thumbnails">{$THUMBNAILS}</div>{/if}
+        {if !empty($CATEGORIES)}<div id="categories">{$CATEGORIES}</div>{/if}
+        {if !empty($THUMBNAILS)}<div id="thumbnails">{$THUMBNAILS}</div>{/if}
 
         <div id="additional_infoBOTTOM">
@@ -160,12 +188,12 @@
   {/if}
 
-  {if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
-
-</div> <!-- subContent -->
+  {if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+</div>{* subContent *}
 
 
 
 {if !empty($PLUGIN_INDEX_CONTENT_END) }{$PLUGIN_INDEX_CONTENT_END}{/if}
-</div> <!-- content -->
+</div> {* content *}
 
 {if !empty($PLUGIN_INDEX_CONTENT_AFTER)}{$PLUGIN_INDEX_CONTENT_AFTER}{/if}
Index: /extensions/gally/gally-black-graphite/template/mainpage_categories.tpl
===================================================================
--- /extensions/gally/gally-black-graphite/template/mainpage_categories.tpl	(revision 16016)
+++ /extensions/gally/gally-black-graphite/template/mainpage_categories.tpl	(revision 16017)
@@ -2,6 +2,6 @@
 
 <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}">
+  {foreach from=$category_thumbnails item=cat name=cat_loop}
+  <li class="odd{if ($smarty.foreach.cat_loop.iteration-1) % 2 == 0}0{else}1{/if}">
     <div class="thumbnailCategory" onclick="window.location='{$cat.URL}';">
       <div class="description">
@@ -17,9 +17,8 @@
 
         <div class="illustration">
-          <img {if isset($cat.EXTRA_CLASS)}class="{$cat.EXTRA_CLASS}"{/if} src="{$cat.TN_SRC}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">
+          <img {if isset($cat.EXTRA_CLASS)}class="{$cat.EXTRA_CLASS}"{/if} src="{$pwg->derivative_url($derivative_params, $cat.representative.src_image)}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">
         </div>
 
         <div class="text">
-
           {if isset($cat.INFO_DATES) }
           <p class="thumbCatDescNfoDate">{$cat.INFO_DATES}</p>
@@ -30,9 +29,5 @@
           {/if}
         </div>
-
-
       </div>
-
-
     </div>
   </li>
Index: /extensions/gally/gally-black-graphite/template/picture.tpl
===================================================================
--- /extensions/gally/gally-black-graphite/template/picture.tpl	(revision 16016)
+++ /extensions/gally/gally-black-graphite/template/picture.tpl	(revision 16017)
@@ -1,5 +1,5 @@
 <!-- **GBL** >PICTURE> -->
 
-{include file='dialogs.tpl'}
+{include file='infos_errors.tpl'}
 
 <div id="content" {if isset($MENUBAR)}class="pictureContent"{/if}>
@@ -11,12 +11,8 @@
       <div id="theImgHighZoomButton" class="fit" onclick="gallyPP.switchZoomHigh();"></div>
       <div id="theImgHighContainer2">
-        <img id="theImgHigh" src="" style="display:none;" alt="{$ALT_IMG}"
-          {if isset($COMMENT_IMG)}
-            title="{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}" {else} title="{$current.TITLE|@replace:'"':' '} - {$ALT_IMG}"
-          {/if}>
+        <img id="theImgHigh" src="" style="display:none;" alt="{$ALT_IMG}">
       </div>
     </div>
   </div>
-
 
   {if isset($MENUBAR)}
@@ -49,4 +45,32 @@
   {if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if}
 
+  {if $DISPLAY_NAV_THUMB}
+    {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'|@translate} : {$previous.TITLE}" rel="prev">
+            <img src="{$previous.derivatives.square->get_url()}" 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'|@translate} : {$next.TITLE}" rel="next">
+            <img src="{$next.derivatives.square->get_url()}" class="thumbLink" id="linkNext" alt="{$next.TITLE}">
+          </a>
+        </div>
+      </td></tr></table>
+    </div> <!-- navThumbNext -->
+    {/if}
+  {/if}
+
   <div id="imageToolBar">
     <div id="imageToolBarContainer" class="uiImg">
@@ -82,51 +106,63 @@
 
 
-    {if isset($U_SLIDESHOW_START) or isset($U_SLIDESHOW_STOP) or isset($U_METADATA) or
-        (#displayHighResIcon#=="yes" and isset($high)) or
+    {if isset($U_SLIDESHOW_START) or isset($U_METADATA) or
+        count($current.unique_derivatives)>1 or
         isset($current.U_DOWNLOAD) or isset($favorite) or !empty($U_SET_AS_REPRESENTATIVE) or
         isset($U_ADMIN) or isset($U_CADDIE)
     }
+
+      {if count($current.unique_derivatives)>1}
+      <div id="derivativeSwitchBox" class="switchBox">
+        <div class="switchBoxTitle">{'Photo sizes'|@translate}</div>
+        {foreach from=$current.unique_derivatives item=derivative key=derivative_type}
+        <span class="switchCheck" id="derivativeChecked{$derivative_type}"{if $derivative->get_type() ne $current.selected_derivative->get_type()} style="visibility:hidden"{/if}>&#x2714; </span>
+        <a onclick="gallyPP.changeImgSrc('{$derivative->get_url()|@escape:javascript}','{$derivative_type}','{$derivative->get_type()}', '{$COOKIE_PATH}')">
+          {$derivative->get_type()|@translate}<span class="derivativeSizeDetails"> ({$derivative->get_size_hr()})</span>
+        </a><br>
+        {/foreach}
+        {if isset($U_ORIGINAL)}
+        <span class="switchCheck" style="visibility:hidden">&#x2714; </span><a onclick="gallyPP.openDisplayHigh('{$U_ORIGINAL}');">{'Original'|@translate}</a>
+        {/if}
+      </div>
+      {/if}
+
     <div class="tab" id="tabRandomButtons">
+
       <div class="randomButtons">
 
-        {if isset($U_SLIDESHOW_START) }
-          <a id="icon_start_slideshow" class="button" href="{$U_SLIDESHOW_START}" title="{'Play of slideshow'|@translate}" rel="nofollow"></a>
-        {/if}
-        {if isset($U_SLIDESHOW_STOP) }
-          <a id="icon_stop_slideshow" class="button" href="{$U_SLIDESHOW_STOP}" title="{'Pause of slideshow'|@translate}" rel="nofollow"></a>
-        {/if}
+        {if count($current.unique_derivatives)>1}
+          <a id="icon_derivatives" title="{'Photo sizes'|@translate}" rel="nofollow" class="button" ></a>
+        {/if}
+
+        {if isset($U_SLIDESHOW_START)}
+          <a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" rel="nofollow" id="icon_start_slideshow" class="button"></a>
+        {/if}
+
         {if isset($U_METADATA)}
-          <a id="icon_metadata" class="button" href="{$U_METADATA}" title="{'Show file metadata'|@translate}" rel="nofollow"></a>
-        {/if}
-
-        {if #displayHighResIcon#=="yes" and isset($high) }
-          <a id="icon_high_res" class="button pointer" onclick="gallyPP.openDisplayHigh('{$high.U_HIGH}');" title="" rel="nofollow" ></a>
-        {/if}
-
-        {if isset($current.U_DOWNLOAD) }
-          <a id="icon_save" class="button" href="{$current.U_DOWNLOAD}" title="{'download this file'|@translate}"></a>
+          <a href="{$U_METADATA}" title="{'Show file metadata'|@translate}" rel="nofollow" id="icon_metadata" class="button"></a>
+        {/if}
+
+        {if isset($current.U_DOWNLOAD)}
+          <a href="{$current.U_DOWNLOAD}" title="{'Download this file'|@translate}" id="icon_save" class="button"></a>
         {/if}
 
         {if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
 
-
-        {if isset($favorite) }
-          <a id="icon_{if $favorite.IS_FAVORITE}del_{/if}favorite" class="button" onclick="window.location='{$favorite.U_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 album representative'|@translate}"></a>
-        {/if}
-        {if isset($U_ADMIN) }
-          <a id="icon_preferences" class="button" href="{$U_ADMIN}" title="{'Modify information'|@translate}"></a>
-        {/if}
-        {if isset($U_CADDIE) }
-        <script type="text/javascript">
-        {literal}
-        function addToCadie(aElement, rootUrl, id)
+          {if isset($favorite)}
+            <a href="{$favorite.U_FAVORITE}" title="{if $favorite.IS_FAVORITE}{'delete this photo from your favorites'|@translate}{else}{'add this photo to your favorites'|@translate}{/if}" id="icon_{if $favorite.IS_FAVORITE}del_{/if}favorite" class="button"></a>
+        {/if}
+          {if isset($U_SET_AS_REPRESENTATIVE)}
+            <a href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as album representative'|@translate}" id="icon_representative" class="button" ></a>
+        {/if}
+          {if isset($U_ADMIN)}
+            <a href="{$U_ADMIN}" title="{'Modify information'|@translate}" id="icon_preferences" class="button"></a>
+        {/if}
+          {if isset($U_CADDIE) }{*caddie management BEGIN*}
+          {footer_script}
+          {literal}function addToCadie(aElement, rootUrl, id)
         {
           if (aElement.disabled) return;
           aElement.disabled=true;
           var y = new PwgWS(rootUrl);
-
           y.callService(
             "pwg.caddie.add", {image_id: id} ,
@@ -137,10 +173,10 @@
           );
         }{/literal}
-        </script>
-        <a id="icon_caddie" class="button" onclick="addToCadie(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}); return false;" title="{'add to caddie'|@translate}"><!-- <img src="{$ROOT_URL}{$themeconf.icon_dir}/caddie_add.png" class="button" alt="{'caddie'|@translate}"> --></a>
-        {/if}
-        <script type="text/javascript">
+          {/footer_script}
+          <a onclick="addToCadie(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}); return false;" title="{'Add to caddie'|@translate}" id="icon_caddie" class="button"></a>
+          {/if}{*caddie management END*}
+          {footer_script}
           $('div.randomButtons a.button').addClass('sTipOnRight');
-        </script>
+          {/footer_script}
       </div>
     </div>
@@ -150,5 +186,4 @@
       {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
     </div>
-
 
     <ul id="theTabsheets">
@@ -177,4 +212,5 @@
     {if $display_info_panel}
       <div id="imageInfos" class="tabPanel">
+        <div id="imageInfosRight"></div>
         <div id="imageInfosContainer">
         <div class="imageInfosBg">&nbsp;</div>
@@ -183,27 +219,23 @@
             <tr  class="emptyrow" style="line-height:0px;">
               <td colspan="2">&nbsp;</td>
-              <td width="10px">&nbsp;</td>
-              <td width="12%">&nbsp;</td>
-              <td width="18%">&nbsp;</td>
-              <td width="10px">&nbsp;</td>
-              <td width="12%">&nbsp;</td>
-              <td width="18%">&nbsp;</td>
+              <td class='cTitle'>&nbsp;</td>
+              <td class='cNfo' >&nbsp;</td>
+              <td class='cTitle'>&nbsp;</td>
+              <td class='cNfo' >&nbsp;</td>
             </tr>
 
             {if $display_info.author or $display_info.created_on or $display_info.posted_on}
             <tr>
-              {assign var='colspan' value=8}
+              {assign var='colspan' value=6}
               {if $display_info.author}
-                {assign var='colspan' value=`$colspan-3`}
+                {assign var='colspan' value=`$colspan-2`}
                 <td class="label">{'Author'|@translate}</td>
                 <td class="value" style="min-width:214px;">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
-                <td>&nbsp;</td>
               {/if}
 
               {if $display_info.created_on}
-                {assign var='colspan' value=`$colspan-3`}
+                {assign var='colspan' value=`$colspan-2`}
                 <td class="label">{'Created on'|@translate}</td>
                 <td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
-                <td>&nbsp;</td>
               {/if}
 
@@ -223,18 +255,16 @@
             {if $display_info.dimensions or $display_info.file or $display_info.filesize}
             <tr>
-              {assign var='colspan' value=8}
+              {assign var='colspan' value=6}
 
               {if $display_info.dimensions}
-                {assign var='colspan' value=`$colspan-3`}
+                {assign var='colspan' value=`$colspan-2`}
                 <td class="label">{'Dimensions'|@translate}</td>
                 <td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS|@replace:"*":"x"}{else}{'N/A'|@translate}{/if}</td>
-                <td>&nbsp;</td>
               {/if}
 
               {if $display_info.file}
-                {assign var='colspan' value=`$colspan-3`}
+                {assign var='colspan' value=`$colspan-2`}
                 <td class="label">{'File'|@translate}</td>
                 <td class="value">{$INFO_FILE}</td>
-                <td>&nbsp;</td>
               {/if}
 
@@ -252,8 +282,8 @@
 
             {if isset($related_tags) and $display_info.tags}
-              <tr class="emptyrow"><td colspan="8">&nbsp;</td></tr>
+              <tr class="emptyrow"><td colspan="6">&nbsp;</td></tr>
               <tr id="infoTags">
                 <td class="label">{'Tags'|@translate}</td>
-                <td colspan="7" class="value">
+                <td colspan="5" 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}
@@ -263,8 +293,8 @@
 
             {if isset($related_categories) and $display_info.categories}
-              <tr class="emptyrow"><td colspan="8">&nbsp;</td></tr>
+              <tr class="emptyrow"><td colspan="6">&nbsp;</td></tr>
               <tr id="infoCats">
                 <td class="label">{'Albums'|@translate}</td>
-                <td colspan="7" class="value">
+                <td colspan="5" class="value">
                   {foreach from=$related_categories item=cat name=tag_loop}{if !$smarty.foreach.tag_loop.first},&nbsp;{/if}
                   {$cat}
@@ -273,10 +303,22 @@
               </tr>
             {/if}
-
             {if $display_info.visits}
-              <tr class="emptyrow"><td colspan="8">&nbsp;</td><tr>
+              <tr class="emptyrow"><td colspan="6">&nbsp;</td><tr>
               <tr>
                 <td class="label">{'Visits'|@translate}</td>
-                <td colspan="7" class="value">{$INFO_VISITS}</td>
+                <td {if !($display_info.privacy_level and isset($available_permission_levels))}colspan="5"{/if} class="value">{$INFO_VISITS}</td>
+
+                  {if $display_info.privacy_level and isset($available_permission_levels)}
+                      <td colspan="4" class="label"><a id="iPrivacyLevelLink">{'Who can see this photo?'|@translate}</a>
+
+                        <div id="privacyLevelBox" class="switchBox">
+                          {foreach from=$available_permission_levels item=label key=level}
+                          <span id="levelCheck{$level}" class="switchCheck" {if $level != $current.level} style="visibility:hidden"{/if}>&#x2714; </span>
+                          <a id="switchLevel{$level}" onclick="gallyPP.setPrivacyLevel('{$ROOT_URL}', {$current.id}, {$level})">{$label}</a><br>
+                          {/foreach}
+                        </div>
+                     </td>
+                  {/if}
+
               </tr>
             {/if}
@@ -297,8 +339,7 @@
                   <td colspan="2">&nbsp;</td>
                 {/if}
-                <td>&nbsp;</td>
 
                 {if isset($rating)}
-                  <td class="label" colspan="5">
+                  <td class="label" colspan="4">
                     <span id="updateRate">{if isset($rating.USER_RATE)}{'Update your rating'|@translate}{else}{'Rate this photo'|@translate}{/if}</span>
 
@@ -337,36 +378,8 @@
                   </td>
                 {else}
-                  <td colspan="5">&nbsp;</td>
+                  <td colspan="4">&nbsp;</td>
                 {/if}
               </tr>
             {/if}
-
-          {if isset($available_permission_levels) and $display_info.privacy_level}
-            <tr>
-              <td class="label">{'Who can see this photo?'|@translate}:</td>
-              <td colspan="4" class="value">
-                <script type="text/javascript">
-                {literal}function setPrivacyLevel(selectElement, rootUrl, id, level)
-                {
-                selectElement.disabled = true;
-                var y = new PwgWS(rootUrl);
-                y.callService(
-                  "pwg.images.setPrivacyLevel", {image_id: id, level:level} ,
-                  {
-                    method: "POST",
-                    onFailure: function(num, text) { selectElement.disabled = false; alert(num + " " + text); },
-                    onSuccess: function(result) { selectElement.disabled = false; }
-                  }
-                  );
-                }{/literal}
-                </script>
-                <select onchange="setPrivacyLevel(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}, this.options[selectedIndex].value)">
-                  {foreach from=$available_permission_levels item=label key=level}
-                  <option label="{$label}" value="{$level}"{if $level == $current.level} selected="selected"{/if}>{$label}</option>
-                  {/foreach}
-                </select>
-              </td>
-            </tr>
-          {/if}
 
           </table>
@@ -419,5 +432,5 @@
           {/if}
             <h4>{'Add a comment'|@translate}</h4>
-            <form  method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
+            <form method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
               <table>
                 {if $comment_add.SHOW_AUTHOR}
@@ -432,6 +445,6 @@
                 <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}"/>
+                    <input type="hidden" name="key" value="{$comment_add.KEY}">
+                    <input class="submit" type="submit" value="{'Submit'|@translate}">
                   </td>
                 </tr>
Index: /extensions/gally/gally-black-graphite/template/slideshow.tpl
===================================================================
--- /extensions/gally/gally-black-graphite/template/slideshow.tpl	(revision 16016)
+++ /extensions/gally/gally-black-graphite/template/slideshow.tpl	(revision 16017)
@@ -8,7 +8,7 @@
       <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a>
       {/if}
-      {if $SHOW_PICTURE_NAME_ON_TITLE }
+      {* if $SHOW_PICTURE_NAME_ON_TITLE *}
         &#124; <span class="showtitle">{$current.TITLE}</span>
-      {/if}
+      {* /if *}
     </div>
 
Index: /extensions/gally/gally-black-graphite/themeconf.inc.php
===================================================================
--- /extensions/gally/gally-black-graphite/themeconf.inc.php	(revision 16016)
+++ /extensions/gally/gally-black-graphite/themeconf.inc.php	(revision 16017)
@@ -2,5 +2,5 @@
 /*
 Theme Name: Gally/Black-graphite
-Version: 1.4.5
+Version: 1.5.0
 Description: simple dark-grey theme (inspired from Zaphod's theme <STRIPPED>)
 Theme URI: http://piwigo.org/ext/extension_view.php?eid=
