diff --git a/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.jgz b/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.jgz
new file mode 100755
index 00000000000..54b9808f48f
Binary files /dev/null and b/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.jgz differ
diff --git a/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.js b/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.js
new file mode 100755
index 00000000000..a0cc56e051c
--- /dev/null
+++ b/htdocs/includes/jquery/js/jquery.layout-1.3.0.rc29.8.js
@@ -0,0 +1,4102 @@
+/**
+ * @preserve jquery.layout 1.3.0 - Release Candidate 29.8
+ * $Date$
+ * $Rev: 30298 $
+ *
+ * Copyright (c) 2010
+ * Fabrizio Balliano (http://www.fabrizioballiano.net)
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * Docs: http://layout.jquery-dev.net/documentation.html
+ * Tips: http://layout.jquery-dev.net/tips.html
+ * Help: http://groups.google.com/group/jquery-ui-layout
+ */
+
+// NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars
+
+;(function ($) {
+
+var $b = $.browser;
+
+/*
+ * GENERIC $.layout METHODS - used by all layouts
+ */
+$.layout = {
+
+ // can update code here if $.browser is phased out
+ browser: {
+ mozilla: $b.mozilla
+ , webkit: $b.webkit || $b.safari || false // webkit = jQ 1.4
+ , msie: $b.msie
+ , isIE6: $b.msie && $b.version == 6
+ , boxModel: false // page must load first, so will be updated set by _create
+ //, version: $b.version - not used
+ }
+
+ /*
+ * USER UTILITIES
+ */
+
+ // calculate and return the scrollbar width, as an integer
+, scrollbarWidth: function () { return window.scrollbarWidth || $.layout.getScrollbarSize('width'); }
+, scrollbarHeight: function () { return window.scrollbarHeight || $.layout.getScrollbarSize('height'); }
+, getScrollbarSize: function (dim) {
+ var $c = $('
').appendTo("body");
+ var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight };
+ $c.remove();
+ window.scrollbarWidth = d.width;
+ window.scrollbarHeight = d.height;
+ return dim.match(/^(width|height)$/i) ? d[dim] : d;
+ }
+
+
+ /**
+ * Returns hash container 'display' and 'visibility'
+ *
+ * @see $.swap() - swaps CSS, runs callback, resets CSS
+ */
+, showInvisibly: function ($E, force) {
+ if (!$E) return {};
+ if (!$E.jquery) $E = $($E);
+ var CSS = {
+ display: $E.css('display')
+ , visibility: $E.css('visibility')
+ };
+ if (force || CSS.display == "none") { // only if not *already hidden*
+ $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured
+ return CSS;
+ }
+ else return {};
+ }
+
+ /**
+ * Returns data for setting size of an element (container or a pane).
+ *
+ * @see _create(), onWindowResize() for container, plus others for pane
+ * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc
+ */
+, getElemDims: function ($E) {
+ var
+ d = {} // dimensions hash
+ , x = d.css = {} // CSS hash
+ , i = {} // TEMP insets
+ , b, p // TEMP border, padding
+ , off = $E.offset()
+ ;
+ d.offsetLeft = off.left;
+ d.offsetTop = off.top;
+
+ $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge
+ b = x["border" + e] = $.layout.borderWidth($E, e);
+ p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e);
+ i[e] = b + p; // total offset of content from outer side
+ d["inset"+ e] = p;
+ /* WRONG ???
+ // if BOX MODEL, then 'position' = PADDING (ignore borderWidth)
+ if ($E == $Container)
+ d["inset"+ e] = (browser.boxModel ? p : 0);
+ */
+ });
+
+ d.offsetWidth = $E.innerWidth();
+ d.offsetHeight = $E.innerHeight();
+ d.outerWidth = $E.outerWidth();
+ d.outerHeight = $E.outerHeight();
+ d.innerWidth = d.outerWidth - i.Left - i.Right;
+ d.innerHeight = d.outerHeight - i.Top - i.Bottom;
+
+ // TESTING
+ x.width = $E.width();
+ x.height = $E.height();
+
+ return d;
+ }
+
+, getElemCSS: function ($E, list) {
+ var
+ CSS = {}
+ , style = $E[0].style
+ , props = list.split(",")
+ , sides = "Top,Bottom,Left,Right".split(",")
+ , attrs = "Color,Style,Width".split(",")
+ , p, s, a, i, j, k
+ ;
+ for (i=0; i < props.length; i++) {
+ p = props[i];
+ if (p.match(/(border|padding|margin)$/))
+ for (j=0; j < 4; j++) {
+ s = sides[j];
+ if (p == "border")
+ for (k=0; k < 3; k++) {
+ a = attrs[k];
+ CSS[p+s+a] = style[p+s+a];
+ }
+ else
+ CSS[p+s] = style[p+s];
+ }
+ else
+ CSS[p] = style[p];
+ };
+ return CSS
+ }
+
+ /**
+ * Contains logic to check boxModel & browser, and return the correct width/height for the current browser/doctype
+ *
+ * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+ * @param {Array.