Index: /extensions/Slim/Slim.php
===================================================================
--- /extensions/Slim/Slim.php	(revision 25996)
+++ /extensions/Slim/Slim.php	(revision 25997)
@@ -2,7 +2,8 @@
 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
 
-global $conf, $template,$smarty, $repeat;
+global $conf, $template;
 	$params = array_merge(unserialize($conf['Slim']));
-	
+	$template->assign('Slim', $params);
+
 	
 	
@@ -13,5 +14,5 @@
 <link rel="stylesheet" type="text/css" href="themes/Slim/theme_black.css">
 
-		',$smarty, $repeat);
+		');
 		};
 if ($params['color_theme'] == 3 )
@@ -20,5 +21,5 @@
 <link rel="stylesheet" type="text/css" href="themes/Slim/theme_grey.css">
 
-		',$smarty, $repeat);
+		');
 		};
 
Index: /extensions/Slim/admin/admin.tpl
===================================================================
--- /extensions/Slim/admin/admin.tpl	(revision 25996)
+++ /extensions/Slim/admin/admin.tpl	(revision 25997)
@@ -1,4 +1,3 @@
 {html_head}
-	<script src="themes/Slim/admin/js/jquery.screwdefaultbuttonsV2.min.js" type="text/javascript"></script>
 	<style media="screen" type="text/css">
 		{literal}
@@ -6,18 +5,4 @@
 		{/literal}
 	</style>
-
-	<script type="text/javascript">
-	{literal}
-		$(function(){
-		
-			$('input:radio').screwDefaultButtons({
-				image: 'url("themes/Slim/admin/images/radioSmall_Blue.png")',
-				width: 35,
-				height: 35
-			});
-			
-		});
-	{/literal}
-	</script>
 {/html_head}
 	
Index: /extensions/Slim/js/jcarousel.skeleton.js
===================================================================
--- /extensions/Slim/js/jcarousel.skeleton.js	(revision 25997)
+++ /extensions/Slim/js/jcarousel.skeleton.js	(revision 25997)
@@ -0,0 +1,62 @@
+(function($) {
+    $(function() {
+        /*
+        Carousel initialization
+        */
+        $('.jcarousel')
+            .jcarousel({
+                // Options go here
+            })		
+			.jcarouselAutoscroll({
+			interval: 3000,
+			target: '+=1',
+			autostart: true
+			});	
+
+
+        /*
+         Prev control initialization
+         */
+        $('.jcarousel-control-prev')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                // Options go here
+                target: '-=1'
+            });
+
+        /*
+         Next control initialization
+         */
+        $('.jcarousel-control-next')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                // Options go here
+                target: '+=1'
+            });
+
+        /*
+         Pagination initialization
+         */
+        $('.jcarousel-pagination')
+            .on('jcarouselpagination:active', 'a', function() {
+                $(this).addClass('active');
+            })
+            .on('jcarouselpagination:inactive', 'a', function() {
+                $(this).removeClass('active');
+            })
+            .jcarouselPagination({
+                // Options go here
+            });
+			
+    });
+})(jQuery);
Index: /extensions/Slim/js/jquery.columnizer.js
===================================================================
--- /extensions/Slim/js/jquery.columnizer.js	(revision 25997)
+++ /extensions/Slim/js/jquery.columnizer.js	(revision 25997)
@@ -0,0 +1,639 @@
+// version 1.6.0
+// http://welcome.totheinter.net/columnizer-jquery-plugin/
+// created by: Adam Wulf @adamwulf, adam.wulf@gmail.com
+
+(function($){
+
+ $.fn.columnize = function(options) {
+
+
+	var defaults = {
+		// default width of columns
+		width: 400,
+		// optional # of columns instead of width
+		columns : false,
+		// true to build columns once regardless of window resize
+		// false to rebuild when content box changes bounds
+		buildOnce : false,
+		// an object with options if the text should overflow
+		// it's container if it can't fit within a specified height
+		overflow : false,
+		// this function is called after content is columnized
+		doneFunc : function(){},
+		// if the content should be columnized into a 
+		// container node other than it's own node
+		target : false,
+		// re-columnizing when images reload might make things
+		// run slow. so flip this to true if it's causing delays
+		ignoreImageLoading : true,
+		// should columns float left or right
+		columnFloat : "left",
+		// ensure the last column is never the tallest column
+		lastNeverTallest : false,
+		// (int) the minimum number of characters to jump when splitting
+		// text nodes. smaller numbers will result in higher accuracy
+		// column widths, but will take slightly longer
+		accuracy : false,
+		// don't automatically layout columns, only use manual columnbreak
+		manualBreaks : false,
+		// previx for all the CSS classes used by this plugin
+		// default to empty string for backwards compatibility
+		cssClassPrefix : ""
+	};
+	options = $.extend(defaults, options);
+
+	if(typeof(options.width) == "string"){
+		options.width = parseInt(options.width,10);
+		if(isNaN(options.width)){
+			options.width = defaults.width;
+		}
+	}
+		
+	/**
+	 * appending a text node to a <table> will
+	 * cause a jquery crash.
+	 * so wrap all append() calls and revert to
+	 * a simple appendChild() in case it fails
+	 */
+	function appendSafe($target, $elem){
+		try{
+			$target.append($elem);
+		}catch(e){
+			$target[0].appendChild($elem[0]);
+		}
+	}
+
+    return this.each(function() {
+		var $inBox = options.target ? $(options.target) : $(this);
+		var maxHeight = $(this).height();
+		var $cache = $('<div></div>'); // this is where we'll put the real content
+		var lastWidth = 0;
+		var columnizing = false;
+		var manualBreaks = options.manualBreaks;
+		var cssClassPrefix = defaults.cssClassPrefix;
+		if(typeof(options.cssClassPrefix) == "string"){
+			cssClassPrefix = options.cssClassPrefix;
+		}
+
+
+		var adjustment = 0;
+
+		appendSafe($cache, $(this).contents().clone(true));
+
+		// images loading after dom load
+		// can screw up the column heights,
+		// so recolumnize after images load
+		if(!options.ignoreImageLoading && !options.target){
+			if(!$inBox.data("imageLoaded")){
+				$inBox.data("imageLoaded", true);
+				if($(this).find("img").length > 0){
+					// only bother if there are
+					// actually images...
+					var func = function($inBox,$cache){ return function(){
+							if(!$inBox.data("firstImageLoaded")){
+								$inBox.data("firstImageLoaded", "true");
+								appendSafe($inBox.empty(), $cache.children().clone(true));
+								$inBox.columnize(options);
+							}
+						};
+					}($(this), $cache);
+					$(this).find("img").one("load", func);
+					$(this).find("img").one("abort", func);
+					return;
+				}
+			}
+		}
+
+		$inBox.empty();
+
+		columnizeIt();
+
+		if(!options.buildOnce){
+			$(window).resize(function() {
+				if(!options.buildOnce){
+					if($inBox.data("timeout")){
+						clearTimeout($inBox.data("timeout"));
+					}
+					$inBox.data("timeout", setTimeout(columnizeIt, 200));
+				}
+			});
+		}
+
+		function prefixTheClassName(className, withDot){
+			var dot = withDot ? "." : "";
+			if(cssClassPrefix.length){
+				return dot + cssClassPrefix + "-" + className;
+			}
+			return dot + className;
+		}
+
+		/**
+		 * this fuction builds as much of a column as it can without
+		 * splitting nodes in half. If the last node in the new column
+		 * is a text node, then it will try to split that text node. otherwise
+		 * it will leave the node in $pullOutHere and return with a height
+		 * smaller than targetHeight.
+		 * 
+         * Returns a boolean on whether we did some splitting successfully at a text point
+         * (so we know we don't need to split a real element). return false if the caller should
+         * split a node if possible to end this column.
+		 *
+		 * @param putInHere, the jquery node to put elements into for the current column
+		 * @param $pullOutHere, the jquery node to pull elements out of (uncolumnized html)
+		 * @param $parentColumn, the jquery node for the currently column that's being added to
+		 * @param targetHeight, the ideal height for the column, get as close as we can to this height
+		 */
+		function columnize($putInHere, $pullOutHere, $parentColumn, targetHeight){
+			//
+			// add as many nodes to the column as we can,
+			// but stop once our height is too tall
+			while((manualBreaks || $parentColumn.height() < targetHeight) &&
+				$pullOutHere[0].childNodes.length){
+				var node = $pullOutHere[0].childNodes[0];
+				//
+				// Because we're not cloning, jquery will actually move the element"
+				// http://welcome.totheinter.net/2009/03/19/the-undocumented-life-of-jquerys-append/
+				if($(node).find(prefixTheClassName("columnbreak", true)).length){
+					//
+					// our column is on a column break, so just end here
+					return;
+				}
+				if($(node).hasClass(prefixTheClassName("columnbreak"))){
+					//
+					// our column is on a column break, so just end here
+					return;
+				}
+				appendSafe($putInHere, $(node));
+			}
+			if($putInHere[0].childNodes.length === 0) return;
+
+			// now we're too tall, so undo the last one
+			var kids = $putInHere[0].childNodes;
+			var lastKid = kids[kids.length-1];
+			$putInHere[0].removeChild(lastKid);
+			var $item = $(lastKid);
+
+			// now lets try to split that last node
+			// to fit as much of it as we can into this column
+			if($item[0].nodeType == 3){
+				// it's a text node, split it up
+				var oText = $item[0].nodeValue;
+				var counter2 = options.width / 18;
+				if(options.accuracy)
+				counter2 = options.accuracy;
+				var columnText;
+				var latestTextNode = null;
+				while($parentColumn.height() < targetHeight && oText.length){
+					//
+					// it's been brought up that this won't work for chinese
+					// or other languages that don't have the same use of whitespace
+					// as english. This will need to be updated in the future
+					// to better handle non-english languages.
+					//
+					// https://github.com/adamwulf/Columnizer-jQuery-Plugin/issues/124
+					var indexOfSpace = oText.indexOf(' ', counter2);
+					if (indexOfSpace != -1) {
+						columnText = oText.substring(0, indexOfSpace);
+					} else {
+						columnText = oText;
+					}
+					latestTextNode = document.createTextNode(columnText);
+					appendSafe($putInHere, $(latestTextNode));
+
+					if(oText.length > counter2 && indexOfSpace != -1){
+						oText = oText.substring(indexOfSpace);
+					}else{
+						oText = "";
+					}
+				}
+				if($parentColumn.height() >= targetHeight && latestTextNode !== null){
+					// too tall :(
+					$putInHere[0].removeChild(latestTextNode);
+					oText = latestTextNode.nodeValue + oText;
+				}
+				if(oText.length){
+					$item[0].nodeValue = oText;
+				}else{
+					return false; // we ate the whole text node, move on to the next node
+				}
+			}
+
+			if($pullOutHere.contents().length){
+				$pullOutHere.prepend($item);
+			}else{
+				appendSafe($pullOutHere, $item);
+			}
+
+			return $item[0].nodeType == 3;
+		}
+
+		/**
+		 * Split up an element, which is more complex than splitting text. We need to create 
+		 * two copies of the element with it's contents divided between each
+		 */
+		function split($putInHere, $pullOutHere, $parentColumn, targetHeight){
+			if($putInHere.contents(":last").find(prefixTheClassName("columnbreak", true)).length){
+				//
+				// our column is on a column break, so just end here
+				return;
+			}
+			if($putInHere.contents(":last").hasClass(prefixTheClassName("columnbreak"))){
+				//
+				// our column is on a column break, so just end here
+				return;
+			}
+			if($pullOutHere.contents().length){
+				var $cloneMe = $pullOutHere.contents(":first");
+				//
+				// make sure we're splitting an element
+				if( typeof $cloneMe.get(0) == 'undefined' || $cloneMe.get(0).nodeType != 1 ) return;
+
+				//
+				// clone the node with all data and events
+				var $clone = $cloneMe.clone(true);
+				//
+				// need to support both .prop and .attr if .prop doesn't exist.
+				// this is for backwards compatibility with older versions of jquery.
+				if($cloneMe.hasClass(prefixTheClassName("columnbreak"))){
+					//
+					// ok, we have a columnbreak, so add it into
+					// the column and exit
+					appendSafe($putInHere, $clone);
+					$cloneMe.remove();
+				}else if (manualBreaks){
+					// keep adding until we hit a manual break
+					appendSafe($putInHere, $clone);
+					$cloneMe.remove();
+				}else if($clone.get(0).nodeType == 1 && !$clone.hasClass(prefixTheClassName("dontend"))){
+					appendSafe($putInHere, $clone);
+					if($clone.is("img") && $parentColumn.height() < targetHeight + 20){
+						//
+						// we can't split an img in half, so just add it
+						// to the column and remove it from the pullOutHere section
+						$cloneMe.remove();
+					}else if($cloneMe.hasClass(prefixTheClassName("dontsplit")) && $parentColumn.height() < targetHeight + 20){
+						//
+						// pretty close fit, and we're not allowed to split it, so just
+						// add it to the column, remove from pullOutHere, and be done
+						$cloneMe.remove();
+					}else if($clone.is("img") || $cloneMe.hasClass(prefixTheClassName("dontsplit"))){
+						//
+						// it's either an image that's too tall, or an unsplittable node
+						// that's too tall. leave it in the pullOutHere and we'll add it to the 
+						// next column
+						$clone.remove();
+					}else{
+						//
+						// ok, we're allowed to split the node in half, so empty out
+						// the node in the column we're building, and start splitting
+						// it in half, leaving some of it in pullOutHere
+						$clone.empty();
+						if(!columnize($clone, $cloneMe, $parentColumn, targetHeight)){
+							// this node may still have non-text nodes to split
+							// add the split class and then recur
+							$cloneMe.addClass(prefixTheClassName("split"));
+							
+							//if this node was ol element, the child should continue the number ordering
+							if($cloneMe.get(0).tagName == 'OL'){
+								var startWith = $clone.get(0).childElementCount + $clone.get(0).start;
+								$cloneMe.attr('start',startWith+1);
+							}
+							
+							if($cloneMe.children().length){
+								split($clone, $cloneMe, $parentColumn, targetHeight);
+							}
+						}else{
+							// this node only has text node children left, add the
+							// split class and move on.
+							$cloneMe.addClass(prefixTheClassName("split"));
+						}
+						if($clone.get(0).childNodes.length === 0){
+							// it was split, but nothing is in it :(
+							$clone.remove();
+							$cloneMe.removeClass(prefixTheClassName("split"));
+						}
+					}
+				}
+			}
+		}
+
+
+		function singleColumnizeIt() {
+			if ($inBox.data("columnized") && $inBox.children().length == 1) {
+				return;
+			}
+			$inBox.data("columnized", true);
+			$inBox.data("columnizing", true);
+
+			$inBox.empty();
+			$inBox.append($("<div class='"
+				+ prefixTheClassName("first") + " "
+				+ prefixTheClassName("last") + " "
+				+ prefixTheClassName("column") + " "
+				+ "' style='width:100%; float: " + options.columnFloat + ";'></div>")); //"
+			$col = $inBox.children().eq($inBox.children().length-1);
+			$destroyable = $cache.clone(true);
+			if(options.overflow){
+				targetHeight = options.overflow.height;
+				columnize($col, $destroyable, $col, targetHeight);
+				// make sure that the last item in the column isn't a "dontend"
+				if(!$destroyable.contents().find(":first-child").hasClass(prefixTheClassName("dontend"))){
+					split($col, $destroyable, $col, targetHeight);
+				}
+
+				while($col.contents(":last").length && checkDontEndColumn($col.contents(":last").get(0))){
+					var $lastKid = $col.contents(":last");
+					$lastKid.remove();
+					$destroyable.prepend($lastKid);
+				}
+
+				var html = "";
+				var div = document.createElement('DIV');
+				while($destroyable[0].childNodes.length > 0){
+					var kid = $destroyable[0].childNodes[0];
+					if(kid.attributes){
+						for(var i=0;i<kid.attributes.length;i++){
+							if(kid.attributes[i].nodeName.indexOf("jQuery") === 0){
+								kid.removeAttribute(kid.attributes[i].nodeName);
+							}
+						}
+					}
+					div.innerHTML = "";
+					div.appendChild($destroyable[0].childNodes[0]);
+					html += div.innerHTML;
+				}
+				var overflow = $(options.overflow.id)[0];
+				overflow.innerHTML = html;
+
+			}else{
+				appendSafe($col, $destroyable.contents());
+			}
+			$inBox.data("columnizing", false);
+
+			if(options.overflow && options.overflow.doneFunc){
+				options.overflow.doneFunc();
+			}
+
+		}
+
+		/**
+		 * returns true if the input dom node
+		 * should not end a column.
+		 * returns false otherwise
+		 */
+		function checkDontEndColumn(dom){
+			if(dom.nodeType == 3){
+				// text node. ensure that the text
+				// is not 100% whitespace
+				if(/^\s+$/.test(dom.nodeValue)){
+						//
+						// ok, it's 100% whitespace,
+						// so we should return checkDontEndColumn
+						// of the inputs previousSibling
+						if(!dom.previousSibling) return false;
+					return checkDontEndColumn(dom.previousSibling);
+				}
+				return false;
+			}
+			if(dom.nodeType != 1) return false;
+			if($(dom).hasClass(prefixTheClassName("dontend"))) return true;
+			if(dom.childNodes.length === 0) return false;
+			return checkDontEndColumn(dom.childNodes[dom.childNodes.length-1]);
+		}
+
+		function columnizeIt() {
+			//reset adjustment var
+			adjustment = 0;
+			if(lastWidth == $inBox.width()) return;
+			lastWidth = $inBox.width();
+
+			var numCols = Math.round($inBox.width() / options.width);
+			var optionWidth = options.width;
+			var optionHeight = options.height;
+			if(options.columns) numCols = options.columns;
+			if(manualBreaks){
+				numCols = $cache.find(prefixTheClassName("columnbreak", true)).length + 1;
+				optionWidth = false;
+			}
+
+//			if ($inBox.data("columnized") && numCols == $inBox.children().length) {
+//				return;
+//			}
+			if(numCols <= 1){
+				return singleColumnizeIt();
+			}
+			if($inBox.data("columnizing")) return;
+			$inBox.data("columnized", true);
+			$inBox.data("columnizing", true);
+
+			$inBox.empty();
+			$inBox.append($("<div style='width:" + (Math.floor(100 / numCols))+ "%; float: " + options.columnFloat + ";'></div>")); //"
+			$col = $inBox.children(":last");
+			appendSafe($col, $cache.clone());
+			maxHeight = $col.height();
+			$inBox.empty();
+
+			var targetHeight = maxHeight / numCols;
+			var firstTime = true;
+			var maxLoops = 3;
+			var scrollHorizontally = false;
+			if(options.overflow){
+				maxLoops = 1;
+				targetHeight = options.overflow.height;
+			}else if(optionHeight && optionWidth){
+				maxLoops = 1;
+				targetHeight = optionHeight;
+				scrollHorizontally = true;
+			}
+
+			//
+			// We loop as we try and workout a good height to use. We know it initially as an average 
+			// but if the last column is higher than the first ones (which can happen, depending on split
+			// points) we need to raise 'adjustment'. We try this over a few iterations until we're 'solid'.
+			//
+			// also, lets hard code the max loops to 20. that's /a lot/ of loops for columnizer,
+			// and should keep run aways in check. if somehow someone has content combined with
+			// options that would cause an infinite loop, then this'll definitely stop it.
+			for(var loopCount=0;loopCount<maxLoops && loopCount<20;loopCount++){
+				$inBox.empty();
+				var $destroyable, className, $col, $lastKid;
+				try{
+					$destroyable = $cache.clone(true);
+				}catch(e){
+					// jquery in ie6 can't clone with true
+					$destroyable = $cache.clone();
+				}
+				$destroyable.css("visibility", "hidden");
+				// create the columns
+				for (var i = 0; i < numCols; i++) {
+					/* create column */
+					className = (i === 0) ? prefixTheClassName("first") : "";
+					className += " " + prefixTheClassName("column");
+					className = (i == numCols - 1) ? (prefixTheClassName("last") + " " + className) : className;
+					$inBox.append($("<div class='" + className + "' style='width:" + (Math.floor(100 / numCols))+ "%; float: " + options.columnFloat + ";'></div>")); //"
+				}
+
+				// fill all but the last column (unless overflowing)
+				i = 0;
+				while(i < numCols - (options.overflow ? 0 : 1) || scrollHorizontally && $destroyable.contents().length){
+					if($inBox.children().length <= i){
+						// we ran out of columns, make another
+						$inBox.append($("<div class='" + className + "' style='width:" + (Math.floor(100 / numCols))+ "%; float: " + options.columnFloat + ";'></div>")); //"
+					}
+					$col = $inBox.children().eq(i);
+					if(scrollHorizontally){
+						$col.width(optionWidth + "px");
+					}
+					columnize($col, $destroyable, $col, targetHeight);
+					// make sure that the last item in the column isn't a "dontend"
+					split($col, $destroyable, $col, targetHeight);
+
+					while($col.contents(":last").length && checkDontEndColumn($col.contents(":last").get(0))){
+						$lastKid = $col.contents(":last");
+						$lastKid.remove();
+						$destroyable.prepend($lastKid);
+					}
+					i++;
+
+					//
+					// https://github.com/adamwulf/Columnizer-jQuery-Plugin/issues/47
+					//
+					// check for infinite loop.
+					//
+					// this could happen when a dontsplit or dontend item is taller than the column
+					// we're trying to build, and its never actually added to a column.
+					//
+					// this results in empty columns being added with the dontsplit item
+					// perpetually waiting to get put into a column. lets force the issue here
+					if($col.contents().length === 0 && $destroyable.contents().length){
+						//
+						// ok, we're building zero content columns. this'll happen forever
+						// since nothing can ever get taken out of destroyable.
+						//
+						// to fix, lets put 1 item from destroyable into the empty column
+						// before we iterate
+						$col.append($destroyable.contents(":first"));
+					}else if(i == numCols - (options.overflow ? 0 : 1) && !options.overflow){
+						//
+						// ok, we're about to exit the while loop because we're done with all
+						// columns except the last column.
+						//
+						// if $destroyable still has columnbreak nodes in it, then we need to keep
+						// looping and creating more columns.
+						if($destroyable.find(prefixTheClassName("columnbreak", true)).length){
+							numCols ++;
+						}
+					}
+				}
+				if(options.overflow && !scrollHorizontally){
+					var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
+					var IE7 = (document.all) && (navigator.appVersion.indexOf("MSIE 7.") != -1);
+					if(IE6 || IE7){
+						var html = "";
+						var div = document.createElement('DIV');
+						while($destroyable[0].childNodes.length > 0){
+							var kid = $destroyable[0].childNodes[0];
+							for(i=0;i<kid.attributes.length;i++){
+								if(kid.attributes[i].nodeName.indexOf("jQuery") === 0){
+									kid.removeAttribute(kid.attributes[i].nodeName);
+								}
+							}
+							div.innerHTML = "";
+							div.appendChild($destroyable[0].childNodes[0]);
+							html += div.innerHTML;
+						}
+						var overflow = $(options.overflow.id)[0];
+						overflow.innerHTML = html;
+					}else{
+						$(options.overflow.id).empty().append($destroyable.contents().clone(true));
+					}
+				}else if(!scrollHorizontally){
+					// the last column in the series
+					$col = $inBox.children().eq($inBox.children().length-1);
+					$destroyable.contents().each( function() {
+						$col.append( $(this) );
+					});
+					var afterH = $col.height();
+					var diff = afterH - targetHeight;
+					var totalH = 0;
+					var min = 10000000;
+					var max = 0;
+					var lastIsMax = false;
+					var numberOfColumnsThatDontEndInAColumnBreak = 0;
+					$inBox.children().each(function($inBox){ return function($item){
+						var $col = $inBox.children().eq($item);
+						var endsInBreak = $col.children(":last").find(prefixTheClassName("columnbreak", true)).length;
+						if(!endsInBreak){
+							var h = $col.height();
+							lastIsMax = false;
+							totalH += h;
+							if(h > max) {
+								max = h;
+								lastIsMax = true;
+							}
+							if(h < min) min = h;
+							numberOfColumnsThatDontEndInAColumnBreak++;
+						}
+					};
+				}($inBox));
+
+					var avgH = totalH / numberOfColumnsThatDontEndInAColumnBreak;
+					if(totalH === 0){
+						//
+						// all columns end in a column break,
+						// so we're done here
+						loopCount = maxLoops;
+					}else if(options.lastNeverTallest && lastIsMax){
+						// the last column is the tallest
+						// so allow columns to be taller
+						// and retry
+						//
+						// hopefully this'll mean more content fits into
+						// earlier columns, so that the last column
+						// can be shorter than the rest
+						adjustment += 5;
+
+						targetHeight = targetHeight + 30;
+						if(loopCount == maxLoops-1) maxLoops++;
+					}else if(max - min > 30){
+						// too much variation, try again
+						targetHeight = avgH + 30;
+					}else if(Math.abs(avgH-targetHeight) > 20){
+						// too much variation, try again
+						targetHeight = avgH;
+					}else {
+						// solid, we're done
+						loopCount = maxLoops;
+					}
+				}else{
+					// it's scrolling horizontally, fix the width/classes of the columns
+					$inBox.children().each(function(i){
+						$col = $inBox.children().eq(i);
+						$col.width(optionWidth + "px");
+						if(i === 0){
+							$col.addClass(prefixTheClassName("first"));
+						}else if(i==$inBox.children().length-1){
+							$col.addClass(prefixTheClassName("last"));
+						}else{
+							$col.removeClass(prefixTheClassName("first"));
+							$col.removeClass(prefixTheClassName("last"));
+						}
+					});
+					$inBox.width($inBox.children().length * optionWidth + "px");
+				}
+				$inBox.append($("<br style='clear:both;'>"));
+			}
+			$inBox.find(prefixTheClassName("column", true)).find(":first" + prefixTheClassName("removeiffirst", true)).remove();
+			$inBox.find(prefixTheClassName("column", true)).find(':last' + prefixTheClassName("removeiflast", true)).remove();
+			$inBox.find(prefixTheClassName("split", true)).find(":first" + prefixTheClassName("removeiffirst", true)).remove();
+			$inBox.find(prefixTheClassName("split", true)).find(':last' + prefixTheClassName("removeiflast", true)).remove();
+			$inBox.data("columnizing", false);
+
+			if(options.overflow){
+				options.overflow.doneFunc();
+			}
+			options.doneFunc();
+		}
+    });
+ };
+})(jQuery);
Index: /extensions/Slim/js/jquery.hoverIntent.js
===================================================================
--- /extensions/Slim/js/jquery.hoverIntent.js	(revision 25997)
+++ /extensions/Slim/js/jquery.hoverIntent.js	(revision 25997)
@@ -0,0 +1,115 @@
+/*!
+ * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
+ * http://cherne.net/brian/resources/jquery.hoverIntent.html
+ *
+ * You may use hoverIntent under the terms of the MIT license. Basically that
+ * means you are free to use hoverIntent as long as this header is left intact.
+ * Copyright 2007, 2013 Brian Cherne
+ */
+ 
+/* hoverIntent is similar to jQuery's built-in "hover" method except that
+ * instead of firing the handlerIn function immediately, hoverIntent checks
+ * to see if the user's mouse has slowed down (beneath the sensitivity
+ * threshold) before firing the event. The handlerOut function is only
+ * called after a matching handlerIn.
+ *
+ * // basic usage ... just like .hover()
+ * .hoverIntent( handlerIn, handlerOut )
+ * .hoverIntent( handlerInOut )
+ *
+ * // basic usage ... with event delegation!
+ * .hoverIntent( handlerIn, handlerOut, selector )
+ * .hoverIntent( handlerInOut, selector )
+ *
+ * // using a basic configuration object
+ * .hoverIntent( config )
+ *
+ * @param  handlerIn   function OR configuration object
+ * @param  handlerOut  function OR selector for delegation OR undefined
+ * @param  selector    selector OR undefined
+ * @author Brian Cherne <brian(at)cherne(dot)net>
+ */
+(function($) {
+    $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
+
+        // default configuration values
+        var cfg = {
+            interval: 100,
+            sensitivity: 7,
+            timeout: 0
+        };
+
+        if ( typeof handlerIn === "object" ) {
+            cfg = $.extend(cfg, handlerIn );
+        } else if ($.isFunction(handlerOut)) {
+            cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
+        } else {
+            cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
+        }
+
+        // instantiate variables
+        // cX, cY = current X and Y position of mouse, updated by mousemove event
+        // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+        var cX, cY, pX, pY;
+
+        // A private function for getting mouse position
+        var track = function(ev) {
+            cX = ev.pageX;
+            cY = ev.pageY;
+        };
+
+        // A private function for comparing current and previous mouse position
+        var compare = function(ev,ob) {
+            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+            // compare mouse positions to see if they've crossed the threshold
+            if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+                $(ob).off("mousemove.hoverIntent",track);
+                // set hoverIntent state to true (so mouseOut can be called)
+                ob.hoverIntent_s = 1;
+                return cfg.over.apply(ob,[ev]);
+            } else {
+                // set previous coordinates for next time
+                pX = cX; pY = cY;
+                // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+                ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+            }
+        };
+
+        // A private function for delaying the mouseOut function
+        var delay = function(ev,ob) {
+            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+            ob.hoverIntent_s = 0;
+            return cfg.out.apply(ob,[ev]);
+        };
+
+        // A private function for handling mouse 'hovering'
+        var handleHover = function(e) {
+            // copy objects to be passed into t (required for event object to be passed in IE)
+            var ev = jQuery.extend({},e);
+            var ob = this;
+
+            // cancel hoverIntent timer if it exists
+            if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+
+            // if e.type == "mouseenter"
+            if (e.type == "mouseenter") {
+                // set "previous" X and Y position based on initial entry point
+                pX = ev.pageX; pY = ev.pageY;
+                // update "current" X and Y position based on mousemove
+                $(ob).on("mousemove.hoverIntent",track);
+                // start polling interval (self-calling timeout) to compare mouse coordinates over time
+                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+
+                // else e.type == "mouseleave"
+            } else {
+                // unbind expensive mousemove event
+                $(ob).off("mousemove.hoverIntent",track);
+                // if hoverIntent state is true, then call the mouseOut function after the specified delay
+                if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+            }
+        };
+
+        // listen for mouseenter and mouseleave
+        return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
+    };
+})(jQuery);
Index: /extensions/Slim/js/jquery.jcarousel.js
===================================================================
--- /extensions/Slim/js/jquery.jcarousel.js	(revision 25997)
+++ /extensions/Slim/js/jquery.jcarousel.js	(revision 25997)
@@ -0,0 +1,1396 @@
+/*! jCarousel - v0.3.0 - 2013-11-22
+* http://sorgalla.com/jcarousel
+* Copyright (c) 2013 Jan Sorgalla; Licensed MIT */
+(function($) {
+    'use strict';
+
+    var jCarousel = $.jCarousel = {};
+
+    jCarousel.version = '0.3.0';
+
+    var rRelativeTarget = /^([+\-]=)?(.+)$/;
+
+    jCarousel.parseTarget = function(target) {
+        var relative = false,
+            parts    = typeof target !== 'object' ?
+                           rRelativeTarget.exec(target) :
+                           null;
+
+        if (parts) {
+            target = parseInt(parts[2], 10) || 0;
+
+            if (parts[1]) {
+                relative = true;
+                if (parts[1] === '-=') {
+                    target *= -1;
+                }
+            }
+        } else if (typeof target !== 'object') {
+            target = parseInt(target, 10) || 0;
+        }
+
+        return {
+            target: target,
+            relative: relative
+        };
+    };
+
+    jCarousel.detectCarousel = function(element) {
+        var carousel;
+
+        while (element.length > 0) {
+            carousel = element.filter('[data-jcarousel]');
+
+            if (carousel.length > 0) {
+                return carousel;
+            }
+
+            carousel = element.find('[data-jcarousel]');
+
+            if (carousel.length > 0) {
+                return carousel;
+            }
+
+            element = element.parent();
+        }
+
+        return null;
+    };
+
+    jCarousel.base = function(pluginName) {
+        return {
+            version:  jCarousel.version,
+            _options:  {},
+            _element:  null,
+            _carousel: null,
+            _init:     $.noop,
+            _create:   $.noop,
+            _destroy:  $.noop,
+            _reload:   $.noop,
+            create: function() {
+                this._element
+                    .attr('data-' + pluginName.toLowerCase(), true)
+                    .data(pluginName, this);
+
+                if (false === this._trigger('create')) {
+                    return this;
+                }
+
+                this._create();
+
+                this._trigger('createend');
+
+                return this;
+            },
+            destroy: function() {
+                if (false === this._trigger('destroy')) {
+                    return this;
+                }
+
+                this._destroy();
+
+                this._trigger('destroyend');
+
+                this._element
+                    .removeData(pluginName)
+                    .removeAttr('data-' + pluginName.toLowerCase());
+
+                return this;
+            },
+            reload: function(options) {
+                if (false === this._trigger('reload')) {
+                    return this;
+                }
+
+                if (options) {
+                    this.options(options);
+                }
+
+                this._reload();
+
+                this._trigger('reloadend');
+
+                return this;
+            },
+            element: function() {
+                return this._element;
+            },
+            options: function(key, value) {
+                if (arguments.length === 0) {
+                    return $.extend({}, this._options);
+                }
+
+                if (typeof key === 'string') {
+                    if (typeof value === 'undefined') {
+                        return typeof this._options[key] === 'undefined' ?
+                                null :
+                                this._options[key];
+                    }
+
+                    this._options[key] = value;
+                } else {
+                    this._options = $.extend({}, this._options, key);
+                }
+
+                return this;
+            },
+            carousel: function() {
+                if (!this._carousel) {
+                    this._carousel = jCarousel.detectCarousel(this.options('carousel') || this._element);
+
+                    if (!this._carousel) {
+                        $.error('Could not detect carousel for plugin "' + pluginName + '"');
+                    }
+                }
+
+                return this._carousel;
+            },
+            _trigger: function(type, element, data) {
+                var event,
+                    defaultPrevented = false;
+
+                data = [this].concat(data || []);
+
+                (element || this._element).each(function() {
+                    event = $.Event((pluginName + ':' + type).toLowerCase());
+
+                    $(this).trigger(event, data);
+
+                    if (event.isDefaultPrevented()) {
+                        defaultPrevented = true;
+                    }
+                });
+
+                return !defaultPrevented;
+            }
+        };
+    };
+
+    jCarousel.plugin = function(pluginName, pluginPrototype) {
+        var Plugin = $[pluginName] = function(element, options) {
+            this._element = $(element);
+            this.options(options);
+
+            this._init();
+            this.create();
+        };
+
+        Plugin.fn = Plugin.prototype = $.extend(
+            {},
+            jCarousel.base(pluginName),
+            pluginPrototype
+        );
+
+        $.fn[pluginName] = function(options) {
+            var args        = Array.prototype.slice.call(arguments, 1),
+                returnValue = this;
+
+            if (typeof options === 'string') {
+                this.each(function() {
+                    var instance = $(this).data(pluginName);
+
+                    if (!instance) {
+                        return $.error(
+                            'Cannot call methods on ' + pluginName + ' prior to initialization; ' +
+                            'attempted to call method "' + options + '"'
+                        );
+                    }
+
+                    if (!$.isFunction(instance[options]) || options.charAt(0) === '_') {
+                        return $.error(
+                            'No such method "' + options + '" for ' + pluginName + ' instance'
+                        );
+                    }
+
+                    var methodValue = instance[options].apply(instance, args);
+
+                    if (methodValue !== instance && typeof methodValue !== 'undefined') {
+                        returnValue = methodValue;
+                        return false;
+                    }
+                });
+            } else {
+                this.each(function() {
+                    var instance = $(this).data(pluginName);
+
+                    if (instance instanceof Plugin) {
+                        instance.reload(options);
+                    } else {
+                        new Plugin(this, options);
+                    }
+                });
+            }
+
+            return returnValue;
+        };
+
+        return Plugin;
+    };
+}(jQuery));
+
+(function($, window) {
+    'use strict';
+
+    var toFloat = function(val) {
+        return parseFloat(val) || 0;
+    };
+
+    $.jCarousel.plugin('jcarousel', {
+        animating:   false,
+        tail:        0,
+        inTail:      false,
+        resizeTimer: null,
+        lt:          null,
+        vertical:    false,
+        rtl:         false,
+        circular:    false,
+        underflow:   false,
+        relative:    false,
+
+        _options: {
+            list: function() {
+                return this.element().children().eq(0);
+            },
+            items: function() {
+                return this.list().children();
+            },
+            animation:   400,
+            transitions: false,
+            wrap:        null,
+            vertical:    null,
+            rtl:         null,
+            center:      false
+        },
+
+        // Protected, don't access directly
+        _list:         null,
+        _items:        null,
+        _target:       null,
+        _first:        null,
+        _last:         null,
+        _visible:      null,
+        _fullyvisible: null,
+        _init: function() {
+            var self = this;
+
+            this.onWindowResize = function() {
+                if (self.resizeTimer) {
+                    clearTimeout(self.resizeTimer);
+                }
+
+                self.resizeTimer = setTimeout(function() {
+                    self.reload();
+                }, 100);
+            };
+
+            return this;
+        },
+        _create: function() {
+            this._reload();
+
+            $(window).on('resize.jcarousel', this.onWindowResize);
+        },
+        _destroy: function() {
+            $(window).off('resize.jcarousel', this.onWindowResize);
+        },
+        _reload: function() {
+            this.vertical = this.options('vertical');
+
+            if (this.vertical == null) {
+                this.vertical = this.list().height() > this.list().width();
+            }
+
+            this.rtl = this.options('rtl');
+
+            if (this.rtl == null) {
+                this.rtl = (function(element) {
+                    if (('' + element.attr('dir')).toLowerCase() === 'rtl') {
+                        return true;
+                    }
+
+                    var found = false;
+
+                    element.parents('[dir]').each(function() {
+                        if ((/rtl/i).test($(this).attr('dir'))) {
+                            found = true;
+                            return false;
+                        }
+                    });
+
+                    return found;
+                }(this._element));
+            }
+
+            this.lt = this.vertical ? 'top' : 'left';
+
+            // Ensure before closest() call
+            this.relative = this.list().css('position') === 'relative';
+
+            // Force list and items reload
+            this._list  = null;
+            this._items = null;
+
+            var item = this._target && this.index(this._target) >= 0 ?
+                           this._target :
+                           this.closest();
+
+            // _prepare() needs this here
+            this.circular  = this.options('wrap') === 'circular';
+            this.underflow = false;
+
+            var props = {'left': 0, 'top': 0};
+
+            if (item.length > 0) {
+                this._prepare(item);
+                this.list().find('[data-jcarousel-clone]').remove();
+
+                // Force items reload
+                this._items = null;
+
+                this.underflow = this._fullyvisible.length >= this.items().length;
+                this.circular  = this.circular && !this.underflow;
+
+                props[this.lt] = this._position(item) + 'px';
+            }
+
+            this.move(props);
+
+            return this;
+        },
+        list: function() {
+            if (this._list === null) {
+                var option = this.options('list');
+                this._list = $.isFunction(option) ? option.call(this) : this._element.find(option);
+            }
+
+            return this._list;
+        },
+        items: function() {
+            if (this._items === null) {
+                var option = this.options('items');
+                this._items = ($.isFunction(option) ? option.call(this) : this.list().find(option)).not('[data-jcarousel-clone]');
+            }
+
+            return this._items;
+        },
+        index: function(item) {
+            return this.items().index(item);
+        },
+        closest: function() {
+            var self    = this,
+                pos     = this.list().position()[this.lt],
+                closest = $(), // Ensure we're returning a jQuery instance
+                stop    = false,
+                lrb     = this.vertical ? 'bottom' : (this.rtl && !this.relative ? 'left' : 'right'),
+                width;
+
+            if (this.rtl && this.relative && !this.vertical) {
+                pos += this.list().width() - this.clipping();
+            }
+
+            this.items().each(function() {
+                closest = $(this);
+
+                if (stop) {
+                    return false;
+                }
+
+                var dim = self.dimension(closest);
+
+                pos += dim;
+
+                if (pos >= 0) {
+                    width = dim - toFloat(closest.css('margin-' + lrb));
+
+                    if ((Math.abs(pos) - dim + (width / 2)) <= 0) {
+                        stop = true;
+                    } else {
+                        return false;
+                    }
+                }
+            });
+
+
+            return closest;
+        },
+        target: function() {
+            return this._target;
+        },
+        first: function() {
+            return this._first;
+        },
+        last: function() {
+            return this._last;
+        },
+        visible: function() {
+            return this._visible;
+        },
+        fullyvisible: function() {
+            return this._fullyvisible;
+        },
+        hasNext: function() {
+            if (false === this._trigger('hasnext')) {
+                return true;
+            }
+
+            var wrap = this.options('wrap'),
+                end = this.items().length - 1;
+
+            return end >= 0 &&
+                ((wrap && wrap !== 'first') ||
+                    (this.index(this._last) < end) ||
+                    (this.tail && !this.inTail)) ? true : false;
+        },
+        hasPrev: function() {
+            if (false === this._trigger('hasprev')) {
+                return true;
+            }
+
+            var wrap = this.options('wrap');
+
+            return this.items().length > 0 &&
+                ((wrap && wrap !== 'last') ||
+                    (this.index(this._first) > 0) ||
+                    (this.tail && this.inTail)) ? true : false;
+        },
+        clipping: function() {
+            return this._element['inner' + (this.vertical ? 'Height' : 'Width')]();
+        },
+        dimension: function(element) {
+            return element['outer' + (this.vertical ? 'Height' : 'Width')](true);
+        },
+        scroll: function(target, animate, callback) {
+            if (this.animating) {
+                return this;
+            }
+
+            if (false === this._trigger('scroll', null, [target, animate])) {
+                return this;
+            }
+
+            if ($.isFunction(animate)) {
+                callback = animate;
+                animate  = true;
+            }
+
+            var parsed = $.jCarousel.parseTarget(target);
+
+            if (parsed.relative) {
+                var end    = this.items().length - 1,
+                    scroll = Math.abs(parsed.target),
+                    wrap   = this.options('wrap'),
+                    current,
+                    first,
+                    index,
+                    start,
+                    curr,
+                    isVisible,
+                    props,
+                    i;
+
+                if (parsed.target > 0) {
+                    var last = this.index(this._last);
+
+                    if (last >= end && this.tail) {
+                        if (!this.inTail) {
+                            this._scrollTail(animate, callback);
+                        } else {
+                            if (wrap === 'both' || wrap === 'last') {
+                                this._scroll(0, animate, callback);
+                            } else {
+                                if ($.isFunction(callback)) {
+                                    callback.call(this, false);
+                                }
+                            }
+                        }
+                    } else {
+                        current = this.index(this._target);
+
+                        if ((this.underflow && current === end && (wrap === 'circular' || wrap === 'both' || wrap === 'last')) ||
+                            (!this.underflow && last === end && (wrap === 'both' || wrap === 'last'))) {
+                            this._scroll(0, animate, callback);
+                        } else {
+                            index = current + scroll;
+
+                            if (this.circular && index > end) {
+                                i = end;
+                                curr = this.items().get(-1);
+
+                                while (i++ < index) {
+                                    curr = this.items().eq(0);
+                                    isVisible = this._visible.index(curr) >= 0;
+
+                                    if (isVisible) {
+                                        curr.after(curr.clone(true).attr('data-jcarousel-clone', true));
+                                    }
+
+                                    this.list().append(curr);
+
+                                    if (!isVisible) {
+                                        props = {};
+                                        props[this.lt] = this.dimension(curr);
+                                        this.moveBy(props);
+                                    }
+
+                                    // Force items reload
+                                    this._items = null;
+                                }
+
+                                this._scroll(curr, animate, callback);
+                            } else {
+                                this._scroll(Math.min(index, end), animate, callback);
+                            }
+                        }
+                    }
+                } else {
+                    if (this.inTail) {
+                        this._scroll(Math.max((this.index(this._first) - scroll) + 1, 0), animate, callback);
+                    } else {
+                        first  = this.index(this._first);
+                        current = this.index(this._target);
+                        start  = this.underflow ? current : first;
+                        index  = start - scroll;
+
+                        if (start <= 0 && ((this.underflow && wrap === 'circular') || wrap === 'both' || wrap === 'first')) {
+                            this._scroll(end, animate, callback);
+                        } else {
+                            if (this.circular && index < 0) {
+                                i    = index;
+                                curr = this.items().get(0);
+
+                                while (i++ < 0) {
+                                    curr = this.items().eq(-1);
+                                    isVisible = this._visible.index(curr) >= 0;
+
+                                    if (isVisible) {
+                                        curr.after(curr.clone(true).attr('data-jcarousel-clone', true));
+                                    }
+
+                                    this.list().prepend(curr);
+
+                                    // Force items reload
+                                    this._items = null;
+
+                                    var dim = this.dimension(curr);
+
+                                    props = {};
+                                    props[this.lt] = -dim;
+                                    this.moveBy(props);
+
+                                }
+
+                                this._scroll(curr, animate, callback);
+                            } else {
+                                this._scroll(Math.max(index, 0), animate, callback);
+                            }
+                        }
+                    }
+                }
+            } else {
+                this._scroll(parsed.target, animate, callback);
+            }
+
+            this._trigger('scrollend');
+
+            return this;
+        },
+        moveBy: function(properties, opts) {
+            var position = this.list().position(),
+                multiplier = 1,
+                correction = 0;
+
+            if (this.rtl && !this.vertical) {
+                multiplier = -1;
+
+                if (this.relative) {
+                    correction = this.list().width() - this.clipping();
+                }
+            }
+
+            if (properties.left) {
+                properties.left = (position.left + correction + toFloat(properties.left) * multiplier) + 'px';
+            }
+
+            if (properties.top) {
+                properties.top = (position.top + correction + toFloat(properties.top) * multiplier) + 'px';
+            }
+
+            return this.move(properties, opts);
+        },
+        move: function(properties, opts) {
+            opts = opts || {};
+
+            var option       = this.options('transitions'),
+                transitions  = !!option,
+                transforms   = !!option.transforms,
+                transforms3d = !!option.transforms3d,
+                duration     = opts.duration || 0,
+                list         = this.list();
+
+            if (!transitions && duration > 0) {
+                list.animate(properties, opts);
+                return;
+            }
+
+            var complete = opts.complete || $.noop,
+                css = {};
+
+            if (transitions) {
+                var backup = list.css(['transitionDuration', 'transitionTimingFunction', 'transitionProperty']),
+                    oldComplete = complete;
+
+                complete = function() {
+                    $(this).css(backup);
+                    oldComplete.call(this);
+                };
+                css = {
+                    transitionDuration: (duration > 0 ? duration / 1000 : 0) + 's',
+                    transitionTimingFunction: option.easing || opts.easing,
+                    transitionProperty: duration > 0 ? (function() {
+                        if (transforms || transforms3d) {
+                            // We have to use 'all' because jQuery doesn't prefix
+                            // css values, like transition-property: transform;
+                            return 'all';
+                        }
+
+                        return properties.left ? 'left' : 'top';
+                    })() : 'none',
+                    transform: 'none'
+                };
+            }
+
+            if (transforms3d) {
+                css.transform = 'translate3d(' + (properties.left || 0) + ',' + (properties.top || 0) + ',0)';
+            } else if (transforms) {
+                css.transform = 'translate(' + (properties.left || 0) + ',' + (properties.top || 0) + ')';
+            } else {
+                $.extend(css, properties);
+            }
+
+            if (transitions && duration > 0) {
+                list.one('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', complete);
+            }
+
+            list.css(css);
+
+            if (duration <= 0) {
+                list.each(function() {
+                    complete.call(this);
+                });
+            }
+        },
+        _scroll: function(item, animate, callback) {
+            if (this.animating) {
+                if ($.isFunction(callback)) {
+                    callback.call(this, false);
+                }
+
+                return this;
+            }
+
+            if (typeof item !== 'object') {
+                item = this.items().eq(item);
+            } else if (typeof item.jquery === 'undefined') {
+                item = $(item);
+            }
+
+            if (item.length === 0) {
+                if ($.isFunction(callback)) {
+                    callback.call(this, false);
+                }
+
+                return this;
+            }
+
+            this.inTail = false;
+
+            this._prepare(item);
+
+            var pos     = this._position(item),
+                currPos = this.list().position()[this.lt];
+
+            if (pos === currPos) {
+                if ($.isFunction(callback)) {
+                    callback.call(this, false);
+                }
+
+                return this;
+            }
+
+            var properties = {};
+            properties[this.lt] = pos + 'px';
+
+            this._animate(properties, animate, callback);
+
+            return this;
+        },
+        _scrollTail: function(animate, callback) {
+            if (this.animating || !this.tail) {
+                if ($.isFunction(callback)) {
+                    callback.call(this, false);
+                }
+
+                return this;
+            }
+
+            var pos = this.list().position()[this.lt];
+
+            if (this.rtl && this.relative && !this.vertical) {
+                pos += this.list().width() - this.clipping();
+            }
+
+            if (this.rtl && !this.vertical) {
+                pos += this.tail;
+            } else {
+                pos -= this.tail;
+            }
+
+            this.inTail = true;
+
+            var properties = {};
+            properties[this.lt] = pos + 'px';
+
+            this._update({
+                target:       this._target.next(),
+                fullyvisible: this._fullyvisible.slice(1).add(this._visible.last())
+            });
+
+            this._animate(properties, animate, callback);
+
+            return this;
+        },
+        _animate: function(properties, animate, callback) {
+            callback = callback || $.noop;
+
+            if (false === this._trigger('animate')) {
+                callback.call(this, false);
+                return this;
+            }
+
+            this.animating = true;
+
+            var animation = this.options('animation'),
+                complete  = $.proxy(function() {
+                    this.animating = false;
+
+                    var c = this.list().find('[data-jcarousel-clone]');
+
+                    if (c.length > 0) {
+                        c.remove();
+                        this._reload();
+                    }
+
+                    this._trigger('animateend');
+
+                    callback.call(this, true);
+                }, this);
+
+            var opts = typeof animation === 'object' ?
+                           $.extend({}, animation) :
+                           {duration: animation},
+                oldComplete = opts.complete || $.noop;
+
+            if (animate === false) {
+                opts.duration = 0;
+            } else if (typeof $.fx.speeds[opts.duration] !== 'undefined') {
+                opts.duration = $.fx.speeds[opts.duration];
+            }
+
+            opts.complete = function() {
+                complete();
+                oldComplete.call(this);
+            };
+
+            this.move(properties, opts);
+
+            return this;
+        },
+        _prepare: function(item) {
+            var index  = this.index(item),
+                idx    = index,
+                wh     = this.dimension(item),
+                clip   = this.clipping(),
+                lrb    = this.vertical ? 'bottom' : (this.rtl ? 'left'  : 'right'),
+                center = this.options('center'),
+                update = {
+                    target:       item,
+                    first:        item,
+                    last:         item,
+                    visible:      item,
+                    fullyvisible: wh <= clip ? item : $()
+                },
+                curr,
+                isVisible,
+                margin,
+                dim;
+
+            if (center) {
+                wh /= 2;
+                clip /= 2;
+            }
+
+            if (wh < clip) {
+                while (true) {
+                    curr = this.items().eq(++idx);
+
+                    if (curr.length === 0) {
+                        if (!this.circular) {
+                            break;
+                        }
+
+                        curr = this.items().eq(0);
+
+                        if (item.get(0) === curr.get(0)) {
+                            break;
+                        }
+
+                        isVisible = this._visible.index(curr) >= 0;
+
+                        if (isVisible) {
+                            curr.after(curr.clone(true).attr('data-jcarousel-clone', true));
+                        }
+
+                        this.list().append(curr);
+
+                        if (!isVisible) {
+                            var props = {};
+                            props[this.lt] = this.dimension(curr);
+                            this.moveBy(props);
+                        }
+
+                        // Force items reload
+                        this._items = null;
+                    }
+
+                    dim = this.dimension(curr);
+
+                    if (dim === 0) {
+                        break;
+                    }
+
+                    wh += dim;
+
+                    update.last    = curr;
+                    update.visible = update.visible.add(curr);
+
+                    // Remove right/bottom margin from total width
+                    margin = toFloat(curr.css('margin-' + lrb));
+
+                    if ((wh - margin) <= clip) {
+                        update.fullyvisible = update.fullyvisible.add(curr);
+                    }
+
+                    if (wh >= clip) {
+                        break;
+                    }
+                }
+            }
+
+            if (!this.circular && !center && wh < clip) {
+                idx = index;
+
+                while (true) {
+                    if (--idx < 0) {
+                        break;
+                    }
+
+                    curr = this.items().eq(idx);
+
+                    if (curr.length === 0) {
+                        break;
+                    }
+
+                    dim = this.dimension(curr);
+
+                    if (dim === 0) {
+                        break;
+                    }
+
+                    wh += dim;
+
+                    update.first   = curr;
+                    update.visible = update.visible.add(curr);
+
+                    // Remove right/bottom margin from total width
+                    margin = toFloat(curr.css('margin-' + lrb));
+
+                    if ((wh - margin) <= clip) {
+                        update.fullyvisible = update.fullyvisible.add(curr);
+                    }
+
+                    if (wh >= clip) {
+                        break;
+                    }
+                }
+            }
+
+            this._update(update);
+
+            this.tail = 0;
+
+            if (!center &&
+                this.options('wrap') !== 'circular' &&
+                this.options('wrap') !== 'custom' &&
+                this.index(update.last) === (this.items().length - 1)) {
+
+                // Remove right/bottom margin from total width
+                wh -= toFloat(update.last.css('margin-' + lrb));
+
+                if (wh > clip) {
+                    this.tail = wh - clip;
+                }
+            }
+
+            return this;
+        },
+        _position: function(item) {
+            var first  = this._first,
+                pos    = first.position()[this.lt],
+                center = this.options('center'),
+                centerOffset = center ? (this.clipping() / 2) - (this.dimension(first) / 2) : 0;
+
+            if (this.rtl && !this.vertical) {
+                if (this.relative) {
+                    pos -= this.list().width() - this.dimension(first);
+                } else {
+                    pos -= this.clipping() - this.dimension(first);
+                }
+
+                pos += centerOffset;
+            } else {
+                pos -= centerOffset;
+            }
+
+            if (!center &&
+                (this.index(item) > this.index(first) || this.inTail) &&
+                this.tail) {
+                pos = this.rtl && !this.vertical ? pos - this.tail : pos + this.tail;
+                this.inTail = true;
+            } else {
+                this.inTail = false;
+            }
+
+            return -pos;
+        },
+        _update: function(update) {
+            var self = this,
+                current = {
+                    target:       this._target || $(),
+                    first:        this._first || $(),
+                    last:         this._last || $(),
+                    visible:      this._visible || $(),
+                    fullyvisible: this._fullyvisible || $()
+                },
+                back = this.index(update.first || current.first) < this.index(current.first),
+                key,
+                doUpdate = function(key) {
+                    var elIn  = [],
+                        elOut = [];
+
+                    update[key].each(function() {
+                        if (current[key].index(this) < 0) {
+                            elIn.push(this);
+                        }
+                    });
+
+                    current[key].each(function() {
+                        if (update[key].index(this) < 0) {
+                            elOut.push(this);
+                        }
+                    });
+
+                    if (back) {
+                        elIn = elIn.reverse();
+                    } else {
+                        elOut = elOut.reverse();
+                    }
+
+                    self._trigger(key + 'in', $(elIn));
+                    self._trigger(key + 'out', $(elOut));
+
+                    self['_' + key] = update[key];
+                };
+
+            for (key in update) {
+                doUpdate(key);
+            }
+
+            return this;
+        }
+    });
+}(jQuery, window));
+
+(function($) {
+    'use strict';
+
+    $.jcarousel.fn.scrollIntoView = function(target, animate, callback) {
+        var parsed = $.jCarousel.parseTarget(target),
+            first  = this.index(this._fullyvisible.first()),
+            last   = this.index(this._fullyvisible.last()),
+            index;
+
+        if (parsed.relative) {
+            index = parsed.target < 0 ? Math.max(0, first + parsed.target) : last + parsed.target;
+        } else {
+            index = typeof parsed.target !== 'object' ? parsed.target : this.index(parsed.target);
+        }
+
+        if (index < first) {
+            return this.scroll(index, animate, callback);
+        }
+
+        if (index >= first && index <= last) {
+            if ($.isFunction(callback)) {
+                callback.call(this, false);
+            }
+
+            return this;
+        }
+
+        var items = this.items(),
+            clip = this.clipping(),
+            lrb  = this.vertical ? 'bottom' : (this.rtl ? 'left'  : 'right'),
+            wh   = 0,
+            curr;
+
+        while (true) {
+            curr = items.eq(index);
+
+            if (curr.length === 0) {
+                break;
+            }
+
+            wh += this.dimension(curr);
+
+            if (wh >= clip) {
+                var margin = parseFloat(curr.css('margin-' + lrb)) || 0;
+                if ((wh - margin) !== clip) {
+                    index++;
+                }
+                break;
+            }
+
+            if (index <= 0) {
+                break;
+            }
+
+            index--;
+        }
+
+        return this.scroll(index, animate, callback);
+    };
+}(jQuery));
+
+(function($) {
+    'use strict';
+
+    $.jCarousel.plugin('jcarouselControl', {
+        _options: {
+            target: '+=1',
+            event:  'click',
+            method: 'scroll'
+        },
+        _active: null,
+        _init: function() {
+            this.onDestroy = $.proxy(function() {
+                this._destroy();
+                this.carousel()
+                    .one('jcarousel:createend', $.proxy(this._create, this));
+            }, this);
+            this.onReload = $.proxy(this._reload, this);
+            this.onEvent = $.proxy(function(e) {
+                e.preventDefault();
+
+                var method = this.options('method');
+
+                if ($.isFunction(method)) {
+                    method.call(this);
+                } else {
+                    this.carousel()
+                        .jcarousel(this.options('method'), this.options('target'));
+                }
+            }, this);
+        },
+        _create: function() {
+            this.carousel()
+                .one('jcarousel:destroy', this.onDestroy)
+                .on('jcarousel:reloadend jcarousel:scrollend', this.onReload);
+
+            this._element
+                .on(this.options('event') + '.jcarouselcontrol', this.onEvent);
+
+            this._reload();
+        },
+        _destroy: function() {
+            this._element
+                .off('.jcarouselcontrol', this.onEvent);
+
+            this.carousel()
+                .off('jcarousel:destroy', this.onDestroy)
+                .off('jcarousel:reloadend jcarousel:scrollend', this.onReload);
+        },
+        _reload: function() {
+            var parsed   = $.jCarousel.parseTarget(this.options('target')),
+                carousel = this.carousel(),
+                active;
+
+            if (parsed.relative) {
+                active = carousel
+                    .jcarousel(parsed.target > 0 ? 'hasNext' : 'hasPrev');
+            } else {
+                var target = typeof parsed.target !== 'object' ?
+                                carousel.jcarousel('items').eq(parsed.target) :
+                                parsed.target;
+
+                active = carousel.jcarousel('target').index(target) >= 0;
+            }
+
+            if (this._active !== active) {
+                this._trigger(active ? 'active' : 'inactive');
+                this._active = active;
+            }
+
+            return this;
+        }
+    });
+}(jQuery));
+
+(function($) {
+    'use strict';
+
+    $.jCarousel.plugin('jcarouselPagination', {
+        _options: {
+            perPage: null,
+            item: function(page) {
+                return '<a href="#' + page + '">' + page + '</a>';
+            },
+            event:  'click',
+            method: 'scroll'
+        },
+        _pages: {},
+        _items: {},
+        _currentPage: null,
+        _init: function() {
+            this.onDestroy = $.proxy(function() {
+                this._destroy();
+                this.carousel()
+                    .one('jcarousel:createend', $.proxy(this._create, this));
+            }, this);
+            this.onReload = $.proxy(this._reload, this);
+            this.onScroll = $.proxy(this._update, this);
+        },
+        _create: function() {
+            this.carousel()
+                .one('jcarousel:destroy', this.onDestroy)
+                .on('jcarousel:reloadend', this.onReload)
+                .on('jcarousel:scrollend', this.onScroll);
+
+            this._reload();
+        },
+        _destroy: function() {
+            this._clear();
+
+            this.carousel()
+                .off('jcarousel:destroy', this.onDestroy)
+                .off('jcarousel:reloadend', this.onReload)
+                .off('jcarousel:scrollend', this.onScroll);
+        },
+        _reload: function() {
+            var perPage = this.options('perPage');
+
+            this._pages = {};
+            this._items = {};
+
+            // Calculate pages
+            if ($.isFunction(perPage)) {
+                perPage = perPage.call(this);
+            }
+
+            if (perPage == null) {
+                this._pages = this._calculatePages();
+            } else {
+                var pp    = parseInt(perPage, 10) || 0,
+                    items = this.carousel().jcarousel('items'),
+                    page  = 1,
+                    i     = 0,
+                    curr;
+
+                while (true) {
+                    curr = items.eq(i++);
+
+                    if (curr.length === 0) {
+                        break;
+                    }
+
+                    if (!this._pages[page]) {
+                        this._pages[page] = curr;
+                    } else {
+                        this._pages[page] = this._pages[page].add(curr);
+                    }
+
+                    if (i % pp === 0) {
+                        page++;
+                    }
+                }
+            }
+
+            this._clear();
+
+            var self     = this,
+                carousel = this.carousel().data('jcarousel'),
+                element  = this._element,
+                item     = this.options('item');
+
+            $.each(this._pages, function(page, carouselItems) {
+                var currItem = self._items[page] = $(item.call(self, page, carouselItems));
+
+                currItem.on(self.options('event') + '.jcarouselpagination', $.proxy(function() {
+                    var target = carouselItems.eq(0);
+
+                    // If circular wrapping enabled, ensure correct scrolling direction
+                    if (carousel.circular) {
+                        var currentIndex = carousel.index(carousel.target()),
+                            newIndex     = carousel.index(target);
+
+                        if (parseFloat(page) > parseFloat(self._currentPage)) {
+                            if (newIndex < currentIndex) {
+                                target = '+=' + (carousel.items().length - currentIndex + newIndex);
+                            }
+                        } else {
+                            if (newIndex > currentIndex) {
+                                target = '-=' + (currentIndex + (carousel.items().length - newIndex));
+                            }
+                        }
+                    }
+
+                    carousel[this.options('method')](target);
+                }, self));
+
+                element.append(currItem);
+            });
+
+            this._update();
+        },
+        _update: function() {
+            var target = this.carousel().jcarousel('target'),
+                currentPage;
+
+            $.each(this._pages, function(page, carouselItems) {
+                carouselItems.each(function() {
+                    if (target.is(this)) {
+                        currentPage = page;
+                        return false;
+                    }
+                });
+
+                if (currentPage) {
+                    return false;
+                }
+            });
+
+            if (this._currentPage !== currentPage) {
+                this._trigger('inactive', this._items[this._currentPage]);
+                this._trigger('active', this._items[currentPage]);
+            }
+
+            this._currentPage = currentPage;
+        },
+        items: function() {
+            return this._items;
+        },
+        _clear: function() {
+            this._element.empty();
+            this._currentPage = null;
+        },
+        _calculatePages: function() {
+            var carousel = this.carousel().data('jcarousel'),
+                items    = carousel.items(),
+                clip     = carousel.clipping(),
+                wh       = 0,
+                idx      = 0,
+                page     = 1,
+                pages    = {},
+                curr;
+
+            while (true) {
+                curr = items.eq(idx++);
+
+                if (curr.length === 0) {
+                    break;
+                }
+
+                if (!pages[page]) {
+                    pages[page] = curr;
+                } else {
+                    pages[page] = pages[page].add(curr);
+                }
+
+                wh += carousel.dimension(curr);
+
+                if (wh >= clip) {
+                    page++;
+                    wh = 0;
+                }
+            }
+
+            return pages;
+        }
+    });
+}(jQuery));
+
+(function($) {
+    'use strict';
+
+    $.jCarousel.plugin('jcarouselAutoscroll', {
+        _options: {
+            target:    '+=1',
+            interval:  3000,
+            autostart: true
+        },
+        _timer: null,
+        _init: function () {
+            this.onDestroy = $.proxy(function() {
+                this._destroy();
+                this.carousel()
+                    .one('jcarousel:createend', $.proxy(this._create, this));
+            }, this);
+
+            this.onAnimateEnd = $.proxy(this.start, this);
+        },
+        _create: function() {
+            this.carousel()
+                .one('jcarousel:destroy', this.onDestroy);
+
+            if (this.options('autostart')) {
+                this.start();
+            }
+        },
+        _destroy: function() {
+            this.stop();
+            this.carousel()
+                .off('jcarousel:destroy', this.onDestroy);
+        },
+        start: function() {
+            this.stop();
+
+            this.carousel()
+                .one('jcarousel:animateend', this.onAnimateEnd);
+
+            this._timer = setTimeout($.proxy(function() {
+                this.carousel().jcarousel('scroll', this.options('target'));
+            }, this), this.options('interval'));
+
+            return this;
+        },
+        stop: function() {
+            if (this._timer) {
+                this._timer = clearTimeout(this._timer);
+            }
+
+            this.carousel()
+                .off('jcarousel:animateend', this.onAnimateEnd);
+
+            return this;
+        }
+    });
+}(jQuery));
Index: /extensions/Slim/js/jquery.jcarousel.min.js
===================================================================
--- /extensions/Slim/js/jquery.jcarousel.min.js	(revision 25996)
+++ /extensions/Slim/js/jquery.jcarousel.min.js	(revision 25997)
@@ -12,5 +12,7 @@
  * Inspired by the "Carousel Component" by Bill Scott
  *   http://billwscott.com/carousel/
- */
+*/
 
 (function(g){var q={vertical:!1,rtl:!1,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,setupCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,animationStepCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click", buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},m=!1;g(window).bind("load.jcarousel",function(){m=!0});g.jcarousel=function(a,c){this.options=g.extend({},q,c||{});this.autoStopped=this.locked=!1;this.buttonPrevState=this.buttonNextState=this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===void 0)this.options.rtl=(g(a).attr("dir")||g("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical? this.options.rtl?"right":"left":"top";for(var b="",d=a.className.split(" "),f=0;f<d.length;f++)if(d[f].indexOf("jcarousel-skin")!=-1){g(a).removeClass(d[f]);b=d[f];break}a.nodeName.toUpperCase()=="UL"||a.nodeName.toUpperCase()=="OL"?(this.list=g(a),this.clip=this.list.parents(".jcarousel-clip"),this.container=this.list.parents(".jcarousel-container")):(this.container=g(a),this.list=this.container.find("ul,ol").eq(0),this.clip=this.container.find(".jcarousel-clip"));if(this.clip.size()===0)this.clip= this.list.wrap("<div></div>").parent();if(this.container.size()===0)this.container=this.clip.wrap("<div></div>").parent();b!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+b+'"></div>');this.buttonPrev=g(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null)this.buttonPrev=g(this.options.buttonPrevHTML).appendTo(this.container);this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext= g(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null)this.buttonNext=g(this.options.buttonNextHTML).appendTo(this.container);this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip")).css({position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden",position:"relative",top:0,margin:0,padding:0}).css(this.options.rtl?"right":"left",0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"}); !this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var j=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null,b=this.list.children("li"),e=this;if(b.size()>0){var h=0,i=this.options.offset;b.each(function(){e.format(this,i++);h+=e.dimension(this,j)});this.list.css(this.wh,h+100+"px");if(!c||c.size===void 0)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display", "block");this.funcNext=function(){e.next()};this.funcPrev=function(){e.prev()};this.funcResize=function(){e.resizeTimer&&clearTimeout(e.resizeTimer);e.resizeTimer=setTimeout(function(){e.reload()},100)};this.options.initCallback!==null&&this.options.initCallback(this,"init");!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):this.setup()};var f=g.jcarousel;f.fn=f.prototype={jcarousel:"0.2.8"};f.fn.extend=f.extend=g.extend;f.fn.extend({setup:function(){this.prevLast= this.prevFirst=this.last=this.first=null;this.animating=!1;this.tail=this.resizeTimer=this.timer=null;this.inTail=!1;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start,!0);this.prevFirst=this.prevLast=null;this.animate(a,!1);g(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize);this.options.setupCallback!==null&&this.options.setupCallback(this)}},reset:function(){this.list.empty();this.list.css(this.lt, "0px");this.list.css(this.wh,"10px");this.options.initCallback!==null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!==null&&this.inTail&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=!1;this.options.reloadCallback!==null&&this.options.reloadCallback(this);if(this.options.visible!==null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0;this.list.children("li").each(function(f){b+=a.dimension(this, c);f+1<a.first&&(d=b)});this.list.css(this.wh,b+"px");this.list.css(this.lt,-d+"px")}this.scroll(this.first,!1)},lock:function(){this.locked=!0;this.buttons()},unlock:function(){this.locked=!1;this.buttons()},size:function(a){if(a!==void 0)this.options.size=a,this.locked||this.buttons();return this.options.size},has:function(a,c){if(c===void 0||!c)c=a;if(this.options.size!==null&&c>this.options.size)c=this.options.size;for(var b=a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return!1}return!0}, get:function(a){return g(">.jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,p=g(c);if(b.length===0)for(var j,e=f.intval(a),b=this.create(a);;){if(j=this.get(--e),e<=0||j.length){e<=0?this.list.prepend(b):j.after(b);break}}else d=this.dimension(b);p.get(0).nodeName.toUpperCase()=="LI"?(b.replaceWith(p),b=p):b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")),a);p=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible): null;d=this.dimension(b,p)-d;a>0&&a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))-d+"px");this.list.css(this.wh,f.intval(this.list.css(this.wh))+d+"px");return b},remove:function(a){var c=this.get(a);if(c.length&&!(a>=this.first&&a<=this.last)){var b=this.dimension(c);a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+b+"px");c.remove();this.list.css(this.wh,f.intval(this.list.css(this.wh))-b+"px")}},next:function(){this.tail!==null&&!this.inTail?this.scrollTail(!1): this.scroll((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!==null&&this.last==this.options.size?1:this.first+this.options.scroll)},prev:function(){this.tail!==null&&this.inTail?this.scrollTail(!0):this.scroll((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!==null&&this.first==1?this.options.size:this.first-this.options.scroll)},scrollTail:function(a){if(!this.locked&&!this.animating&&this.tail){this.pauseAuto();var c=f.intval(this.list.css(this.lt)), c=!a?c-this.tail:c+this.tail;this.inTail=!a;this.prevFirst=this.first;this.prevLast=this.last;this.animate(c)}},scroll:function(a,c){!this.locked&&!this.animating&&(this.pauseAuto(),this.animate(this.pos(a),c))},pos:function(a,c){var b=f.intval(this.list.css(this.lt));if(this.locked||this.animating)return b;this.options.wrap!="circular"&&(a=a<1?1:this.options.size&&a>this.options.size?this.options.size:a);for(var d=this.first>a,g=this.options.wrap!="circular"&&this.first<=1?1:this.first,j=d?this.get(g): this.get(this.last),e=d?g:g-1,h=null,i=0,k=!1,l=0;d?--e>=a:++e<a;){h=this.get(e);k=!h.length;if(h.length===0&&(h=this.create(e).addClass(this.className("jcarousel-item-placeholder")),j[d?"before":"after"](h),this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size)))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)));j=h;l=this.dimension(h);k&&(i+=l);if(this.first!==null&&(this.options.wrap=="circular"||e>=1&&(this.options.size===null||e<= this.options.size)))b=d?b+l:b-l}for(var g=this.clipping(),m=[],o=0,n=0,j=this.get(a-1),e=a;++o;){h=this.get(e);k=!h.length;if(h.length===0){h=this.create(e).addClass(this.className("jcarousel-item-placeholder"));if(j.length===0)this.list.prepend(h);else j[d?"before":"after"](h);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)))}j=h;l=this.dimension(h);if(l===0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting..."); this.options.wrap!="circular"&&this.options.size!==null&&e>this.options.size?m.push(h):k&&(i+=l);n+=l;if(n>=g)break;e++}for(h=0;h<m.length;h++)m[h].remove();i>0&&(this.list.css(this.wh,this.dimension(this.list)+i+"px"),d&&(b-=i,this.list.css(this.lt,f.intval(this.list.css(this.lt))-i+"px")));i=a+o-1;if(this.options.wrap!="circular"&&this.options.size&&i>this.options.size)i=this.options.size;if(e>i){o=0;e=i;for(n=0;++o;){h=this.get(e--);if(!h.length)break;n+=this.dimension(h);if(n>=g)break}}e=i-o+ 1;this.options.wrap!="circular"&&e<1&&(e=1);if(this.inTail&&d)b+=this.tail,this.inTail=!1;this.tail=null;if(this.options.wrap!="circular"&&i==this.options.size&&i-o+1>=1&&(d=f.intval(this.get(i).css(!this.options.vertical?"marginRight":"marginBottom")),n-d>g))this.tail=n-g-d;if(c&&a===this.options.size&&this.tail)b-=this.tail,this.inTail=!0;for(;a-- >e;)b+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=e;this.last=i;return b},animate:function(a,c){if(!this.locked&& !this.animating){this.animating=!0;var b=this,d=function(){b.animating=!1;a===0&&b.list.css(b.lt,0);!b.autoStopped&&(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size===null||b.last<b.options.size||b.last==b.options.size&&b.tail!==null&&!b.inTail)&&b.startAuto();b.buttons();b.notify("onAfterAnimation");if(b.options.wrap=="circular"&&b.options.size!==null)for(var c=b.prevFirst;c<=b.prevLast;c++)c!==null&&!(c>=b.first&&c<=b.last)&&(c<1||c>b.options.size)&&b.remove(c)}; this.notify("onBeforeAnimation");if(!this.options.animation||c===!1)this.list.css(this.lt,a+"px"),d();else{var f=!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},d={duration:this.options.animation,easing:this.options.easing,complete:d};if(g.isFunction(this.options.animationStepCallback))d.step=this.options.animationStepCallback;this.list.animate(f,d)}}},startAuto:function(a){if(a!==void 0)this.options.auto=a;if(this.options.auto===0)return this.stopAuto();if(this.timer===null){this.autoStopped= !1;var c=this;this.timer=window.setTimeout(function(){c.next()},this.options.auto*1E3)}},stopAuto:function(){this.pauseAuto();this.autoStopped=!0},pauseAuto:function(){if(this.timer!==null)window.clearTimeout(this.timer),this.timer=null},buttons:function(a,c){if(a==null&&(a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size===null||this.last<this.options.size),!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!==null&& this.last>=this.options.size))a=this.tail!==null&&!this.inTail;if(c==null&&(c=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1),!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1))c=this.tail!==null&&this.inTail;var b=this;this.buttonNext.size()>0?(this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext),a&&this.buttonNext.bind(this.options.buttonNextEvent+".jcarousel",this.funcNext), this.buttonNext[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?!1:!0),this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a)):this.options.buttonNextCallback!==null&&this.buttonNextState!=a&&this.options.buttonNextCallback(b,null,a);this.buttonPrev.size()>0?(this.buttonPrev.unbind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev), c&&this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev),this.buttonPrev[c?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?!1:!0),this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)):this.options.buttonPrevCallback!==null&&this.buttonPrevState!=c&&this.options.buttonPrevCallback(b,null,c);this.buttonNextState= a;this.buttonPrevState=c},notify:function(a){var c=this.prevFirst===null?"init":this.prevFirst<this.first?"next":"prev";this.callback("itemLoadCallback",a,c);this.prevFirst!==this.first&&(this.callback("itemFirstInCallback",a,c,this.first),this.callback("itemFirstOutCallback",a,c,this.prevFirst));this.prevLast!==this.last&&(this.callback("itemLastInCallback",a,c,this.last),this.callback("itemLastOutCallback",a,c,this.prevLast));this.callback("itemVisibleInCallback",a,c,this.first,this.last,this.prevFirst, this.prevLast);this.callback("itemVisibleOutCallback",a,c,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(a,c,b,d,f,j,e){if(!(this.options[a]==null||typeof this.options[a]!="object"&&c!="onAfterAnimation")){var h=typeof this.options[a]=="object"?this.options[a][c]:this.options[a];if(g.isFunction(h)){var i=this;if(d===void 0)h(i,b,c);else if(f===void 0)this.get(d).each(function(){h(i,this,d,b,c)});else for(var a=function(a){i.get(a).each(function(){h(i,this,a,b,c)})},k=d;k<=f;k++)k!== null&&!(k>=j&&k<=e)&&a(k)}}},create:function(a){return this.format("<li></li>",a)},format:function(a,c){for(var a=g(a),b=a.get(0).className.split(" "),d=0;d<b.length;d++)b[d].indexOf("jcarousel-")!=-1&&a.removeClass(b[d]);a.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+c)).css({"float":this.options.rtl?"right":"left","list-style":"none"}).attr("jcarouselindex",c);return a},className:function(a){return a+" "+a+(!this.options.vertical?"-horizontal":"-vertical")}, dimension:function(a,c){var b=g(a);if(c==null)return!this.options.vertical?b.outerWidth(!0)||f.intval(this.options.itemFallbackDimension):b.outerHeight(!0)||f.intval(this.options.itemFallbackDimension);else{var d=!this.options.vertical?c-f.intval(b.css("marginLeft"))-f.intval(b.css("marginRight")):c-f.intval(b.css("marginTop"))-f.intval(b.css("marginBottom"));g(b).css(this.wh,d+"px");return this.dimension(b)}},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-f.intval(this.clip.css("borderLeftWidth"))- f.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-f.intval(this.clip.css("borderTopWidth"))-f.intval(this.clip.css("borderBottomWidth"))},index:function(a,c){if(c==null)c=this.options.size;return Math.round(((a-1)/c-Math.floor((a-1)/c))*c)+1}});f.extend({defaults:function(a){return g.extend(q,a||{})},intval:function(a){a=parseInt(a,10);return isNaN(a)?0:a},windowLoaded:function(){m=!0}});g.fn.jcarousel=function(a){if(typeof a=="string"){var c=g(this).data("jcarousel"),b=Array.prototype.slice.call(arguments, 1);return c[a].apply(c,b)}else return this.each(function(){var b=g(this).data("jcarousel");b?(a&&g.extend(b.options,a),b.reload()):g(this).data("jcarousel",new f(this,a))})}})(jQuery);
+
+
Index: /extensions/Slim/js/menu.js
===================================================================
--- /extensions/Slim/js/menu.js	(revision 25996)
+++ /extensions/Slim/js/menu.js	(revision 25997)
@@ -1,118 +1,71 @@
-/*
- * jQuery Mega Drop Down Menu script by Soh Tanaka
- * http://www.sohtanaka.com/web-design/mega-drop-downs-w-css-jquery/
- * 
- */
 $(document).ready(function(){
+	$('.mcol').columnize({ columns: 4});
+	$.each($('.mcol li'), function() {
+		var $li = $(this),
+			$test=$li.find('a');
+		if($test.length == 0){
+			$li.remove()
+		}
+	})
+	
+	$('li.liSub:last-child dt').addClass('dd_wrapper');
+	$('li.liSub:last-child dd').addClass('sub');
+	$('ul#topnav li .sub').hide();
 
-	$("li.liSub:last-child dt").addClass('dd_wrapper');
-	$("li.liSub:last-child dd").addClass('sub');
+	function megaHoverOver(){
+		$(this).find('.sub').stop().slideDown(200);
+	};
+	
+	function megaHoverOut(){
+	 $(this).find('.sub').stop().slideUp(200);
+	};
+
+	var $configSub 	= {
+						over	: megaHoverOver,   
+						out		: megaHoverOut 	   
+						};
+
+	$('ul#topnav li').hoverIntent($configSub);
+	$('ul#topnav .sub ul li:last-child a').css('border', 'none');
+
+	
+	$('.cl_wrapper').hover(function(){
+		if($(this).next('div').is(':hidden')){
+			$(this).addClass('activate').next('div').slideDown(200).attr(':visible');
+		}
+	});
+		
+	$('.cl_wrapper').click(function(){
+		if($(this).next('div').is(':visible')){
+			$(this).next('div').slideUp(200, function(){
+				$(this).hide()
+			});
+			$(this).removeClass('activate').next('div').attr(':hidden'); 
+		}
+	});
+	
+	$('.cc_wrapper').click(function(){
+		if($(this).next('div').is(':visible')){
+			$(this).removeClass('activate').next('div').slideUp(200, function(){
+				$(this).hide().attr(':hidden');
+			});
+		} else {
+			$(this).next('div').slideDown(200).attr(':visible');
+		}
+	});
+
+	$('.close').click(function(){
+		$(this).parent().slideUp(200, function(){
+				$(this).hide().attr(':hidden')
+			}).prev().removeClass('activate');
+	});
+		
+});
+	
 
 
 
-	function megaHoverOver(){
-		$(this).find(".sub").stop().fadeTo('slow', 1).show();
-			
-	}
-	
-	function megaHoverOut(){
-	 $(this).find(".sub").stop().fadeTo('slow', 0, function() {
-		  $(this).hide();
-	  });
-	}
 
 
-	var configSub = {
-		 sensitivity: 2,		// number = sensitivity threshold (must be 1 or higher)    
-		 interval: 0, 			// number = milliseconds for onMouseOver polling interval    
-		 over: megaHoverOver,   // function = onMouseOver callback (REQUIRED)    
-		 timeout: 0, 			// number = milliseconds delay before onMouseOut    
-		 out: megaHoverOut 		// function = onMouseOut callback (REQUIRED)    
-	};
-
-	$("ul#topnav li .sub").css({'opacity':'0'});
-	$("ul#topnav li").hoverIntent(configSub);
-	
-	var configSwitch = {
-		 sensitivity: 2,		// number = sensitivity threshold (must be 1 or higher)    
-		 interval: 0, 			// number = milliseconds for onMouseOver polling interval    
-		 over: switchBoxOver,   // function = onMouseOver callback (REQUIRED)    
-		 timeout: 0, 			// number = milliseconds delay before onMouseOut    
-		 out: switchBoxOut 		// function = onMouseOut callback (REQUIRED)    
-	};
-
-	function switchBoxOver(){
-		$(this).find(".switchBox").stop().fadeTo('slow', 1).show();
-			
-	}
-	
-	function switchBoxOut(){
-	 $(this).find(".switchBox").stop().fadeTo('slow', 0, function() {
-		  $(this).hide();
-	  });
-	}
-	$("ul.categoryActions li").hoverIntent(configSwitch);
-
-	
-	// Delete the border for the last li of the submenu
-	$("ul#topnav .sub ul li:last-child a").css("border", "none");
-
-	/*other menubar script*/
-	//open form login menu		
-	
-
-	
-	$(".cl_wrapper").next("div").hide();
-
-	
-	$(".cl_wrapper").hover(function(){
-	
-		if($(this).next("div").is(":hidden")){
-			$(this).next("div").fadeTo('fast', 1);
-			$(this).addClass('activate');
-			$(this).next("div").attr(":visible")
-		}
-	});
-		
-	
-	$(".cl_wrapper").click(function(){
-		if($(this).next("div").is(":visible")){
-		$(this).next("div").fadeTo('slow', 0, function(){$(this).hide()});
-		$(this).removeClass('activate'); 
-		$(this).next("div").attr(":hidden")
-		}
-	});
-
-	$(".close").click(function(){
-		if($("#loger").is(":visible")){
-			$("#loger").fadeTo('fast', 0, function(){$(this).hide()});
-			$(".cl_wrapper").removeClass('activate');
-			$("#loger").attr(":hidden");
-		}
-	});
-	
-	$(".cc_wrapper").click(function(){
-		if($(this).next("div").is(":visible")){
-			$(this).next("div").fadeTo('slow', 0, function(){$(this).hide()});
-			$(this).removeClass('activate'); 
-			$(this).next("div").attr(":hidden")
-		}
-	});
-	
-	$(".cc_wrapper").click(function(){
-		if($(this).next("div").is(":hidden")){
-			$(this).next("div").fadeTo('fast', 1);
-			$(this).addClass('activate');
-			$(this).next("div").attr(":visible")
-		}
-	});
-	
-
-	
-	
-	
 
 
-	// make column menubar_categorie
-	$('.mcol').makeacolumnlists({cols:4, colWidth:155, equalHeight: true, startN: 1});
-});
Index: /extensions/Slim/local_head.tpl
===================================================================
--- /extensions/Slim/local_head.tpl	(revision 25996)
+++ /extensions/Slim/local_head.tpl	(revision 25997)
@@ -1,8 +1,2 @@
-{php}
-	global $Slim;
-	$this->assign( 'Slim', $Slim );
-{/php}
-
-
 {if (($Slim.style_slim)!=3)}
 {combine_script id='lytebox' load='header' require='jquery' path='themes/Slim/js/lytebox.js'}
@@ -11,5 +5,5 @@
 {if (($Slim.style_slim)!=1)}
 {combine_script id='menu' load='header' require='jquery' path='themes/Slim/js/menu.js'}
-{combine_script id='hoverIntent' load='header' require='jquery' path='themes/Slim/js/jquery.hoverIntent.minified.js'}
-{combine_script id='columnizer' load='header' require='jquery' path='themes/Slim/js/columnizer.js'}
+{combine_script id='hoverIntent' load='header' require='jquery' path='themes/Slim/js/jquery.hoverIntent.js'}
+{combine_script id='columnizer' load='header' require='jquery' path='themes/Slim/js/jquery.columnizer.js'}
 {/if}
Index: /extensions/Slim/template/comments.tpl
===================================================================
--- /extensions/Slim/template/comments.tpl	(revision 25996)
+++ /extensions/Slim/template/comments.tpl	(revision 25997)
@@ -1,5 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
-
 {if ($Slim.style_slim)==3}
 {$MENUBAR}
Index: /extensions/Slim/template/header.tpl
===================================================================
--- /extensions/Slim/template/header.tpl	(revision 25996)
+++ /extensions/Slim/template/header.tpl	(revision 25997)
@@ -1,5 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
-
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html lang="{$lang_info.code}" dir="{$lang_info.direction}">
@@ -60,5 +57,6 @@
 
 
-{combine_script id='jquery.jcarousel' load='header' require='jquery' path='themes/Slim/js/jquery.jcarousel.min.js'}
+{combine_script id='jcarousel' load='header' require='jquery' path='themes/Slim/js/jquery.jcarousel.js'}
+
 </head>
 
Index: /extensions/Slim/template/identification.tpl
===================================================================
--- /extensions/Slim/template/identification.tpl	(revision 25996)
+++ /extensions/Slim/template/identification.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)!=1}
 {$MENUBAR}
Index: /extensions/Slim/template/index.tpl
===================================================================
--- /extensions/Slim/template/index.tpl	(revision 25996)
+++ /extensions/Slim/template/index.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)!=1}
 {$MENUBAR}
@@ -23,7 +21,7 @@
 
 	<div id="infoBlock">
-	<div class="titrePage{if isset($chronology.TITLE)} calendarTitleBar{/if}">
-
-		<ul class="categoryActions">
+<div class="titrePage{if isset($chronology.TITLE)} calendarTitleBar{/if}">
+
+	<ul class="categoryActions">
 	{if !empty($image_orders)}
 			<li>{strip}<a id="sortOrderLink" title="{'Sort order'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
@@ -163,7 +161,37 @@
 
 {if !empty($THUMBNAILS)}
-	<ul class="thumbnails" id="thumbnails">
 		{$THUMBNAILS}
-	</ul>
+{footer_script}{literal}
+        $('.jcarousel')
+            .jcarousel({
+                 wrap: 'circular'
+            })		
+			.jcarouselAutoscroll({
+			autostart: false
+			});	
+			
+        $('.jcarousel-control-prev')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                target: '-=1'
+            });
+
+        $('.jcarousel-control-next')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                target: '+=1'
+            });
+{/literal}{/footer_script}
+
 {/if}
 
@@ -171,4 +199,46 @@
 	{if !empty($CATEGORIES)}
 		{$CATEGORIES}
+		{footer_script}{literal}
+        $('.jcarousel')
+            .jcarousel({
+                 wrap: 'circular'
+            })		
+			.jcarouselAutoscroll({
+			interval: 3000,
+			target: '+=1',
+			autostart: true
+			});	
+			
+        $('.jcarousel-control-prev')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                target: '-=1'
+            });
+
+        $('.jcarousel-control-next')
+            .on('jcarouselcontrol:active', function() {
+                $(this).removeClass('inactive');
+            })
+            .on('jcarouselcontrol:inactive', function() {
+                $(this).addClass('inactive');
+            })
+            .jcarouselControl({
+                target: '+=1'
+            });
+		
+		$('.jcarousel')
+			.on('mouseenter', function(){
+				$(this).jcarouselAutoscroll('stop')
+			})
+			.on('mouseleave', function(){
+				$(this).jcarouselAutoscroll('start')
+			});
+{/literal}{/footer_script}
+
 	{/if}
 {/if}
Index: /extensions/Slim/template/mainpage_categories.tpl
===================================================================
--- /extensions/Slim/template/mainpage_categories.tpl	(revision 25996)
+++ /extensions/Slim/template/mainpage_categories.tpl	(revision 25997)
@@ -1,60 +1,28 @@
 {define_derivative name='carousel' width='300' height='300' min_width='300'}
-
-
-{html_style}
-.jcarousel-skin-cat .jcarousel-list li{ldelim}
-	min-width:{$carousel->max_width()}px;
-{/html_style}
-
-
-<div id="carouselcat">
-
+<div id="carousel">
 <div id="wrap">
-	  <ul id="carousel" class="jcarousel-skin-cat">
-
-		{foreach from=$category_thumbnails item=cat}
-
-
-			<li class="test">
-					<div class="illustration">
-						<a href="{$cat.URL}">
-							<img src="{$pwg->derivative_url($carousel, $cat.representative.src_image)}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}" min-width="{$carousel->max_width()}" height="{$carousel->max_height()-22}"/>
-						</a>
-					</div>
-					
-					<div class="CatMPdescription">
-						
+	<div class="jcarousel">
+		<ul>
+			{foreach from=$category_thumbnails item=cat}
+				<li>
+						<div class="illustration">
+							<a href="{$cat.URL}">
+								<img src="{$pwg->derivative_url($carousel, $cat.representative.src_image)}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}" min-width="{$carousel->max_width()}" height="{$carousel->max_height()-22}"/>
+							</a>
+						</div>
+						<div class="CatMPdescription">
 							<h3>
 								<a href="{$cat.URL}">{$cat.NAME}</a>
 							</h3>
 							<div>
-							{$cat.CAPTION_NB_IMAGES}
+								{$cat.CAPTION_NB_IMAGES}
 							</div>	
-					</div>
-			</li>
-		{/foreach}
-	</ul>
-{footer_script}{literal}
-function mycarousel_initCallback(carousel)
-{
-    // Pause autoscrolling if the user moves with the cursor over the clip.
-    carousel.clip.hover(function() {
-        carousel.stopAuto();
-    }, function() {
-        carousel.startAuto();
-    });
-};
-
-jQuery(document).ready(function() {
-    jQuery('#carousel').jcarousel({
-    	auto: 1,
-		wrap: 'circular',
-		scroll: 2,
-		animation: 2000,
-		initCallback: mycarousel_initCallback,
-		
-    });
-});
-{/literal}{/footer_script}
+						</div>
+				</li>
+			{/foreach}
+		</ul>
+	</div>
 </div>
+	<a href="#" class="jcarousel-control-prev">&lsaquo;</a>
+    <a href="#" class="jcarousel-control-next">&rsaquo;</a>
 </div>
Index: /extensions/Slim/template/menubar.tpl
===================================================================
--- /extensions/Slim/template/menubar.tpl	(revision 25996)
+++ /extensions/Slim/template/menubar.tpl	(revision 25997)
@@ -1,3 +1,3 @@
-<div id="menubar">	
+<div id=menubar>	
 <span id="menu_start">
 		<a href="index.php?/categories"></a>
Index: /extensions/Slim/template/menubar_categories.tpl
===================================================================
--- /extensions/Slim/template/menubar_categories.tpl	(revision 25996)
+++ /extensions/Slim/template/menubar_categories.tpl	(revision 25997)
@@ -1,51 +1,44 @@
-	<span class="dd_wrapper">{'Categories'|@translate}</span>
+<span class="dd_wrapper">{'Albums'|@translate}</span>
 	
-		<div class="sub" style="width:700px">
-		{assign var='ref_level' value=0}
-			<div id="menu_cat_act">
-				<div id="nbImg">
-			<p class="totalImages">{$pwg->l10n_dec('%d image', '%d images', $block->data.NB_PICTURE)}</p>
-				</div>
-				<div id="filter">
-					{if isset($U_START_FILTER)}
-						<a href="{$U_START_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'display only recently posted photos'|@translate}" rel="nofollow">
-						<span class="pwg-icon pwg-icon-filter"> </span>
-						</a>
-					{/if}
-					{if isset($U_STOP_FILTER)}
-					<a href="{$U_STOP_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'return to the display of all photos'|@translate}"><span
-					class="pwg-icon pwg-icon-filter-del"> </span></a>
-					{/if}
-				</div>
-
-			</div>
+<div class="sub" style="width:700px">
+	<div id="menu_cat_act">
+		<div id="nbImg">
+			<p class="totalImages">{$block->data.NB_PICTURE|@translate_dec:'%d photo':'%d photos'}</p>
+		</div>
+		<div id="filter">
+			{if isset($U_START_FILTER)}
+			<a href="{$U_START_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'display only recently posted photos'|@translate}" rel="nofollow">
+				<span class="pwg-icon pwg-icon-filter"> </span>
+			</a>
+			{/if}
+			
+			{if isset($U_STOP_FILTER)}
+				<a href="{$U_STOP_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'return to the display of all photos'|@translate}">
+				<span class="pwg-icon pwg-icon-filter-del"> </span>
+				</a>
+			{/if}
+		</div>
+	</div>
+	<div class="mcol">
+	{assign var='ref_level' value=0}	
+	{foreach from=$block->data.MENU_CATEGORIES item=cat}
+		{if $cat.LEVEL > $ref_level}
+			<ul>
+		{else}
+			</li>
+			{'</ul></li>'|@str_repeat:($ref_level-$cat.LEVEL)}
+		{/if}
+			<li {if $cat.SELECTED}class="selected dontsplit"{/if}class="level{$cat.LEVEL} dontsplit">
+				<a href="{$cat.URL}" {if $cat.IS_UPPERCAT}rel="up"{/if} title="{$cat.TITLE}" >{$cat.NAME}</a>
+				{if $cat.count_images > 0}
+					<span class="{if $cat.nb_images > 0}menuInfoCat{else}menuInfoCatByChild{/if}" title="{$cat.TITLE}">[{$cat.count_images}]</span>
+				{/if}
 				
-				
-				{foreach from=$block->data.MENU_CATEGORIES item=cat}
-				{if $cat.LEVEL > $ref_level}
-				<ul class="mcol">
-				{else}
-
-						</li>
-							{'</ul></li>'|@str_repeat:$ref_level-$cat.LEVEL}
-						  {/if}
-						   <li {if $cat.SELECTED}class="selected"{/if}class="level{$cat.LEVEL}">
-						   <a href="{$cat.URL}" {if $cat.IS_UPPERCAT}rel="up"{/if} title="{$cat.TITLE}" >{$cat.NAME}   [{$cat.count_images}] </a>
-						  {assign var='ref_level' value=$cat.LEVEL}
-						{/foreach}
-					{'</li></ul>'|@str_repeat:$ref_level}	
-
-						{if isset($block->data.U_UPLOAD)}
-						
-					<ul>
-						
-							<li>
-								<a href="{$block->data.U_UPLOAD}">{'Upload a picture'|@translate}</a>
-							</li>
-
-					</ul>
-						
-					{/if}
-		
-
-		</div>
+				{if !empty($cat.icon_ts)}
+					<img title="{$cat.icon_ts.TITLE}" src="{$ROOT_URL}{$themeconf.icon_dir}/recent{if $cat.icon_ts.IS_CHILD_DATE}_by_child{/if}.png" class="icon" alt="(!)">
+				{/if}
+		{assign var='ref_level' value=$cat.LEVEL}
+	{/foreach}
+	{'</li></ul>'|@str_repeat:$ref_level}	
+	</div>
+</div>
Index: /extensions/Slim/template/notification.tpl
===================================================================
--- /extensions/Slim/template/notification.tpl	(revision 25996)
+++ /extensions/Slim/template/notification.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {html_head} 
 <link rel="alternate" type="application/rss+xml" title="{'Photos only RSS feed'|@translate}" href="{$U_FEED_IMAGE_ONLY}"> 
Index: /extensions/Slim/template/password.tpl
===================================================================
--- /extensions/Slim/template/password.tpl	(revision 25996)
+++ /extensions/Slim/template/password.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)==1}
 
Index: /extensions/Slim/template/picture.tpl
===================================================================
--- /extensions/Slim/template/picture.tpl	(revision 25996)
+++ /extensions/Slim/template/picture.tpl	(revision 25997)
@@ -69,9 +69,15 @@
 			<form method="post" action="{$comment_add.F_ACTION}" id="addComment">
 				{if $comment_add.SHOW_AUTHOR}
-					<p><label for="author">{'Author'|@translate} :</label></p>
+					<p><label for="author">{'Author'|@translate}{if $comment_add.AUTHOR_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
 					<p><input type="text" name="author" id="author" value="{$comment_add.AUTHOR}"></p>
-					<p><label for="contentid">{'Comment'|@translate} :</label></p>
 				{/if}
-				<p><textarea name="content" id="contentid" rows="8" cols="100">{$comment_add.CONTENT}</textarea></p>
+				{if $comment_add.SHOW_EMAIL}
+					<p><label for="email">{'Email'|@translate}{if $comment_add.EMAIL_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
+					<p><input type="text" name="email" id="email" value="{$comment_add.EMAIL}"></p>
+				{/if}
+				<p><label for="website_url">{'Website'|@translate} :</label></p>
+				<p><input type="text" name="website_url" id="website_url" value="{$comment_add.WEBSITE_URL}"></p>
+				<p><label for="contentid">{'Comment'|@translate} ({'mandatory'|@translate}) :</label></p>
+				<p><textarea name="content" id="contentid" rows="5" cols="100">{$comment_add.CONTENT}</textarea></p>
 				<p><input type="hidden" name="key" value="{$comment_add.KEY}">
 					<input type="submit" value="{'Submit'|@translate}"></p>
Index: /extensions/Slim/template/profile.tpl
===================================================================
--- /extensions/Slim/template/profile.tpl	(revision 25996)
+++ /extensions/Slim/template/profile.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)==1}
 {php}
Index: /extensions/Slim/template/register.tpl
===================================================================
--- /extensions/Slim/template/register.tpl	(revision 25996)
+++ /extensions/Slim/template/register.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)==1}
 {php}
Index: /extensions/Slim/template/search.tpl
===================================================================
--- /extensions/Slim/template/search.tpl	(revision 25996)
+++ /extensions/Slim/template/search.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)==1}
 {php}
Index: /extensions/Slim/template/tags.tpl
===================================================================
--- /extensions/Slim/template/tags.tpl	(revision 25996)
+++ /extensions/Slim/template/tags.tpl	(revision 25997)
@@ -1,4 +1,2 @@
-{php}	global $Slim;	$this->assign( 'Slim', $Slim );{/php}
-
 {if ($Slim.style_slim)==1}
 {php}
Index: /extensions/Slim/template/thumbnails.tpl
===================================================================
--- /extensions/Slim/template/thumbnails.tpl	(revision 25996)
+++ /extensions/Slim/template/thumbnails.tpl	(revision 25997)
@@ -4,48 +4,40 @@
     $template->assign('cat_name', $page['category']['name']);
 	
-	global $Slim;	$this->assign( 'Slim', $Slim );
 {/php}
 
 
-<div id="carouselthumb">
-<div id="wrap">
-<ul id="carousel" class="jcarousel-skin-cat">
-		{if !empty($category_thumbnails)}
-		
-		{foreach from=$category_thumbnails item=cat}
-
-
-			<li>
+<div id="carousel">
+	<div id="wrap">
+		<div class="jcarousel">
+			<ul>
+			{if !empty($category_thumbnails)}
+				{foreach from=$category_thumbnails item=cat}
+				<li>
 					<div class="illustration">
 						<a href="{$cat.URL}">
-							<img src="{$pwg->derivative_url($carousel, $cat.representative.src_image)}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}" min-width="{$carousel->max_width()}" height="{$carousel->max_height()}"/>
+							<img src="{$pwg->derivative_url($carousel, $cat.representative.src_image)}" alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}" min-width="{$carousel->max_width()}" height="{$carousel->max_height()-22}"/>
 						</a>
 					</div>
-					
-						
-						<div class="CatMPdescription">
-							<h3>
-								<a href="{$cat.URL}">{$cat.NAME}</a>
-							</h3>
-							<div>
+					<div class="CatMPdescription">
+						<h3>
+							<a href="{$cat.URL}">{$cat.NAME}</a>
+						</h3>
+						<div>
 							{$cat.CAPTION_NB_IMAGES}
-							</div>	
-						</div>
-			</li>
-		{/foreach}{/if}
-
-
-	{foreach from=$thumbnails item=thumbnail}
-	{assign var=derivative value=$pwg->derivative($carousel, $thumbnail.src_image)}
-			<li>
-				<div class="iIllustration">
-					<a href="{if ($Slim.style_slim)!=3}{$thumbnail.path}" class="lytebox" rev="slide:true group:name showNavigation:true navType:1 slideInterval:6000"{else}{$thumbnail.URL}"{/if} title="{$thumbnail.NAME|strip_tags:false|replace:'\'':'&#39;'|replace:'"':'&quot;'}">
-					<img class="thumbnail" src="{$derivative->get_url()}" alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}" height="{$carousel->max_height()}"/>
-						
+						</div>	
+					</div>
+				</li>
+				{/foreach}
+			{/if}
+				{foreach from=$thumbnails item=thumbnail}
+				{assign var=derivative value=$pwg->derivative($carousel, $thumbnail.src_image)}
+				<li>
+					<div class="illustration">
+						<a href="{if ($Slim.style_slim)!=3}{$thumbnail.path}" class="lytebox" rev="slide:true group:name showNavigation:true navType:1 slideInterval:6000"{else}{$thumbnail.URL}"{/if} title="{$thumbnail.NAME|strip_tags:false|replace:'\'':'&#39;'|replace:'"':'&quot;'}">
+						<img class="thumbnail" src="{$derivative->get_url()}" alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}" height="{$carousel->max_height()-22}"/>
 						{if $SHOW_THUMBNAIL_CAPTION }
 							<div class="CatMPdescription">
 								<H3>
 									{$thumbnail.NAME}
-									
 									{if !empty($thumbnail.icon_ts)}
 										<img title="{$thumbnail.icon_ts.TITLE}" src="{$ROOT_URL}{$themeconf.icon_dir}/recent.png" alt="(!)">
@@ -53,47 +45,27 @@
 								</h3>
 								{if isset($thumbnail.NB_COMMENTS) or isset($thumbnail.NB_HITS)}
-								<div>
+									<div>
 									{if isset($thumbnail.NB_COMMENTS)}
 										<p class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
-										{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
+											{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
 										</p>
 									{/if}
 									{if isset($thumbnail.NB_HITS)}
 										<p class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits">
-										{$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
+											{$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
 										</p>
 									{/if}
-								</div>
+									</div>
 								{/if}
 							</div>
 						{/if}
-					</a>	
-				</div>	
-			</li>
-	{/foreach}
-</ul>
-{footer_script}{literal}
-function mycarousel_initCallback(carousel)
-{
-    // Pause autoscrolling if the user moves with the cursor over the clip.
-    carousel.clip.hover(function() {
-        carousel.stopAuto();
-    }, function() {
-        carousel.startAuto();
-    });
-};
-
-jQuery(document).ready(function() {
-    jQuery('#carousel').jcarousel({
-    	auto: 0,
-		wrap: 'circular',
-		scroll: 2,
-		initCallback: mycarousel_initCallback,
-		
-    });
-});
-
-{/literal}{/footer_script}
-
+						</a>	
+					</div>	
+				</li>
+				{/foreach}
+			</ul>
+		</div>
+	</div>
+	<a href="#" class="jcarousel-control-prev">&lsaquo;</a>
+    <a href="#" class="jcarousel-control-next">&rsaquo;</a>
 </div>
-</div>
Index: /extensions/Slim/theme.css
===================================================================
--- /extensions/Slim/theme.css	(revision 25996)
+++ /extensions/Slim/theme.css	(revision 25997)
@@ -1,3 +1,3 @@
-BODY{background:url("images/texture.png") #fff}
+BODY{background:url("images/texture.png")}
 BODY,H1,H3,INPUT.rateButtonSelected,H2,#menubar DT{color:#666}
 FIELDSET,INPUT,SELECT,TEXTAREA,.content .thumbnailCategory,.thumbnails .wrap2{background:#EFEFEF;border-radius:5px;border:1px solid #afafaf}
@@ -18,5 +18,6 @@
 .content H2{margin:3px 0 0}
 #infoBlock,#imageHeaderBar{background:rgba(239, 239, 239, 1);border-radius:3px;box-shadow:0 1px 1px rgba(0, 0, 0, 0.4) inset, 0 1px rgba(255, 255, 255, 0.4)}
-.switchBox{background:#5f5f5f}
+.switchBox{background:#5f5f5f; color:#fff}
+.switchBox a{color:#fff}
 #imageHeaderBar{width:auto;height:20px;margin:40px 50px 20px;padding:10px}
 #imageHeaderBar H2{background-image:none;border:none}
@@ -63,5 +64,5 @@
 #topnav{margin:0;padding:0 2px 0 0;list-style:none;height:30px;position:relative;z-index:999;display:inline-block}
 #topnav .liSub{float:left;position:relative;padding-right:2px}
-#topnav .sub, #topnav #loger{position:absolute;top:30px;margin-left:0;background:#FFF;padding:5px 8px 10px 5px;float:left;max-width:100em;min-width:200px;display:none;max-height:500px;overflow:auto;border-bottom-right-radius:10px;border-bottom-left-radius:10px;box-shadow:0px 0px 5px #5A5A5A;z-index:100}
+#topnav .sub, #topnav #loger{position:absolute;top:30px;margin-left:0;background:#eFeFeF;padding:5px 8px 10px 5px;float:left;max-width:100em;min-width:200px;max-height:500px;overflow:auto;border-bottom-right-radius:10px;border-bottom-left-radius:10px;border-left:1px solid rgba(0, 0, 0, 0.5);border-right:1px solid rgba(0, 0, 0, 0.5);border-bottom:1px solid rgba(0, 0, 0, 0.5);z-index:100}
 #topnav #loger{z-index:50}
 .sub{z-index:100;max-width:600px}
@@ -70,5 +71,5 @@
 .sub a:hover{color:#4c4c4c}
 ul#topnav .sub ul li,ul#topnav #loger ul li,ul#topnav .sub #menuTagCloud div{width:95%;color:#757575;background:none;font-size:10px;margin-bottom:2px;border:1px solid #CBCBCB;border-radius:10px}
-ul#topnav .sub ul li a,ul#topnav #loger ul li a{float:none;text-indent:0;height:auto;margin:0 8px;display:block;text-decoration:none;color:#757575;font-size:1.1em;text-shadow:none;text-transform:none;line-height:17px;padding:0 0 0 15px}
+ul#topnav .sub ul li a,ul#topnav #loger ul li a{float:none;text-indent:0;height:auto;margin:0 8px;display:inline;text-decoration:none;color:#757575;font-size:1.1em;text-shadow:none;text-transform:none;line-height:17px;padding:0 0 0 15px}
 ul#topnav .sub ul .level1 li,ul#topnav .sub ul .level1 li .selected{border:none;background:none}
 ul#topnav .sub ul li.selected a{background:url(images/menu/navlist_arrow_hover.png) no-repeat 0 4px;color:#4C4C4C;text-decoration:none;border:none}
@@ -158,26 +159,14 @@
 
 /*=========================================carousel======================================================*/
-<<<<<<< .mine
-=======
-/*#carousel{min-width:10000px}*/
->>>>>>> .r18905
-.jcarousel-item a:hover{border-bottom:none}
-.jcarousel-list li,.jcarousel-item{float:left;list-style:none}
-.jcarousel-container-horizontal .jcarousel-clip,.jcarousel-skin-cat .jcarousel-list li{position:relative}
-.jcarousel-skin-cat .jcarousel-list li{height:325px}
-.jcarousel-skin-cat .jcarousel-container{border:1px solid rgba(0,0,0,0.5);border-radius:8px;background:rgba(0,0,0,0.25);box-shadow:0 2px 6px rgba(0,0,0,0.5),inset 0 1px rgba(255,255,255,0.3),inset 0 2px rgba(255,255,255,0.2),inset 0 10px 20px rgba(255,255,255,0.25),inset 0 -15px 30px rgba(0,0,0,0.3)}
-.jcarousel-skin-cat{padding:40px}
-.jcarousel-container-horizontal{padding:30px 7px}
-.jcarousel-skin-cat .jcarousel-clip{max-height:323px;overflow:hidden}
-.jcarousel-skin-cat .jcarousel-item:hover,.jcarousel-skin-cat .jcarousel-item:focus{border-color:gray}
-.jcarousel-skin-cat .jcarousel-item-horizontal{margin-left:0;margin-right:7px;list-style:none}
-.jcarousel-skin-cat .jcarousel-direction-rtl .jcarousel-item-horizontal{margin-left:7px;margin-right:0}
-.jcarousel-skin-cat .jcarousel-next-horizontal{position:absolute;right:20px;width:32px;cursor:pointer;top:0;height:100%;background:url("images/next-horizontal.png") no-repeat 0 50%}
-.jcarousel-skin-cat .jcarousel-direction-rtl .jcarousel-next-horizontal{left:5px;right:auto;background:url("images/prev-horizontal.png")}
-.jcarousel-skin-cat .jcarousel-prev-horizontal{position:absolute;left:20px;width:32px;cursor:pointer;height:100%;background:url("images/prev-horizontal.png") no-repeat 0 50%;top:0}
-.jcarousel-skin-cat .jcarousel-direction-rtl .jcarousel-prev-horizontal{left:auto;right:5px;background:url("images/next-horizontal.png")}
-.jcarousel-skin-cat .jcarousel-next-horizontal:hover,.jcarousel-skin-cat .jcarousel-next-horizontal:focus,.jcarousel-skin-cat .jcarousel-prev-horizontal:hover,.jcarousel-skin-cat .jcarousel-prev-horizontal:focus{background-position:-32px 50%}
-.jcarousel-skin-cat .jcarousel-next-horizontal:active,.jcarousel-skin-cat .jcarousel-prev-horizontal:active{background-position:-64px 50%}
-.jcarousel-skin-cat .jcarousel-next-disabled-horizontal,.jcarousel-skin-cat .jcarousel-next-disabled-horizontal:hover,.jcarousel-skin-cat .jcarousel-next-disabled-horizontal:focus,.jcarousel-skin-cat .jcarousel-next-disabled-horizontal:active,.jcarousel-skin-cat .jcarousel-prev-disabled-horizontal,.jcarousel-skin-cat .jcarousel-prev-disabled-horizontal:hover,.jcarousel-skin-cat .jcarousel-prev-disabled-horizontal:focus,.jcarousel-skin-cat .jcarousel-prev-disabled-horizontal:active{cursor:default;background-position:-96px 0}
+#carousel{position:relative}
+.jcarousel{position:relative;overflow:hidden}
+.jcarousel ul{width:20000em;position:relative;list-style:none;margin:0;padding:0}
+.jcarousel li {float: left}
+#wrap{position:relative;margin:50px;padding:20px 20px 40px;border:1px solid rgba(0,0,0,0.5);border-radius:8px;background:rgba(0,0,0,0.25);box-shadow:0 2px 6px rgba(0,0,0,0.5),inset 0 1px rgba(255,255,255,0.3),inset 0 2px rgba(255,255,255,0.2),inset 0 10px 20px rgba(255,255,255,0.25),inset 0 -15px 30px rgba(0,0,0,0.3)}
+.jcarousel-control-prev,.jcarousel-control-next{position:absolute;top:160px;width:30px;height:30px;text-align:center;background:#4E443C;color:#fff;text-decoration:none;text-shadow:0 0 1px #000;font:24px/27px Arial, sans-serif;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;-webkit-box-shadow:0 0 2px #999;-moz-box-shadow:0 0 2px #999;box-shadow:0 0 2px #999}
+.jcarousel-control-prev{left:80px}
+.jcarousel-control-next{right:80px}
+.jcarousel-control-prev:hover span,.jcarousel-control-next:hover span{display:block}
+.jcarousel-control-prev.inactive,.jcarousel-control-next.inactive{opacity: .5;cursor:default}
 
 /*=========================================Lytebox======================================================*/
@@ -213,2 +202,4 @@
 /*==========================================plugin=====================================================*/
 #mbContact dd{padding:0!important}
+
+
Index: /extensions/Slim/themeconf.inc.php
===================================================================
--- /extensions/Slim/themeconf.inc.php	(revision 25996)
+++ /extensions/Slim/themeconf.inc.php	(revision 25997)
@@ -2,5 +2,5 @@
 /*
 Theme Name: Slim
-Version: auto
+Version: 1.3
 Description: Slim.
 Theme URI: http://piwigo.org/ext/extension_view.php?eid=643
@@ -32,10 +32,10 @@
 	function modify_nb_thumbnail_page()
 	{
-	global $user, $page;
+	global $user, $page, $conf;
 		$user['nb_image_page']=999;
 		$page['nb_image_page']=999;
+		$conf['nb_categories_page']=999;
 	}
 }
-
 add_event_handler('get_categories_menu_sql_where', 'mic_get_categories_menu_sql_where', EVENT_HANDLER_PRIORITY_NEUTRAL, 3 );
 if(!function_exists('mic_get_categories_menu_sql_where'))
@@ -48,17 +48,8 @@
 }
 
-if($user['theme']=='Slim'){
-add_event_handler('loc_end_page_header', 'load_Slim' );
-
+add_event_handler('init', 'load_Slim' );
 function load_Slim()
 {
-global $user, $page; 
-if($page['body_id']=='theAdminPage' )
-{}
-else{
-if($user['theme']=='Slim')
-		{include('Slim.php');}
-		
-	}
+	include('Slim.php');
 }
 
@@ -74,4 +65,3 @@
 }
 }
-}
 ?>
