diff --git a/classes/lnApp/HTMLRender.php b/classes/lnApp/HTMLRender.php
index b624582..92d32ac 100644
--- a/classes/lnApp/HTMLRender.php
+++ b/classes/lnApp/HTMLRender.php
@@ -11,7 +11,7 @@
* @license http://dev.leenooks.net/license.html
*/
abstract class lnApp_HTMLRender {
- protected static $_unique_vals = array();
+ protected $_unique_vals = array();
protected $_x = 0;
abstract protected function render();
@@ -25,6 +25,16 @@ abstract class lnApp_HTMLRender {
if (! $args)
return static::$_data[$c][$name];
+ // Strip out unique values
+ if (in_array($name,$this->_unique_vals))
+ foreach ($args as $u)
+ foreach (static::$_data as $d)
+ if (isset($d[$name]) AND $d[$name] == $u) {
+ unset(static::$_data[$c]);
+
+ return $this;
+ }
+
static::$_data[$c][$name] = array_pop($args);
return $this;
@@ -44,13 +54,11 @@ abstract class lnApp_HTMLRender {
if (empty(static::$_data[$this->_x]))
$this->record();
- return $this->render();
try {
return $this->render();
- }
// Display the exception message
- catch (Exception $e) {
+ } catch (Exception $e) {
return $e->getMessage();
}
}
diff --git a/classes/lnApp/Script.php b/classes/lnApp/Script.php
index fba7f5e..2ae6a57 100644
--- a/classes/lnApp/Script.php
+++ b/classes/lnApp/Script.php
@@ -14,6 +14,7 @@ abstract class lnApp_Script extends HTMLRender {
protected static $_spacer = "\n";
protected static $_c = 0;
protected $_items = array('data','media','type');
+ protected $_unique_vals = array('data');
protected static $_required_keys = array('type','data');
diff --git a/classes/lnApp/Style.php b/classes/lnApp/Style.php
index 97803a3..df2dba3 100644
--- a/classes/lnApp/Style.php
+++ b/classes/lnApp/Style.php
@@ -14,6 +14,7 @@ abstract class lnApp_Style extends HTMLRender {
protected static $_spacer = "\n";
protected static $_c = 0;
protected $_items = array('data','media','type');
+ protected $_unique_vals = array('data');
protected static $_required_keys = array('type','data');
diff --git a/classes/lnApp/Table.php b/classes/lnApp/Table.php
index 4f57d4d..e1b7c5b 100644
--- a/classes/lnApp/Table.php
+++ b/classes/lnApp/Table.php
@@ -201,6 +201,9 @@ $(document).ready(function() {
widthFixed : true,
headerTemplate : "{content} {icon}", // Add icon for jui theme; new in v2.7!
widgets: [ "uitheme", "stickyHeaders", "filter" ],
+ widgetOptions : {
+ stickyHeaders_offset: ".navbar-fixed-top",
+ }
}).tablesorterPager({
// target the pager markup - see the HTML block below
@@ -232,6 +235,10 @@ $(document).ready(function() {
Style::factory()
->type('file')
->data('media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css');
+ // @todo The theme should be moved from here, but Controller_Media will need to know about admin requests for media/
+ Style::factory()
+ ->type('file')
+ ->data('media/theme/baseadmin/css/custom/tablesort.css');
}
if ($this->select) {
diff --git a/media/theme/baseadmin/css/custom/tablesort.css b/media/theme/baseadmin/css/custom/tablesort.css
new file mode 100644
index 0000000..6c03ecf
--- /dev/null
+++ b/media/theme/baseadmin/css/custom/tablesort.css
@@ -0,0 +1,3 @@
+.table-striped td {
+ padding-left: 10px;
+}
diff --git a/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css b/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css
index 83c8c3d..e77cd88 100644
--- a/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css
+++ b/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css
@@ -1,12 +1,16 @@
/* pager wrapper, div */
.tablesorter-pager {
- font-size: 14px;
+ padding: 5px;
+}
+/* pager wrapper, in thead/tfoot */
+td.tablesorter-pager {
+ background-color: #e6eeee;
+ margin: 0; /* needed for bootstrap .pager gets a 18px bottom margin */
}
-
/* pager navigation arrows */
-.tablesorter-pager [class^="icon-"] {
+.tablesorter-pager img {
vertical-align: middle;
- margin-right: 4px;
+ margin-right: 2px;
cursor: pointer;
}
@@ -22,8 +26,6 @@
.tablesorter-pager select {
margin: 0;
padding: 0;
- height: 25px;
- font-size: 12px;
}
/*** css used when "updateArrows" option is true ***/
@@ -37,4 +39,4 @@
opacity: 0.5;
filter: alpha(opacity=50);
cursor: default;
-}
+}
\ No newline at end of file
diff --git a/media/vendor/mottie-tablesorter/css/theme.bootstrap.css b/media/vendor/mottie-tablesorter/css/theme.bootstrap.css
index 1a02458..4c67f59 100644
--- a/media/vendor/mottie-tablesorter/css/theme.bootstrap.css
+++ b/media/vendor/mottie-tablesorter/css/theme.bootstrap.css
@@ -94,6 +94,7 @@ caption {
}
.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled {
background: #eee;
+ cursor: not-allowed;
}
.tablesorter-bootstrap .tablesorter-filter-row td {
background: #eee;
@@ -131,6 +132,8 @@ caption {
border: 0;
}
-.table-striped td {
- padding-left: 15px;
+/* ajax error row */
+.tablesorter .tablesorter-errorRow td {
+ cursor: pointer;
+ background-color: #e6bf99;
}
diff --git a/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js b/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js
index 730df63..747c898 100644
--- a/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js
+++ b/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js
@@ -1,5 +1,5 @@
/*!
-* TableSorter 2.9.1 min - Client-side table sorting with ease!
+* TableSorter 2.10.0 min - Client-side table sorting with ease!
* Copyright (c) 2007 Christian Bach
*/
-!function(f){f.extend({tablesorter:new function(){function d(c){"undefined"!==typeof console&&"undefined"!==typeof console.log?console.log(c):alert(c)}function w(c,b){d(c+" ("+((new Date).getTime()-b.getTime())+"ms)")}function r(c,b,a){if(!b)return"";var e=c.config,d=e.textExtraction,m="",m="simple"===d?e.supportsTextContent?b.textContent:f(b).text():"function"===typeof d?d(b,c,a):"object"===typeof d&&d.hasOwnProperty(a)?d[a](b,c,a):e.supportsTextContent?b.textContent:f(b).text();return f.trim(m)} function j(c){var b=c.config,a=b.$tbodies=b.$table.children("tbody:not(."+b.cssInfoBlock+")"),e,t,m,p,k,n,h="";if(0===a.length)return b.debug?d("*Empty table!* Not building a parser cache"):"";a=a[0].rows;if(a[0]){e=[];t=a[0].cells.length;for(m=0;m':"";x.$headers=f(c).find(x.selectorHeaders).each(function(c){u=f(this);v=x.headers[c];x.headerContent[c]=this.innerHTML;A=x.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,B);x.onRenderTemplate&&(z=x.onRenderTemplate.apply(u,[c,A]))&&"string"===typeof z&&(A=z);this.innerHTML='";x.onRenderHeader&&x.onRenderHeader.apply(u,[c]);this.column=a[this.parentNode.rowIndex+"-"+ this.cellIndex];var b=g.getData(u,v,"sortInitialOrder")||x.sortInitialOrder;this.order=/^d/i.test(b)||1===b?[1,0,2]:[0,1,2];this.count=-1;this.lockedOrder=!1;y=g.getData(u,v,"lockedOrder")||!1;"undefined"!==typeof y&&!1!==y&&(this.order=this.lockedOrder=/^d/i.test(y)||1===y?[1,1,1]:[0,0,0]);u.addClass(x.cssHeader);x.headerList[c]=this;u.parent().addClass(x.cssHeaderRow)});E(c);x.debug&&(w("Built headers:",D),d(x.$headers))}function A(c,b,a){var e=f(c);e.find(c.config.selectorRemove).remove();j(c); s(c);D(e,b,a)}function E(c){var b,a=c.config;a.$headers.each(function(c,d){b="false"===g.getData(d,a.headers[c],"sorter");d.sortDisabled=b;f(d)[b?"addClass":"removeClass"]("sorter-false")})}function y(c){var b,a,e,d=c.config,m=d.sortList,p=[d.cssAsc,d.cssDesc],k=f(c).find("tfoot tr").children().removeClass(p.join(" "));d.$headers.removeClass(p.join(" "));e=m.length;for(b=0;bn&&(l.sortList.push([h,n]),1n&&(l.sortList.push([h,n]),1 thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]};g.benchmark=w;g.construct=function(c){return this.each(function(){if(!this.tHead|| 0===this.tBodies.length||!0===this.hasInitialized)return this.config&&this.config.debug?d("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var b=f(this),a=this,e,t="",m=f.metadata;a.hasInitialized=!1;a.isProcessing=!0;a.config={};e=f.extend(!0,a.config,g.defaults,c);f.data(a,"tablesorter",e);e.debug&&f.data(a,"startoveralltimer",new Date);e.supportsTextContent="x"===f("x")[0].textContent;e.supportsDataObject=1.4<=parseFloat(f.fn.jquery);e.string= {max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(b.attr("class"))||(t=""!==e.theme?" tablesorter-"+e.theme:"");e.$table=b.addClass(e.tableClass+t);e.$tbodies=b.children("tbody:not(."+e.cssInfoBlock+")");z(a);if(a.config.widthFixed&&0===f(a).find("colgroup").length){var p=f(""),k=f(a).width();f(a.tBodies[0]).find("tr:first").children("td").each(function(){p.append(f("").css("width",parseInt(1E3*(f(this).width()/k),10)/10+"%"))});f(a).prepend(p)}j(a); e.delayInit||s(a);I(a);e.supportsDataObject&&"undefined"!==typeof b.data().sortlist?e.sortList=b.data().sortlist:m&&(b.metadata()&&b.metadata().sortlist)&&(e.sortList=b.metadata().sortlist);g.applyWidget(a,!0);0'),a=f.fn.detach?b.detach():b.remove();a=f(c).find("span.tablesorter-savemyplace");b.insertAfter(a);a.remove();c.isProcessing=!1};g.clearTableBody=function(c){f(c)[0].config.$tbodies.empty()};g.restoreHeaders=function(c){var b=c.config;b.$headers.each(function(a){f(this).find(".tablesorter-header-inner").length&&f(this).html(b.headerContent[a])})};g.destroy=function(c,b,a){c=f(c)[0];if(c.hasInitialized){g.refreshWidgets(c, !0,!0);var e=f(c),d=c.config,m=e.find("thead:first"),p=m.find("tr."+d.cssHeaderRow).removeClass(d.cssHeaderRow),k=e.find("tfoot:first > tr").children("th, td");m.find("tr").not(p).remove();e.removeData("tablesorter").unbind("sortReset update updateAll updateRows updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave sortBegin sortEnd ".split(" ").join(".tablesorter "));d.$headers.add(k).removeClass(d.cssHeader+" "+d.cssAsc+" "+d.cssDesc).removeAttr("data-column"); p.find(d.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter");g.restoreHeaders(c);!1!==b&&e.removeClass(d.tableClass+" tablesorter-"+d.theme);c.hasInitialized=!1;"function"===typeof a&&a(c)}};g.regex=[/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i];g.sortText=function(c,b,a,e){if(b===a)return 0;var d=c.config,m=d.string[d.empties[e]|| d.emptyTo],f=g.regex;if(""===b&&0!==m)return"boolean"===typeof m?m?-1:1:-m||-1;if(""===a&&0!==m)return"boolean"===typeof m?m?1:-1:m||1;if("function"===typeof d.textSorter)return d.textSorter(b,a,c,e);c=b.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");e=a.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");b=parseInt(b.match(f[2]),16)||1!==c.length&&b.match(f[1])&&Date.parse(b);if(a=parseInt(a.match(f[2]),16)||b&&a.match(f[1])&&Date.parse(a)||null){if(b< a)return-1;if(b>a)return 1}d=Math.max(c.length,e.length);for(b=0;bf)return 1}return 0};g.sortTextDesc=function(c,b,a,e){if(b===a)return 0;var d=c.config,f=d.string[d.empties[e]||d.emptyTo];return""===b&&0!==f?"boolean"===typeof f?f?-1:1:f||1:""===a&&0!==f?"boolean"===typeof f?f?1:-1:-f||-1:"function"===typeof d.textSorter? d.textSorter(a,b,c,e):g.sortText(c,a,b)};g.getTextValue=function(c,b,a){if(b){var e=c?c.length:0,d=b+a;for(b=0;bf.inArray(p[e].id,m)))j.debug&&d("Refeshing widgets: Removing "+p[e].id),p[e].hasOwnProperty("remove")&&p[e].remove(c,j,j.widgetOptions);!0!==a&&g.applyWidget(c,b)};g.getData=function(c,b,a){var d="";c=f(c);var g,m;if(!c.length)return"";g=f.metadata?c.metadata():!1;m=" "+(c.attr("class")||"");"undefined"!==typeof c.data(a)||"undefined"!==typeof c.data(a.toLowerCase())?d+=c.data(a)||c.data(a.toLowerCase()):g&&"undefined"!==typeof g[a]?d+=g[a]:b&&"undefined"!==typeof b[a]?d+=b[a]:" "!==m&&m.match(" "+ a+"-")&&(d=m.match(RegExp("\\s"+a+"-([\\w-]+)"))[1]||"");return f.trim(d)};g.formatFloat=function(c,b){if("string"!==typeof c||""===c)return c;var a;c=(b&&b.config?!1!==b.config.usNumberFormat:"undefined"!==typeof b?b:1)?c.replace(/,/g,""):c.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(c)&&(c=c.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(c);return isNaN(a)?f.trim(c):a};g.isDigit=function(c){return isNaN(c)?/^[\-+(]?\d+[)]?$/.test(c.toString().replace(/[,.'"\s]/g,"")):!0}}}); var j=f.tablesorter;f.fn.extend({tablesorter:j.construct});j.addParser({id:"text",is:function(){return!0},format:function(d,w){var r=w.config;d&&(d=f.trim(r.ignoreCase?d.toLocaleLowerCase():d),d=r.sortLocaleCompare?j.replaceAccents(d):d);return d},type:"text"});j.addParser({id:"digit",is:function(d){return j.isDigit(d)},format:function(d,f){return d?j.formatFloat(d.replace(/[^\w,. \-()]/g,""),f):d},type:"numeric"});j.addParser({id:"currency",is:function(d){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((d|| "").replace(/[,. ]/g,""))},format:function(d,f){return d?j.formatFloat(d.replace(/[^\w,. \-()]/g,""),f):d},type:"numeric"});j.addParser({id:"ipAddress",is:function(d){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(d)},format:function(d,f){var r,u=d?d.split("."):"",s="",v=u.length;for(r=0;r':"";x.$headers=f(d).find(x.selectorHeaders).each(function(d){v=f(this);w=x.headers[d];x.headerContent[d]=this.innerHTML;A=x.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,B);x.onRenderTemplate&&(z=x.onRenderTemplate.apply(v,[d,A]))&&"string"===typeof z&&(A=z);this.innerHTML='";x.onRenderHeader&&x.onRenderHeader.apply(v,[d]);this.column=b[this.parentNode.rowIndex+"-"+ this.cellIndex];var a=g.getData(v,w,"sortInitialOrder")||x.sortInitialOrder;this.order=/^d/i.test(a)||1===a?[1,0,2]:[0,1,2];this.count=-1;this.lockedOrder=!1;y=g.getData(v,w,"lockedOrder")||!1;"undefined"!==typeof y&&!1!==y&&(this.order=this.lockedOrder=/^d/i.test(y)||1===y?[1,1,1]:[0,0,0]);v.addClass(x.cssHeader);x.headerList[d]=this;v.parent().addClass(x.cssHeaderRow)});E(d);x.debug&&(t("Built headers:",D),c(x.$headers))}function A(d,a,b){var e=f(d);e.find(d.config.selectorRemove).remove();j(d); s(d);D(e,a,b)}function E(d){var a,b=d.config;b.$headers.each(function(d,c){a="false"===g.getData(c,b.headers[d],"sorter");c.sortDisabled=a;f(c)[a?"addClass":"removeClass"]("sorter-false")})}function y(d){var a,b,e,c=d.config,l=c.sortList,p=[c.cssAsc,c.cssDesc],k=f(d).find("tfoot tr").children().removeClass(p.join(" "));c.$headers.removeClass(p.join(" "));e=l.length;for(a=0;an&&(m.sortList.push([h,n]),1n&&(m.sortList.push([h,n]),1 thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]};g.benchmark=t;g.construct= function(d){return this.each(function(){if(!this.tHead||0===this.tBodies.length||!0===this.hasInitialized)return this.config&&this.config.debug?c("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var a=f(this),b=this,e,u="",l=f.metadata;b.hasInitialized=!1;b.isProcessing=!0;b.config={};e=f.extend(!0,b.config,g.defaults,d);f.data(b,"tablesorter",e);e.debug&&f.data(b,"startoveralltimer",new Date);e.supportsTextContent="x"===f("x")[0].textContent; e.supportsDataObject=1.4<=parseFloat(f.fn.jquery);e.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(a.attr("class"))||(u=""!==e.theme?" tablesorter-"+e.theme:"");e.$table=a.addClass(e.tableClass+u);e.$tbodies=a.children("tbody:not(."+e.cssInfoBlock+")");z(b);if(b.config.widthFixed&&0===f(b).find("colgroup").length){var p=f(""),k=f(b).width();f(b.tBodies[0]).find("tr:first").children("td").each(function(){p.append(f("").css("width", parseInt(1E3*(f(this).width()/k),10)/10+"%"))});f(b).prepend(p)}j(b);e.delayInit||s(b);I(b);e.supportsDataObject&&"undefined"!==typeof a.data().sortlist?e.sortList=a.data().sortlist:l&&(a.metadata()&&a.metadata().sortlist)&&(e.sortList=a.metadata().sortlist);g.applyWidget(b,!0);0'),b=f.fn.detach?a.detach():a.remove();b=f(d).find("span.tablesorter-savemyplace");a.insertAfter(b);b.remove();d.isProcessing=!1};g.clearTableBody=function(d){f(d)[0].config.$tbodies.empty()};g.restoreHeaders=function(d){var a=d.config;a.$headers.each(function(b){f(this).find(".tablesorter-header-inner").length&&f(this).html(a.headerContent[b])})};g.destroy= function(d,a,b){d=f(d)[0];if(d.hasInitialized){g.refreshWidgets(d,!0,!0);var e=f(d),c=d.config,l=e.find("thead:first"),p=l.find("tr."+c.cssHeaderRow).removeClass(c.cssHeaderRow),k=e.find("tfoot:first > tr").children("th, td");l.find("tr").not(p).remove();e.removeData("tablesorter").unbind("sortReset update updateAll updateRows updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave sortBegin sortEnd ".split(" ").join(".tablesorter "));c.$headers.add(k).removeClass(c.cssHeader+ " "+c.cssAsc+" "+c.cssDesc).removeAttr("data-column");p.find(c.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter");g.restoreHeaders(d);!1!==a&&e.removeClass(c.tableClass+" tablesorter-"+c.theme);d.hasInitialized=!1;"function"===typeof b&&b(d)}};g.regex=[/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i];g.sortText=function(d,a, b,e){if(a===b)return 0;var c=d.config,l=c.string[c.empties[e]||c.emptyTo],f=g.regex;if(""===a&&0!==l)return"boolean"===typeof l?l?-1:1:-l||-1;if(""===b&&0!==l)return"boolean"===typeof l?l?1:-1:l||1;if("function"===typeof c.textSorter)return c.textSorter(a,b,d,e);d=a.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");e=b.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");a=parseInt(a.match(f[2]),16)||1!==d.length&&a.match(f[1])&&Date.parse(a);if(b= parseInt(b.match(f[2]),16)||a&&b.match(f[1])&&Date.parse(b)||null){if(ab)return 1}c=Math.max(d.length,e.length);for(a=0;af)return 1}return 0};g.sortTextDesc=function(d,a,b,e){if(a===b)return 0;var c=d.config,f=c.string[c.empties[e]||c.emptyTo];return""===a&&0!==f?"boolean"===typeof f?f?-1:1: f||1:""===b&&0!==f?"boolean"===typeof f?f?1:-1:-f||-1:"function"===typeof c.textSorter?c.textSorter(b,a,d,e):g.sortText(d,b,a)};g.getTextValue=function(d,a,b){if(a){var c=d?d.length:0,g=a+b;for(a=0;af.inArray(p[e].id,l)))j.debug&&c("Refeshing widgets: Removing "+p[e].id),p[e].hasOwnProperty("remove")&&p[e].remove(d,j,j.widgetOptions);!0!==b&&g.applyWidget(d,a)};g.getData=function(d,a,b){var c="";d=f(d);var g,l;if(!d.length)return"";g=f.metadata?d.metadata():!1;l=" "+(d.attr("class")||"");"undefined"!==typeof d.data(b)||"undefined"!==typeof d.data(b.toLowerCase())?c+=d.data(b)||d.data(b.toLowerCase()): g&&"undefined"!==typeof g[b]?c+=g[b]:a&&"undefined"!==typeof a[b]?c+=a[b]:" "!==l&&l.match(" "+b+"-")&&(c=l.match(RegExp("\\s"+b+"-([\\w-]+)"))[1]||"");return f.trim(c)};g.formatFloat=function(c,a){if("string"!==typeof c||""===c)return c;var b;c=(a&&a.config?!1!==a.config.usNumberFormat:"undefined"!==typeof a?a:1)?c.replace(/,/g,""):c.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(c)&&(c=c.replace(/^\s*\(/,"-").replace(/\)/,""));b=parseFloat(c);return isNaN(b)?f.trim(c):b};g.isDigit= function(c){return isNaN(c)?/^[\-+(]?\d+[)]?$/.test(c.toString().replace(/[,.'"\s]/g,"")):!0}}});var j=f.tablesorter;f.fn.extend({tablesorter:j.construct});j.addParser({id:"text",is:function(){return!0},format:function(c,t){var r=t.config;c&&(c=f.trim(r.ignoreCase?c.toLocaleLowerCase():c),c=r.sortLocaleCompare?j.replaceAccents(c):c);return c},type:"text"});j.addParser({id:"digit",is:function(c){return j.isDigit(c)},format:function(c,t){var r=j.formatFloat((c||"").replace(/[^\w,. \-()]/g,""),t);return c&& "number"===typeof r?r:c?f.trim(c&&t.config.ignoreCase?c.toLocaleLowerCase():c):c},type:"numeric"});j.addParser({id:"currency",is:function(c){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((c||"").replace(/[,. ]/g,""))},format:function(c,t){var r=j.formatFloat((c||"").replace(/[^\w,. \-()]/g,""),t);return c&&"number"===typeof r?r:c?f.trim(c&&t.config.ignoreCase?c.toLocaleLowerCase():c):c},type:"numeric"});j.addParser({id:"ipAddress",is:function(c){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(c)}, format:function(c,f){var r,v=c?c.split("."):"",s="",w=v.length;for(r=0;ra.filteredRows,a.startRow=h?1:a.size*a.page+1,a.page=h?0:a.page,a.endRow=Math.min(a.filteredRows,a.totalRows,a.size*(a.page+1)),f=d(a.cssPageDisplay,a.container),c=a.output.replace(/\{(page|filteredRows|filteredPages|totalPages|startRow|endRow|totalRows)\}/gi,function(b){return{"{page}":a.page+1,"{filteredRows}":a.filteredRows,"{filteredPages}":a.filteredPages,"{totalPages}":a.totalPages, "{startRow}":a.startRow,"{endRow}":a.endRow,"{totalRows}":a.totalRows}[b]}),f[0]&&(f["INPUT"===f[0].tagName?"val":"html"](c),d(a.cssGoto,a.container).length))){h="";f=Math.min(a.totalPages,a.filteredPages);for(c=1;c<=f;c++)h+="";d(a.cssGoto,a.container).html(h).val(a.page+1)}v(a);a.initialized&&d(b).trigger("pagerComplete",a)},t=function(b,a){var c,f=d(b.tBodies[0]);if(a.fixedHeight&&(f.find("tr.pagerSavedHeightSpacer").remove(),c=d.data(b,"pagerSavedHeight")))c-=f.height(), 5