Index: /trunk/include/template.class.php
===================================================================
--- /trunk/include/template.class.php	(revision 8377)
+++ /trunk/include/template.class.php	(revision 8378)
@@ -93,5 +93,5 @@
     $this->smarty->register_function('get_combined_scripts', array(&$this, 'func_get_combined_scripts') );
     $this->smarty->register_function('combine_css', array(&$this, 'func_combine_css') );
-    $this->smarty->register_function('get_combined_css', array(&$this, 'func_get_combined_css') );
+    $this->smarty->register_compiler_function('get_combined_css', array(&$this, 'func_get_combined_css') );
     $this->smarty->register_block('footer_script', array(&$this, 'block_footer_script') );
     $this->smarty->register_function('known_script', array(&$this, 'func_known_script') );
@@ -443,4 +443,5 @@
           implode( "\n", $content ),
           $this->output );
+			$this->css_by_priority = array();
     }
 
@@ -607,10 +608,10 @@
         $content[]= '<script type="text/javascript">';
         $content[]= '(function() {
-  var after = document.getElementsByTagName(\'script\')[document.getElementsByTagName(\'script\').length-1];
-  var s;';
+var after = document.getElementsByTagName(\'script\')[document.getElementsByTagName(\'script\').length-1];
+var s;';
         foreach ($scripts[1] as $id => $script)
         {
           $content[]=
-            's=document.createElement(\'script\'); s.type = \'text/javascript\'; s.async = true; s.src = \''
+            's=document.createElement(\'script\'); s.type=\'text/javascript\'; s.async=true; s.src=\''
             . self::make_script_src($script)
             .'\';';
@@ -662,5 +663,5 @@
   function func_get_combined_css($params, &$smarty)
   {
-    return self::COMBINED_CSS_TAG;
+    return 'echo '.var_export(self::COMBINED_CSS_TAG,true);
   }
 
@@ -736,5 +737,5 @@
 
     $regex = array();
-    $tags = array('if', 'foreach', 'section');
+    $tags = array('if','foreach','section','footer_script');
     foreach($tags as $tag)
     {
@@ -742,5 +743,5 @@
       array_push($regex, "#^[ \t]+($ldq/$tag$rdq)\s*$#m");
     }
-    $tags = array('include', 'else', 'html_head');
+    $tags = array('include','else','combine_script','html_head');
     foreach($tags as $tag)
     {
@@ -1192,6 +1193,5 @@
     }
 
-    $output = '';
-    $output .= "/* ".count($this->files)."\n".join("\n", $this->files)."*/\n";
+    $output = "/* ".join("\n", $this->files)."*/\n";
     foreach ($this->files as $input_file)
     {
@@ -1227,4 +1227,5 @@
     require_once(PHPWG_ROOT_PATH.'include/cssmin.class.php');
     $css = CssMin::minify($css, array('emulate-css3-variables'=>false));
+		$css = trigger_event('combined_css_postfilter', $css);
     return $css;
   }
@@ -1243,5 +1244,5 @@
           $relative = dirname($file) . "/$match[1]";
           $search[] = $match[0];
-          $replace[] = "url('" . get_absolute_root_url(false) . $relative . "')";
+          $replace[] = 'url('.embellish_url(get_absolute_root_url(false)).$relative.')';
         }
       }
Index: /trunk/themes/default/fix-ie7.css
===================================================================
--- /trunk/themes/default/fix-ie7.css	(revision 8377)
+++ /trunk/themes/default/fix-ie7.css	(revision 8378)
@@ -20,2 +20,5 @@
 }
 
+.pwg-icon {
+	display: block;
+}
Index: /trunk/themes/default/template/picture.tpl
===================================================================
--- /trunk/themes/default/template/picture.tpl	(revision 8377)
+++ /trunk/themes/default/template/picture.tpl	(revision 8378)
@@ -1,4 +1,3 @@
-{* Example of resizeable *}
-{*
+{* Example of resizeable
 {include file='include/autosize.inc.tpl'}
 *}
@@ -6,19 +5,18 @@
 {if isset($errors)}
 <div class="errors">
-  <ul>
-    {foreach from=$errors item=error}
-    <li>{$error}</li>
-    {/foreach}
-  </ul>
-</div>
-{/if}
-
+	<ul>
+		{foreach from=$errors item=error}
+		<li>{$error}</li>
+		{/foreach}
+	</ul>
+</div>
+{/if}
 {if isset($infos)}
 <div class="infos">
-  <ul>
-    {foreach from=$infos item=info}
-    <li>{$info}</li>
-    {/foreach}
-  </ul>
+	<ul>
+		{foreach from=$infos item=info}
+		<li>{$info}</li>
+		{/foreach}
+	</ul>
 </div>
 {/if}
@@ -27,46 +25,45 @@
 
 <div id="imageHeaderBar">
-  <div class="browsePath">
-    {$SECTION_TITLE}
-    {$LEVEL_SEPARATOR}{$current.TITLE}
-  </div>
-  <div class="imageNumber">{$PHOTO}</div>
-  {if $SHOW_PICTURE_NAME_ON_TITLE }
-  <h2>{$current.TITLE}</h2>
-  {/if}
+	<div class="browsePath">
+		{$SECTION_TITLE} {$LEVEL_SEPARATOR}{$current.TITLE}
+	</div>
+	<div class="imageNumber">{$PHOTO}</div>
+	{if $SHOW_PICTURE_NAME_ON_TITLE}
+	<h2>{$current.TITLE}</h2>
+	{/if}
 </div>
 
 <div id="imageToolBar">
-	<div class="actionButtons">
+<div class="actionButtons">
 {if isset($U_SLIDESHOW_START)}
-		<a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-slideshow">&nbsp;</span><span class="pwg-button-text">{'slideshow'|@translate}</span>
-		</a>
+	<a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-slideshow">&nbsp;</span><span class="pwg-button-text">{'slideshow'|@translate}</span>
+	</a>
 {/if}
 {if isset($U_METADATA)}
-		<a href="{$U_METADATA}" title="{'Show file metadata'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-camera-info">&nbsp;</span><span class="pwg-button-text">{'Show file metadata'|@translate}</span>
-		</a>
+	<a href="{$U_METADATA}" title="{'Show file metadata'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-camera-info">&nbsp;</span><span class="pwg-button-text">{'Show file metadata'|@translate}</span>
+	</a>
 {/if}
 {if isset($current.U_DOWNLOAD)}
-		<a href="{$current.U_DOWNLOAD}" title="{'download this file'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-save">&nbsp;</span><span class="pwg-button-text">{'download'|@translate}</span>
-		</a>
+	<a href="{$current.U_DOWNLOAD}" title="{'download this file'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-save">&nbsp;</span><span class="pwg-button-text">{'download'|@translate}</span>
+	</a>
 {/if}
 {if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
 {if isset($favorite)}
-		<a href="{$favorite.U_FAVORITE}" title="{if $favorite.IS_FAVORITE}{'delete this image from your favorites'|@translate}{else}{'add this image to your favorites'|@translate}{/if}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-favorite-{if $favorite.IS_FAVORITE}del{else}add{/if}">&nbsp;</span><span class="pwg-button-text">{'Favorites'|@translate}</span>
-		</a>
+	<a href="{$favorite.U_FAVORITE}" title="{if $favorite.IS_FAVORITE}{'delete this image from your favorites'|@translate}{else}{'add this image to your favorites'|@translate}{/if}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-favorite-{if $favorite.IS_FAVORITE}del{else}add{/if}">&nbsp;</span><span class="pwg-button-text">{'Favorites'|@translate}</span>
+	</a>
 {/if}
 {if isset($U_SET_AS_REPRESENTATIVE)}
-		<a href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as album representative'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-representative">&nbsp;</span><span class="pwg-button-text">{'representative'|@translate}</span>
-		</a>
+	<a href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as album representative'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-representative">&nbsp;</span><span class="pwg-button-text">{'representative'|@translate}</span>
+	</a>
 {/if}
 {if isset($U_ADMIN)}
-		<a href="{$U_ADMIN}" title="{'Modify information'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-edit">&nbsp;</span><span class="pwg-button-text">{'edit'|@translate}</span>
-		</a>
+	<a href="{$U_ADMIN}" title="{'Modify information'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-edit">&nbsp;</span><span class="pwg-button-text">{'edit'|@translate}</span>
+	</a>
 {/if}
 {if isset($U_CADDIE)}{*caddie management BEGIN*}
@@ -77,5 +74,4 @@
 aElement.disabled=true;
 var y = new PwgWS(rootUrl);
-
 y.callService(
 	"pwg.caddie.add", {image_id: id} ,
@@ -87,9 +83,9 @@
 }{/literal}
 {/footer_script}
-		<a href="{$U_CADDIE}" onclick="addToCadie(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}); return false;" title="{'add to caddie'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
-			<span class="pwg-icon pwg-icon-caddie-add">&nbsp;</span><span class="pwg-button-text">{'caddie'|@translate}</span>
-		</a>
+	<a href="{$U_CADDIE}" onclick="addToCadie(this, '{$ROOT_URL}', {$current.id}); return false;" title="{'add to caddie'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-caddie-add">&nbsp;</span><span class="pwg-button-text">{'caddie'|@translate}</span>
+	</a>
 {/if}{*caddie management END*}
-	</div>   
+</div>
 
 	{include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
@@ -103,7 +99,7 @@
 {/if}
 
-{if isset($U_SLIDESHOW_STOP) }
+{if isset($U_SLIDESHOW_STOP)}
 <p>
-  [ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
+	[ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
 </p>
 {/if}
@@ -112,12 +108,12 @@
 
 {if $DISPLAY_NAV_THUMB}
-{if isset($previous) }
+{if isset($previous)}
 <a class="navThumb" id="linkPrev" href="{$previous.U_IMG}" title="{'Previous'|@translate} : {$previous.TITLE}" rel="prev">
-  <img src="{$previous.THUMB_SRC}" alt="{$previous.TITLE}">
+	<img src="{$previous.THUMB_SRC}" alt="{$previous.TITLE}">
 </a>
 {/if}
-{if isset($next) }
+{if isset($next)}
 <a class="navThumb" id="linkNext" href="{$next.U_IMG}" title="{'Next'|@translate} : {$next.TITLE}" rel="next">
-  <img src="{$next.THUMB_SRC}" alt="{$next.TITLE}">
+	<img src="{$next.THUMB_SRC}" alt="{$next.TITLE}">
 </a>
 {/if}
@@ -125,79 +121,78 @@
 
 <table id="standard" class="infoTable" summary="{'Some info about this picture'|@translate}">
-  {if $display_info.author}
-  <tr id="Author">
-    <td class="label">{'Author'|@translate}</td>
-    <td class="value">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
-  </tr>
-  {/if}
-  {if $display_info.created_on}
-  <tr id="datecreate">
-    <td class="label">{'Created on'|@translate}</td>
-    <td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
-  </tr>
-  {/if}
-  {if $display_info.posted_on}
-  <tr id="datepost">
-    <td class="label">{'Posted on'|@translate}</td>
-    <td class="value">{$INFO_POSTED_DATE}</td>
-  </tr>
-  {/if}
-  {if $display_info.dimensions}
-  <tr id="Dimensions">
-    <td class="label">{'Dimensions'|@translate}</td>
-    <td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS}{else}{'N/A'|@translate}{/if}</td>
-  </tr>
-  {/if}
-  {if $display_info.file}
-  <tr id="File">
-    <td class="label">{'File'|@translate}</td>
-    <td class="value">{$INFO_FILE}</td>
-  </tr>
-  {/if}
-  {if $display_info.filesize}
-  <tr id="Filesize">
-    <td class="label">{'Filesize'|@translate}</td>
-    <td class="value">{if isset($INFO_FILESIZE)}{$INFO_FILESIZE}{else}{'N/A'|@translate}{/if}</td>
-  </tr>
-  {/if}
-  {if $display_info.tags}
-  <tr id="Tags">
-    <td class="label">{'Tags'|@translate}</td>
-    <td class="value">
-      {if isset($related_tags)}
-        {foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}
-        <a href="{$tag.URL}">{$tag.name}</a>{/foreach}
-      {/if}
-    </td>
-  </tr>
-  {/if}
-  {if $display_info.categories}
-  <tr id="Categories">
-    <td class="label">{'Albums'|@translate}</td>
-    <td class="value">
-      {if isset($related_categories)}
-      <ul>
-        {foreach from=$related_categories item=cat}
-        <li>{$cat}</li>
-        {/foreach}
-      </ul>
-      {/if}
-    </td>
-  </tr>
-  {/if}
-  {if $display_info.visits}
-  <tr id="Visits">
-    <td class="label">{'Visits'|@translate}</td>
-    <td class="value">{$INFO_VISITS}</td>
-  </tr>
-  {/if}
-
-{if $display_info.average_rate and isset($rate_summary) }
+	{if $display_info.author}
+	<tr id="Author">
+		<td class="label">{'Author'|@translate}</td>
+		<td class="value">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
+	</tr>
+	{/if}
+	{if $display_info.created_on}
+	<tr id="datecreate">
+		<td class="label">{'Created on'|@translate}</td>
+		<td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
+	</tr>
+	{/if}
+	{if $display_info.posted_on}
+	<tr id="datepost">
+		<td class="label">{'Posted on'|@translate}</td>
+		<td class="value">{$INFO_POSTED_DATE}</td>
+	</tr>
+	{/if}
+	{if $display_info.dimensions}
+	<tr id="Dimensions">
+		<td class="label">{'Dimensions'|@translate}</td>
+		<td class="value">{if isset($INFO_DIMENSIONS)}{$INFO_DIMENSIONS}{else}{'N/A'|@translate}{/if}</td>
+	</tr>
+	{/if}
+	{if $display_info.file}
+	<tr id="File">
+		<td class="label">{'File'|@translate}</td>
+		<td class="value">{$INFO_FILE}</td>
+	</tr>
+	{/if}
+	{if $display_info.filesize}
+	<tr id="Filesize">
+		<td class="label">{'Filesize'|@translate}</td>
+		<td class="value">{if isset($INFO_FILESIZE)}{$INFO_FILESIZE}{else}{'N/A'|@translate}{/if}</td>
+	</tr>
+	{/if}
+	{if $display_info.tags}
+	<tr id="Tags">
+		<td class="label">{'Tags'|@translate}</td>
+		<td class="value">
+			{if isset($related_tags)}
+				{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}<a href="{$tag.URL}">{$tag.name}</a>{/foreach}
+			{/if}
+		</td>
+	</tr>
+	{/if}
+	{if $display_info.categories}
+	<tr id="Categories">
+		<td class="label">{'Albums'|@translate}</td>
+		<td class="value">
+			{if isset($related_categories)}
+			<ul>
+				{foreach from=$related_categories item=cat}
+				<li>{$cat}</li>
+				{/foreach}
+			</ul>
+			{/if}
+		</td>
+	</tr>
+	{/if}
+	{if $display_info.visits}
+	<tr id="Visits">
+		<td class="label">{'Visits'|@translate}</td>
+		<td class="value">{$INFO_VISITS}</td>
+	</tr>
+	{/if}
+
+{if $display_info.average_rate and isset($rate_summary)}
 	<tr id="Average">
 		<td class="label">{'Average rate'|@translate}</td>
 		<td class="value" id="ratingSummary">
 		{if $rate_summary.count}
-			{assign var='rate_text' value='%.2f (rated %d times)'|@translate }
-			{$pwg->sprintf($rate_text, $rate_summary.average, $rate_summary.count) }
+			{assign var='rate_text' value='%.2f (rated %d times)'|@translate}
+			{$pwg->sprintf($rate_text, $rate_summary.average, $rate_summary.count)}
 		{else}
 			{'no rate'|@translate}
@@ -206,5 +201,5 @@
 	</tr>
 {/if}
-  
+
 {if isset($rating)}
 	<tr id="rating">
@@ -214,21 +209,20 @@
 		<td class="value">
 			<form action="{$rating.F_ACTION}" method="post" id="rateForm" style="margin:0;">
-			<div>&nbsp;
+			<div>
 			{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}">
+				<input type="button" name="rate" value="{$mark}" class="rateButtonSelected" title="{$mark}">
 			{else}
-			  <input type="submit" name="rate" value="{$mark}" class="rateButton" title="{$mark}">
+				<input type="submit" name="rate" value="{$mark}" class="rateButton" title="{$mark}">
 			{/if}
 			{/foreach}
 			{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
 			{combine_script id='rating' load='async' require='core.scripts' path='themes/default/js/rating.js'}
-			<script type="text/javascript">
-				var _pwgRatingAutoQueue = _pwgRatingAutoQueue || [];
-				_pwgRatingAutoQueue.push(  {ldelim}rootUrl: '{$ROOT_URL|@escape:"javascript"}', image_id: {$current.id},
+			{footer_script}
+				var _pwgRatingAutoQueue = _pwgRatingAutoQueue||[];
+				_pwgRatingAutoQueue.push( {ldelim}rootUrl: '{$ROOT_URL}', image_id: {$current.id},
 					updateRateText: "{'Update your rating'|@translate|@escape:'javascript'}", updateRateElement: document.getElementById("updateRate"),
-					ratingSummaryText: "{'%.2f (rated %d times)'|@translate|@escape:'javascript'}", ratingSummaryElement: document.getElementById("ratingSummary") {rdelim} );
-			</script>
+					ratingSummaryText: "{'%.2f (rated %d times)'|@translate|@escape:'javascript'}", ratingSummaryElement: document.getElementById("ratingSummary"){rdelim} );
+			{/footer_script}
 			</div>
 			</form>
@@ -237,8 +231,8 @@
 {/if}
 
-{if $display_info.privacy_level and isset($available_permission_levels) }
+{if $display_info.privacy_level and isset($available_permission_levels)}
 	<tr id="Privacy">
 		<td class="label">{'Who can see this photo?'|@translate}</td>
-		<td class="value"> 
+		<td class="value">
 {combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
 {footer_script}
@@ -257,5 +251,5 @@
 }{/literal}
 {/footer_script}
-	<select onchange="setPrivacyLevel(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}, this.options[selectedIndex].value)">
+	<select onchange="setPrivacyLevel(this, '{$ROOT_URL}', {$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>
@@ -270,26 +264,25 @@
 <table id="Metadata" class="infoTable2" summary="{'Some more (technical) info about this picture'|@translate}">
 {foreach from=$metadata item=meta}
-  <tr>
-    <th colspan="2">{$meta.TITLE}</th>
-  </tr>
-  {foreach from=$meta.lines item=value key=label}
-  <tr>
-    <td class="label">{$label}</td>
-    <td class="value">{$value}</td>
-  </tr>
-  {/foreach}
+	<tr>
+		<th colspan="2">{$meta.TITLE}</th>
+	</tr>
+	{foreach from=$meta.lines item=value key=label}
+	<tr>
+		<td class="label">{$label}</td>
+		<td class="value">{$value}</td>
+	</tr>
+	{/foreach}
 {/foreach}
 </table>
 {/if}
 
-
 <hr class="separation">
 
 {if isset($COMMENT_COUNT)}
 <div id="comments">
-  {if $COMMENT_COUNT > 0}
+	{if $COMMENT_COUNT > 0}
 		<h3>{$pwg->l10n_dec('%d comment', '%d comments',$COMMENT_COUNT)}</h3>
-  {/if}
-  {if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+	{/if}
+	{if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
 
 	{if isset($comments)}
@@ -298,5 +291,5 @@
 
 	{if isset($comment_add)}
-	<form  method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
+	<form method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
 	<fieldset>
 		<legend>{'Add a comment'|@translate}</legend>
@@ -311,5 +304,5 @@
 	{/if}
 </div>
-{/if} {*comments*}
+{/if}{*comments*}
 
 {if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if}
