diff --git a/lib/autoload.inc b/lib/autoload.inc
index 7064947..4c4865a 100644
--- a/lib/autoload.inc
+++ b/lib/autoload.inc
@@ -3,7 +3,6 @@
require_once dirname(__FILE__).'/system/autoload.inc';
require_once dirname(__FILE__).'/markdown/autoload.inc';
require_once dirname(__FILE__).'/jquery/autoload.inc';
-require_once dirname(__FILE__).'/tablesort/autoload.inc';
require_once dirname(__FILE__).'/tablesorter/autoload.inc';
require_once dirname(__FILE__).'/bootstrap/autoload.inc';
require_once dirname(__FILE__).'/tinymce/autoload.inc';
diff --git a/lib/lib_css.php b/lib/lib_css.php
index 0510822..356edd9 100644
--- a/lib/lib_css.php
+++ b/lib/lib_css.php
@@ -1,5 +1,5 @@
0) {
- if (el.tHead && el.tHead.rows.length > 0) {
- firstRow = el.tHead.rows[el.tHead.rows.length - 1];
- that.thead = true;
- } else {
- firstRow = el.rows[0];
- }
- }
-
- if (!firstRow) return;
-
- var onClick = function() {
- if (that.current && that.current !== this) {
- that.current.classList.remove('sort-up');
- that.current.classList.remove('sort-down');
- }
-
- that.current = this;
- that.sortTable(this);
- };
-
- // Assume first row is the header and attach a click handler to each.
- for (i = 0; i < firstRow.cells.length; i++) {
- cell = firstRow.cells[i];
- if (!cell.classList.contains('no-sort')) {
- cell.classList.add('sort-header');
- cell.tabindex = 0;
- cell.addEventListener('click', onClick, false);
-
- if (cell.classList.contains('sort-default')) {
- defaultSort = cell;
- }
- }
- }
-
- if (defaultSort) {
- that.current = defaultSort;
- that.sortTable(defaultSort);
- }
- },
-
- sortTable: function(header, update) {
- var that = this,
- column = header.cellIndex,
- sortFunction = caseInsensitiveSort,
- item = '',
- items = [],
- i = that.thead ? 0 : 1,
- sortMethod = header.getAttribute('data-sort-method');
-
- that.table.dispatchEvent(createEvent('beforeSort'));
-
- if (that.table.rows.length < 2) return;
-
- // If we force a sort method, it is not necessary to check rows
- if (!sortMethod) {
- while (items.length < 3 && i < that.table.tBodies[0].rows.length) {
- item = getInnerText(that.table.tBodies[0].rows[i].cells[column]);
- item = item.trim();
-
- if (item.length > 0) {
- items.push(item);
- }
-
- i++;
- }
-
- if (!items) return;
- }
-
- for (i = 0; i < sortOptions.length; i++) {
- item = sortOptions[i];
-
- if (sortMethod) {
- if (item.name === sortMethod) {
- sortFunction = item.sort;
- break;
- }
- } else if (items.every(item.pattern)) {
- sortFunction = item.sort;
- break;
- }
- }
-
- that.col = column;
- var newRows = [],
- noSorts = {},
- j,
- totalRows = 0,
- noSortsSoFar = 0,
- sortDir;
-
- for (i = 0; i < that.table.tBodies.length; i++) {
- for (j = 0; j < that.table.tBodies[i].rows.length; j++) {
- item = that.table.tBodies[i].rows[j];
- if (item.classList.contains('no-sort')) {
- // keep no-sorts in separate list to be able to insert
- // them back at their original position later
- noSorts[totalRows] = item;
- } else {
- // Save the index for stable sorting
- newRows.push({
- tr: item,
- td: getInnerText(item.cells[that.col]),
- index: totalRows
- });
- }
- totalRows++;
- }
- }
-
- // If updating an existing sort `sortDir` should remain unchanged.
- if (update) {
- sortDir = header.classList.contains('sort-up') ? 'sort-up' : 'sort-down';
- } else {
- if (header.classList.contains('sort-up')) {
- sortDir = 'sort-down';
- } else if (header.classList.contains('sort-down')) {
- sortDir = 'sort-up';
- } else {
- sortDir = that.options.descending ? 'sort-up' : 'sort-down';
- }
-
- header.classList.remove(sortDir === 'sort-down' ? 'sort-up' : 'sort-down');
- header.classList.add(sortDir);
- }
-
- // Before we append should we reverse the new array or not?
- // If we reverse, the sort needs to be `anti-stable` so that
- // the double negatives cancel out
- if (sortDir === 'sort-down') {
- newRows.sort(stabilize(sortFunction, true));
- newRows.reverse();
- } else {
- newRows.sort(stabilize(sortFunction, false));
- }
-
- // append rows that already exist rather than creating new ones
- for (i = 0; i < totalRows; i++) {
- if (noSorts[i]) {
- // We have a no-sort row for this position, insert it here.
- item = noSorts[i];
- noSortsSoFar++;
- } else {
- item = newRows[i - noSortsSoFar].tr;
- }
-
- // appendChild(x) moves x if already present somewhere else in the DOM
- that.table.tBodies[0].appendChild(item);
- }
-
- that.table.dispatchEvent(createEvent('afterSort'));
- },
-
- refresh: function() {
- if (this.current !== undefined) {
- this.sortTable(this.current, true);
- }
- }
- };
-
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = Tablesort;
- } else {
- window.Tablesort = Tablesort;
- }
-})();
\ No newline at end of file
diff --git a/lib/tablesort/lib/tablesort.numeric.js b/lib/tablesort/lib/tablesort.numeric.js
deleted file mode 100644
index fe6224f..0000000
--- a/lib/tablesort/lib/tablesort.numeric.js
+++ /dev/null
@@ -1,26 +0,0 @@
-(function(){
- var cleanNumber = function(i) {
- return i.replace(/[^\-?0-9.]/g, '');
- },
-
- compareNumber = function(a, b) {
- a = parseFloat(a);
- b = parseFloat(b);
-
- a = isNaN(a) ? 0 : a;
- b = isNaN(b) ? 0 : b;
-
- return a - b;
- };
-
- Tablesort.extend('number', function(item) {
- return item.match(/^-?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/) || // Prefixed currency
- item.match(/^-?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/) || // Suffixed currency
- item.match(/^-?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/); // Number
- }, function(a, b) {
- a = cleanNumber(a);
- b = cleanNumber(b);
-
- return compareNumber(b, a);
- });
-}());
\ No newline at end of file
diff --git a/lib/tablesort/lib_tablesort.php b/lib/tablesort/lib_tablesort.php
deleted file mode 100644
index 8094451..0000000
--- a/lib/tablesort/lib_tablesort.php
+++ /dev/null
@@ -1,10 +0,0 @@
-https://github.com/tristen/tablesort (commit: 941a656c3e)';}
-}
\ No newline at end of file
diff --git a/lib/tablesort/lib_tablesort_date.php b/lib/tablesort/lib_tablesort_date.php
deleted file mode 100644
index d36c2d9..0000000
--- a/lib/tablesort/lib_tablesort_date.php
+++ /dev/null
@@ -1,10 +0,0 @@
-https://github.com/tristen/tablesort (commit: 941a656c3e)';}
-}
\ No newline at end of file
diff --git a/lib/tablesort/lib_tablesort_numeric.php b/lib/tablesort/lib_tablesort_numeric.php
deleted file mode 100644
index 8c804b0..0000000
--- a/lib/tablesort/lib_tablesort_numeric.php
+++ /dev/null
@@ -1,10 +0,0 @@
-https://github.com/tristen/tablesort (commit: 941a656c3e)';}
-}
\ No newline at end of file
diff --git a/lib/tablesorter b/lib/tablesorter
index 5c11af9..4765518 160000
--- a/lib/tablesorter
+++ b/lib/tablesorter
@@ -1 +1 @@
-Subproject commit 5c11af9dcf4d5790825be763e722023d7ab62f01
+Subproject commit 4765518860d3f7f25617bc73db12ed56a7f1fdae
diff --git a/sai/page/default_page.php b/sai/page/default_page.php
index 0fb243e..a5d9f65 100644
--- a/sai/page/default_page.php
+++ b/sai/page/default_page.php
@@ -33,7 +33,7 @@ class default_page extends \SYSTEM\PAGE\Page {
private static function css(){
$result = ''.
''.
- ''.
+ ''.
''.
'';
return $result;