diff --git a/js/tablesorter/.settings/org.eclipse.core.resources.prefs b/js/tablesorter/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..c836854
--- /dev/null
+++ b/js/tablesorter/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Mon Mar 17 22:31:28 CET 2008
+eclipse.preferences.version=1
+encoding/jquery.tablesorter.js=UTF-8
diff --git a/js/tablesorter/addons/pager/icons/first.png b/js/tablesorter/addons/pager/icons/first.png
new file mode 100644
index 0000000..6f11fcb
Binary files /dev/null and b/js/tablesorter/addons/pager/icons/first.png differ
diff --git a/js/tablesorter/addons/pager/icons/last.png b/js/tablesorter/addons/pager/icons/last.png
new file mode 100644
index 0000000..7207935
Binary files /dev/null and b/js/tablesorter/addons/pager/icons/last.png differ
diff --git a/js/tablesorter/addons/pager/icons/next.png b/js/tablesorter/addons/pager/icons/next.png
new file mode 100644
index 0000000..4a2f9d4
Binary files /dev/null and b/js/tablesorter/addons/pager/icons/next.png differ
diff --git a/js/tablesorter/addons/pager/icons/prev.png b/js/tablesorter/addons/pager/icons/prev.png
new file mode 100644
index 0000000..15d1584
Binary files /dev/null and b/js/tablesorter/addons/pager/icons/prev.png differ
diff --git a/js/tablesorter/addons/pager/jquery.tablesorter.pager.css b/js/tablesorter/addons/pager/jquery.tablesorter.pager.css
new file mode 100644
index 0000000..8c8e9fc
--- /dev/null
+++ b/js/tablesorter/addons/pager/jquery.tablesorter.pager.css
@@ -0,0 +1,25 @@
+div.tablesorterPager {
+ padding: 10px 0 10px 0;
+ background-color: #D6D2C2;
+ text-align: center;
+}
+div.tablesorterPager span {
+ padding: 0 5px 0 5px;
+}
+div.tablesorterPager input.prev {
+ width: auto;
+ margin-right: 10px;
+}
+div.tablesorterPager input.next {
+ width: auto;
+ margin-left: 10px;
+}
+div.tablesorterPager input {
+ font-size: 8px;
+ width: 50px;
+ border: 1px solid #330000;
+ text-align: center;
+}
+
+
+
\ No newline at end of file
diff --git a/js/tablesorter/addons/pager/jquery.tablesorter.pager.js b/js/tablesorter/addons/pager/jquery.tablesorter.pager.js
new file mode 100644
index 0000000..cce6ea2
--- /dev/null
+++ b/js/tablesorter/addons/pager/jquery.tablesorter.pager.js
@@ -0,0 +1,184 @@
+(function($) {
+ $.extend({
+ tablesorterPager: new function() {
+
+ function updatePageDisplay(c) {
+ var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages);
+ }
+
+ function setPageSize(table,size) {
+ var c = table.config;
+ c.size = size;
+ c.totalPages = Math.ceil(c.totalRows / c.size);
+ c.pagerPositionSet = false;
+ moveToPage(table);
+ fixPosition(table);
+ }
+
+ function fixPosition(table) {
+ var c = table.config;
+ if(!c.pagerPositionSet && c.positionFixed) {
+ var c = table.config, o = $(table);
+ if(o.offset) {
+ c.container.css({
+ top: o.offset().top + o.height() + 'px',
+ position: 'absolute'
+ });
+ }
+ c.pagerPositionSet = true;
+ }
+ }
+
+ function moveToFirstPage(table) {
+ var c = table.config;
+ c.page = 0;
+ moveToPage(table);
+ }
+
+ function moveToLastPage(table) {
+ var c = table.config;
+ c.page = (c.totalPages-1);
+ moveToPage(table);
+ }
+
+ function moveToNextPage(table) {
+ var c = table.config;
+ c.page++;
+ if(c.page >= (c.totalPages-1)) {
+ c.page = (c.totalPages-1);
+ }
+ moveToPage(table);
+ }
+
+ function moveToPrevPage(table) {
+ var c = table.config;
+ c.page--;
+ if(c.page <= 0) {
+ c.page = 0;
+ }
+ moveToPage(table);
+ }
+
+
+ function moveToPage(table) {
+ var c = table.config;
+ if(c.page < 0 || c.page > (c.totalPages-1)) {
+ c.page = 0;
+ }
+
+ renderTable(table,c.rowsCopy);
+ }
+
+ function renderTable(table,rows) {
+
+ var c = table.config;
+ var l = rows.length;
+ var s = (c.page * c.size);
+ var e = (s + c.size);
+ if(e > rows.length ) {
+ e = rows.length;
+ }
+
+
+ var tableBody = $(table.tBodies[0]);
+
+ // clear the table body
+
+ $.tablesorter.clearTableBody(table);
+
+ for(var i = s; i < e; i++) {
+
+ //tableBody.append(rows[i]);
+
+ var o = rows[i];
+ var l = o.length;
+ for(var j=0; j < l; j++) {
+
+ tableBody[0].appendChild(o[j]);
+
+ }
+ }
+
+ fixPosition(table,tableBody);
+
+ $(table).trigger("applyWidgets");
+
+ if( c.page >= c.totalPages ) {
+ moveToLastPage(table);
+ }
+
+ updatePageDisplay(c);
+ }
+
+ this.appender = function(table,rows) {
+
+ var c = table.config;
+
+ c.rowsCopy = rows;
+ c.totalRows = rows.length;
+ c.totalPages = Math.ceil(c.totalRows / c.size);
+
+ renderTable(table,rows);
+ };
+
+ this.defaults = {
+ size: 10,
+ offset: 0,
+ page: 0,
+ totalRows: 0,
+ totalPages: 0,
+ container: null,
+ cssNext: '.next',
+ cssPrev: '.prev',
+ cssFirst: '.first',
+ cssLast: '.last',
+ cssPageDisplay: '.pagedisplay',
+ cssPageSize: '.pagesize',
+ seperator: "/",
+ positionFixed: true,
+ appender: this.appender
+ };
+
+ this.construct = function(settings) {
+
+ return this.each(function() {
+
+ config = $.extend(this.config, $.tablesorterPager.defaults, settings);
+
+ var table = this, pager = config.container;
+
+ $(this).trigger("appendCache");
+
+ config.size = parseInt($(".pagesize",pager).val());
+
+ $(config.cssFirst,pager).click(function() {
+ moveToFirstPage(table);
+ return false;
+ });
+ $(config.cssNext,pager).click(function() {
+ moveToNextPage(table);
+ return false;
+ });
+ $(config.cssPrev,pager).click(function() {
+ moveToPrevPage(table);
+ return false;
+ });
+ $(config.cssLast,pager).click(function() {
+ moveToLastPage(table);
+ return false;
+ });
+ $(config.cssPageSize,pager).change(function() {
+ setPageSize(table,parseInt($(this).val()));
+ return false;
+ });
+ });
+ };
+
+ }
+ });
+ // extend plugin scope
+ $.fn.extend({
+ tablesorterPager: $.tablesorterPager.construct
+ });
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/tablesorter/build.xml b/js/tablesorter/build.xml
new file mode 100644
index 0000000..06545bb
--- /dev/null
+++ b/js/tablesorter/build.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/build/ParseMaster.js b/js/tablesorter/build/ParseMaster.js
new file mode 100644
index 0000000..915a8b5
--- /dev/null
+++ b/js/tablesorter/build/ParseMaster.js
@@ -0,0 +1,106 @@
+/*
+ ParseMaster, version 1.0.2 (2005-08-19)
+ Copyright 2005, Dean Edwards
+ License: http://creativecommons.org/licenses/LGPL/2.1/
+*/
+
+/* a multi-pattern parser */
+
+// KNOWN BUG: erroneous behavior when using escapeChar with a replacement value that is a function
+
+function ParseMaster() {
+ // constants
+ var $EXPRESSION = 0, $REPLACEMENT = 1, $LENGTH = 2;
+ // used to determine nesting levels
+ var $GROUPS = /\(/g, $SUB_REPLACE = /\$\d/, $INDEXED = /^\$\d+$/,
+ $TRIM = /(['"])\1\+(.*)\+\1\1$/, $$ESCAPE = /\\./g, $QUOTE = /'/,
+ $$DELETED = /\x01[^\x01]*\x01/g;
+ var self = this;
+ // public
+ this.add = function($expression, $replacement) {
+ if (!$replacement) $replacement = "";
+ // count the number of sub-expressions
+ // - add one because each pattern is itself a sub-expression
+ var $length = (_internalEscape(String($expression)).match($GROUPS) || "").length + 1;
+ // does the pattern deal with sub-expressions?
+ if ($SUB_REPLACE.test($replacement)) {
+ // a simple lookup? (e.g. "$2")
+ if ($INDEXED.test($replacement)) {
+ // store the index (used for fast retrieval of matched strings)
+ $replacement = parseInt($replacement.slice(1)) - 1;
+ } else { // a complicated lookup (e.g. "Hello $2 $1")
+ // build a function to do the lookup
+ var i = $length;
+ var $quote = $QUOTE.test(_internalEscape($replacement)) ? '"' : "'";
+ while (i) $replacement = $replacement.split("$" + i--).join($quote + "+a[o+" + i + "]+" + $quote);
+ $replacement = new Function("a,o", "return" + $quote + $replacement.replace($TRIM, "$1") + $quote);
+ }
+ }
+ // pass the modified arguments
+ _add($expression || "/^$/", $replacement, $length);
+ };
+ // execute the global replacement
+ this.exec = function($string) {
+ _escaped.length = 0;
+ return _unescape(_escape($string, this.escapeChar).replace(
+ new RegExp(_patterns, this.ignoreCase ? "gi" : "g"), _replacement), this.escapeChar).replace($$DELETED, "");
+ };
+ // clear the patterns collection so that this object may be re-used
+ this.reset = function() {
+ _patterns.length = 0;
+ };
+
+ // private
+ var _escaped = []; // escaped characters
+ var _patterns = []; // patterns stored by index
+ var _toString = function(){return "(" + String(this[$EXPRESSION]).slice(1, -1) + ")"};
+ _patterns.toString = function(){return this.join("|")};
+ // create and add a new pattern to the patterns collection
+ function _add() {
+ arguments.toString = _toString;
+ // store the pattern - as an arguments object (i think this is quicker..?)
+ _patterns[_patterns.length] = arguments;
+ }
+ // this is the global replace function (it's quite complicated)
+ function _replacement() {
+ if (!arguments[0]) return "";
+ var i = 1, j = 0, $pattern;
+ // loop through the patterns
+ while ($pattern = _patterns[j++]) {
+ // do we have a result?
+ if (arguments[i]) {
+ var $replacement = $pattern[$REPLACEMENT];
+ switch (typeof $replacement) {
+ case "function": return $replacement(arguments, i);
+ case "number": return arguments[$replacement + i];
+ }
+ var $delete = (arguments[i].indexOf(self.escapeChar) == -1) ? "" :
+ "\x01" + arguments[i] + "\x01";
+ return $delete + $replacement;
+ // skip over references to sub-expressions
+ } else i += $pattern[$LENGTH];
+ }
+ };
+ // encode escaped characters
+ function _escape($string, $escapeChar) {
+ return $escapeChar ? $string.replace(new RegExp("\\" + $escapeChar + "(.)", "g"), function($match, $char) {
+ _escaped[_escaped.length] = $char;
+ return $escapeChar;
+ }) : $string;
+ };
+ // decode escaped characters
+ function _unescape($string, $escapeChar) {
+ var i = 0;
+ return $escapeChar ? $string.replace(new RegExp("\\" + $escapeChar, "g"), function() {
+ return $escapeChar + (_escaped[i++] || "");
+ }) : $string;
+ };
+ function _internalEscape($string) {
+ return $string.replace($$ESCAPE, "");
+ };
+};
+ParseMaster.prototype = {
+ constructor: ParseMaster,
+ ignoreCase: false,
+ escapeChar: ""
+};
diff --git a/js/tablesorter/build/js.jar b/js/tablesorter/build/js.jar
new file mode 100644
index 0000000..194e592
Binary files /dev/null and b/js/tablesorter/build/js.jar differ
diff --git a/js/tablesorter/build/jsmin.js b/js/tablesorter/build/jsmin.js
new file mode 100644
index 0000000..1ef29cf
--- /dev/null
+++ b/js/tablesorter/build/jsmin.js
@@ -0,0 +1,316 @@
+/* jsmin.js - 2006-08-31
+Author: Franck Marcia
+This work is an adaptation of jsminc.c published by Douglas Crockford.
+Permission is hereby granted to use the Javascript version under the same
+conditions as the jsmin.c on which it is based.
+
+jsmin.c
+2006-05-04
+
+Copyright (c) 2002 Douglas Crockford (www.crockford.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Update:
+ add level:
+ 1: minimal, keep linefeeds if single
+ 2: normal, the standard algorithm
+ 3: agressive, remove any linefeed and doesn't take care of potential
+ missing semicolons (can be regressive)
+ store stats
+ jsmin.oldSize
+ jsmin.newSize
+*/
+
+String.prototype.has = function(c) {
+ return this.indexOf(c) > -1;
+};
+
+function jsmin(comment, input, level) {
+
+ if (input === undefined) {
+ input = comment;
+ comment = '';
+ level = 2;
+ } else if (level === undefined || level < 1 || level > 3) {
+ level = 2;
+ }
+
+ if (comment.length > 0) {
+ comment += '\n';
+ }
+
+ var a = '',
+ b = '',
+ EOF = -1,
+ LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
+ DIGITS = '0123456789',
+ ALNUM = LETTERS + DIGITS + '_$\\',
+ theLookahead = EOF;
+
+
+ /* isAlphanum -- return true if the character is a letter, digit, underscore,
+ dollar sign, or non-ASCII character.
+ */
+
+ function isAlphanum(c) {
+ return c != EOF && (ALNUM.has(c) || c.charCodeAt(0) > 126);
+ }
+
+
+ /* get -- return the next character. Watch out for lookahead. If the
+ character is a control character, translate it to a space or
+ linefeed.
+ */
+
+ function get() {
+
+ var c = theLookahead;
+ if (get.i == get.l) {
+ return EOF;
+ }
+ theLookahead = EOF;
+ if (c == EOF) {
+ c = input.charAt(get.i);
+ ++get.i;
+ }
+ if (c >= ' ' || c == '\n') {
+ return c;
+ }
+ if (c == '\r') {
+ return '\n';
+ }
+ return ' ';
+ }
+
+ get.i = 0;
+ get.l = input.length;
+
+
+ /* peek -- get the next character without getting it.
+ */
+
+ function peek() {
+ theLookahead = get();
+ return theLookahead;
+ }
+
+
+ /* next -- get the next character, excluding comments. peek() is used to see
+ if a '/' is followed by a '/' or '*'.
+ */
+
+ function next() {
+
+ var c = get();
+ if (c == '/') {
+ switch (peek()) {
+ case '/':
+ for (;;) {
+ c = get();
+ if (c <= '\n') {
+ return c;
+ }
+ }
+ break;
+ case '*':
+ get();
+ for (;;) {
+ switch (get()) {
+ case '*':
+ if (peek() == '/') {
+ get();
+ return ' ';
+ }
+ break;
+ case EOF:
+ throw 'Error: Unterminated comment.';
+ }
+ }
+ break;
+ default:
+ return c;
+ }
+ }
+ return c;
+ }
+
+
+ /* action -- do something! What you do is determined by the argument:
+ 1 Output A. Copy B to A. Get the next B.
+ 2 Copy B to A. Get the next B. (Delete A).
+ 3 Get the next B. (Delete B).
+ action treats a string as a single character. Wow!
+ action recognizes a regular expression if it is preceded by ( or , or =.
+ */
+
+ function action(d) {
+
+ var r = [];
+
+ if (d == 1) {
+ r.push(a);
+ }
+
+ if (d < 3) {
+ a = b;
+ if (a == '\'' || a == '"') {
+ for (;;) {
+ r.push(a);
+ a = get();
+ if (a == b) {
+ break;
+ }
+ if (a <= '\n') {
+ throw 'Error: unterminated string literal: ' + a;
+ }
+ if (a == '\\') {
+ r.push(a);
+ a = get();
+ }
+ }
+ }
+ }
+
+ b = next();
+
+ if (b == '/' && '(,=:[!&|'.has(a)) {
+ r.push(a);
+ r.push(b);
+ for (;;) {
+ a = get();
+ if (a == '/') {
+ break;
+ } else if (a =='\\') {
+ r.push(a);
+ a = get();
+ } else if (a <= '\n') {
+ throw 'Error: unterminated Regular Expression literal';
+ }
+ r.push(a);
+ }
+ b = next();
+ }
+
+ return r.join('');
+ }
+
+
+ /* m -- Copy the input to the output, deleting the characters which are
+ insignificant to JavaScript. Comments will be removed. Tabs will be
+ replaced with spaces. Carriage returns will be replaced with
+ linefeeds.
+ Most spaces and linefeeds will be removed.
+ */
+
+ function m() {
+
+ var r = [];
+ a = '\n';
+
+ r.push(action(3));
+
+ while (a != EOF) {
+ switch (a) {
+ case ' ':
+ if (isAlphanum(b)) {
+ r.push(action(1));
+ } else {
+ r.push(action(2));
+ }
+ break;
+ case '\n':
+ switch (b) {
+ case '{':
+ case '[':
+ case '(':
+ case '+':
+ case '-':
+ r.push(action(1));
+ break;
+ case ' ':
+ r.push(action(3));
+ break;
+ default:
+ if (isAlphanum(b)) {
+ r.push(action(1));
+ } else {
+ if (level == 1 && b != '\n') {
+ r.push(action(1));
+ } else {
+ r.push(action(2));
+ }
+ }
+ }
+ break;
+ default:
+ switch (b) {
+ case ' ':
+ if (isAlphanum(a)) {
+ r.push(action(1));
+ break;
+ }
+ r.push(action(3));
+ break;
+ case '\n':
+ if (level == 1 && a != '\n') {
+ r.push(action(1));
+ } else {
+ switch (a) {
+ case '}':
+ case ']':
+ case ')':
+ case '+':
+ case '-':
+ case '"':
+ case '\'':
+ if (level == 3) {
+ r.push(action(3));
+ } else {
+ r.push(action(1));
+ }
+ break;
+ default:
+ if (isAlphanum(a)) {
+ r.push(action(1));
+ } else {
+ r.push(action(3));
+ }
+ }
+ }
+ break;
+ default:
+ r.push(action(1));
+ break;
+ }
+ }
+ }
+
+ return r.join('');
+ }
+
+ jsmin.oldSize = input.length;
+ ret = m(input);
+ jsmin.newSize = ret.length;
+
+ return comment + ret;
+
+}
diff --git a/js/tablesorter/build/min.js b/js/tablesorter/build/min.js
new file mode 100644
index 0000000..da11096
--- /dev/null
+++ b/js/tablesorter/build/min.js
@@ -0,0 +1,5 @@
+load("build/jsmin.js", "build/writeFile.js");
+
+var f = jsmin('', readFile(arguments[0]), 3);
+
+writeFile( arguments[1], f );
diff --git a/js/tablesorter/build/pack.js b/js/tablesorter/build/pack.js
new file mode 100644
index 0000000..1355703
--- /dev/null
+++ b/js/tablesorter/build/pack.js
@@ -0,0 +1,5 @@
+load("build/ParseMaster.js", "build/packer.js", "build/writeFile.js");
+
+var out = readFile( arguments[0] );
+
+writeFile( arguments[1], pack( out, 62, true, false ) );
diff --git a/js/tablesorter/build/packer.js b/js/tablesorter/build/packer.js
new file mode 100644
index 0000000..56bfdd1
--- /dev/null
+++ b/js/tablesorter/build/packer.js
@@ -0,0 +1,316 @@
+/*
+ packer, version 2.0.2 (2005-08-19)
+ Copyright 2004-2005, Dean Edwards
+ License: http://creativecommons.org/licenses/LGPL/2.1/
+*/
+
+function pack(_script, _encoding, _fastDecode, _specialChars) {
+ // constants
+ var $IGNORE = "$1";
+
+ // validate parameters
+ _script += "\n";
+ _encoding = Math.min(parseInt(_encoding), 95);
+
+ // apply all parsing routines
+ function _pack($script) {
+ var i, $parse;
+ for (i = 0; ($parse = _parsers[i]); i++) {
+ $script = $parse($script);
+ }
+ return $script;
+ };
+
+ // unpacking function - this is the boot strap function
+ // data extracted from this packing routine is passed to
+ // this function when decoded in the target
+ var _unpack = function($packed, $ascii, $count, $keywords, $encode, $decode) {
+ while ($count--)
+ if ($keywords[$count])
+ $packed = $packed.replace(new RegExp('\\b' + $encode($count) + '\\b', 'g'), $keywords[$count]);
+ return $packed;
+ };
+
+ // code-snippet inserted into the unpacker to speed up decoding
+ var _decode = function() {
+ // does the browser support String.replace where the
+ // replacement value is a function?
+ if (!''.replace(/^/, String)) {
+ // decode all the values we need
+ while ($count--) $decode[$encode($count)] = $keywords[$count] || $encode($count);
+ // global replacement function
+ $keywords = [function($encoded){return $decode[$encoded]}];
+ // generic match
+ $encode = function(){return'\\w+'};
+ // reset the loop counter - we are now doing a global replace
+ $count = 1;
+ }
+ };
+
+ // keep a list of parsing functions, they'll be executed all at once
+ var _parsers = [];
+ function _addParser($parser) {
+ _parsers[_parsers.length] = $parser;
+ };
+
+ // zero encoding - just removal of white space and comments
+ function _basicCompression($script) {
+ var $parser = new ParseMaster;
+ // make safe
+ $parser.escapeChar = "\\";
+ // protect strings
+ $parser.add(/'[^'\n\r]*'/, $IGNORE);
+ $parser.add(/"[^"\n\r]*"/, $IGNORE);
+ // remove comments
+ $parser.add(/\/\/[^\n\r]*[\n\r]/, " ");
+ $parser.add(/\/\*[^*]*\*+([^\/][^*]*\*+)*\//, " ");
+ // protect regular expressions
+ $parser.add(/\s+(\/[^\/\n\r\*][^\/\n\r]*\/g?i?)/, "$2"); // IGNORE
+ $parser.add(/[^\w\x24\/'"*)\?:]\/[^\/\n\r\*][^\/\n\r]*\/g?i?/, $IGNORE);
+ // remove: ;;; doSomething();
+ if (_specialChars) $parser.add(/;;;[^\n\r]+[\n\r]/);
+ // remove redundant semi-colons
+ $parser.add(/\(;;\)/, $IGNORE); // protect for (;;) loops
+ $parser.add(/;+\s*([};])/, "$2");
+ // apply the above
+ $script = $parser.exec($script);
+
+ // remove white-space
+ $parser.add(/(\b|\x24)\s+(\b|\x24)/, "$2 $3");
+ $parser.add(/([+\-])\s+([+\-])/, "$2 $3");
+ $parser.add(/\s+/, "");
+ // done
+ return $parser.exec($script);
+ };
+
+ function _encodeSpecialChars($script) {
+ var $parser = new ParseMaster;
+ // replace: $name -> n, $$name -> na
+ $parser.add(/((\x24+)([a-zA-Z$_]+))(\d*)/, function($match, $offset) {
+ var $length = $match[$offset + 2].length;
+ var $start = $length - Math.max($length - $match[$offset + 3].length, 0);
+ return $match[$offset + 1].substr($start, $length) + $match[$offset + 4];
+ });
+ // replace: _name -> _0, double-underscore (__name) is ignored
+ var $regexp = /\b_[A-Za-z\d]\w*/;
+ // build the word list
+ var $keywords = _analyze($script, _globalize($regexp), _encodePrivate);
+ // quick ref
+ var $encoded = $keywords.$encoded;
+ $parser.add($regexp, function($match, $offset) {
+ return $encoded[$match[$offset]];
+ });
+ return $parser.exec($script);
+ };
+
+ function _encodeKeywords($script) {
+ // escape high-ascii values already in the script (i.e. in strings)
+ if (_encoding > 62) $script = _escape95($script);
+ // create the parser
+ var $parser = new ParseMaster;
+ var $encode = _getEncoder(_encoding);
+ // for high-ascii, don't encode single character low-ascii
+ var $regexp = (_encoding > 62) ? /\w\w+/ : /\w+/;
+ // build the word list
+ $keywords = _analyze($script, _globalize($regexp), $encode);
+ var $encoded = $keywords.$encoded;
+ // encode
+ $parser.add($regexp, function($match, $offset) {
+ return $encoded[$match[$offset]];
+ });
+ // if encoded, wrap the script in a decoding function
+ return $script && _bootStrap($parser.exec($script), $keywords);
+ };
+
+ function _analyze($script, $regexp, $encode) {
+ // analyse
+ // retreive all words in the script
+ var $all = $script.match($regexp);
+ var $$sorted = []; // list of words sorted by frequency
+ var $$encoded = {}; // dictionary of word->encoding
+ var $$protected = {}; // instances of "protected" words
+ if ($all) {
+ var $unsorted = []; // same list, not sorted
+ var $protected = {}; // "protected" words (dictionary of word->"word")
+ var $values = {}; // dictionary of charCode->encoding (eg. 256->ff)
+ var $count = {}; // word->count
+ var i = $all.length, j = 0, $word;
+ // count the occurrences - used for sorting later
+ do {
+ $word = "$" + $all[--i];
+ if (!$count[$word]) {
+ $count[$word] = 0;
+ $unsorted[j] = $word;
+ // make a dictionary of all of the protected words in this script
+ // these are words that might be mistaken for encoding
+ $protected["$" + ($values[j] = $encode(j))] = j++;
+ }
+ // increment the word counter
+ $count[$word]++;
+ } while (i);
+ // prepare to sort the word list, first we must protect
+ // words that are also used as codes. we assign them a code
+ // equivalent to the word itself.
+ // e.g. if "do" falls within our encoding range
+ // then we store keywords["do"] = "do";
+ // this avoids problems when decoding
+ i = $unsorted.length;
+ do {
+ $word = $unsorted[--i];
+ if ($protected[$word] != null) {
+ $$sorted[$protected[$word]] = $word.slice(1);
+ $$protected[$protected[$word]] = true;
+ $count[$word] = 0;
+ }
+ } while (i);
+ // sort the words by frequency
+ $unsorted.sort(function($match1, $match2) {
+ return $count[$match2] - $count[$match1];
+ });
+ j = 0;
+ // because there are "protected" words in the list
+ // we must add the sorted words around them
+ do {
+ if ($$sorted[i] == null) $$sorted[i] = $unsorted[j++].slice(1);
+ $$encoded[$$sorted[i]] = $values[i];
+ } while (++i < $unsorted.length);
+ }
+ return {$sorted: $$sorted, $encoded: $$encoded, $protected: $$protected};
+ };
+
+ // build the boot function used for loading and decoding
+ function _bootStrap($packed, $keywords) {
+ var $ENCODE = _safeRegExp("$encode\\($count\\)", "g");
+
+ // $packed: the packed script
+ $packed = "'" + _escape($packed) + "'";
+
+ // $ascii: base for encoding
+ var $ascii = Math.min($keywords.$sorted.length, _encoding) || 1;
+
+ // $count: number of words contained in the script
+ var $count = $keywords.$sorted.length;
+
+ // $keywords: list of words contained in the script
+ for (var i in $keywords.$protected) $keywords.$sorted[i] = "";
+ // convert from a string to an array
+ $keywords = "'" + $keywords.$sorted.join("|") + "'.split('|')";
+
+ // $encode: encoding function (used for decoding the script)
+ var $encode = _encoding > 62 ? _encode95 : _getEncoder($ascii);
+ $encode = String($encode).replace(/_encoding/g, "$ascii").replace(/arguments\.callee/g, "$encode");
+ var $inline = "$count" + ($ascii > 10 ? ".toString($ascii)" : "");
+
+ // $decode: code snippet to speed up decoding
+ if (_fastDecode) {
+ // create the decoder
+ var $decode = _getFunctionBody(_decode);
+ if (_encoding > 62) $decode = $decode.replace(/\\\\w/g, "[\\xa1-\\xff]");
+ // perform the encoding inline for lower ascii values
+ else if ($ascii < 36) $decode = $decode.replace($ENCODE, $inline);
+ // special case: when $count==0 there are no keywords. I want to keep
+ // the basic shape of the unpacking funcion so i'll frig the code...
+ if (!$count) $decode = $decode.replace(_safeRegExp("($count)\\s*=\\s*1"), "$1=0");
+ }
+
+ // boot function
+ var $unpack = String(_unpack);
+ if (_fastDecode) {
+ // insert the decoder
+ $unpack = $unpack.replace(/\{/, "{" + $decode + ";");
+ }
+ $unpack = $unpack.replace(/"/g, "'");
+ if (_encoding > 62) { // high-ascii
+ // get rid of the word-boundaries for regexp matches
+ $unpack = $unpack.replace(/'\\\\b'\s*\+|\+\s*'\\\\b'/g, "");
+ }
+ if ($ascii > 36 || _encoding > 62 || _fastDecode) {
+ // insert the encode function
+ $unpack = $unpack.replace(/\{/, "{$encode=" + $encode + ";");
+ } else {
+ // perform the encoding inline
+ $unpack = $unpack.replace($ENCODE, $inline);
+ }
+ // pack the boot function too
+ $unpack = pack($unpack, 0, false, true);
+
+ // arguments
+ var $params = [$packed, $ascii, $count, $keywords];
+ if (_fastDecode) {
+ // insert placeholders for the decoder
+ $params = $params.concat(0, "{}");
+ }
+
+ // the whole thing
+ return "eval(" + $unpack + "(" + $params + "))\n";
+ };
+
+ // mmm.. ..which one do i need ??
+ function _getEncoder($ascii) {
+ return $ascii > 10 ? $ascii > 36 ? $ascii > 62 ? _encode95 : _encode62 : _encode36 : _encode10;
+ };
+
+ // zero encoding
+ // characters: 0123456789
+ var _encode10 = function($charCode) {
+ return $charCode;
+ };
+
+ // inherent base36 support
+ // characters: 0123456789abcdefghijklmnopqrstuvwxyz
+ var _encode36 = function($charCode) {
+ return $charCode.toString(36);
+ };
+
+ // hitch a ride on base36 and add the upper case alpha characters
+ // characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
+ var _encode62 = function($charCode) {
+ return ($charCode < _encoding ? '' : arguments.callee(parseInt($charCode / _encoding))) +
+ (($charCode = $charCode % _encoding) > 35 ? String.fromCharCode($charCode + 29) : $charCode.toString(36));
+ };
+
+ // use high-ascii values
+ var _encode95 = function($charCode) {
+ return ($charCode < _encoding ? '' : arguments.callee($charCode / _encoding)) +
+ String.fromCharCode($charCode % _encoding + 161);
+ };
+
+ // special _chars
+ var _encodePrivate = function($charCode) {
+ return "_" + $charCode;
+ };
+
+ // protect characters used by the parser
+ function _escape($script) {
+ return $script.replace(/([\\'])/g, "\\$1");
+ };
+
+ // protect high-ascii characters already in the script
+ function _escape95($script) {
+ return $script.replace(/[\xa1-\xff]/g, function($match) {
+ return "\\x" + $match.charCodeAt(0).toString(16);
+ });
+ };
+
+ function _safeRegExp($string, $flags) {
+ return new RegExp($string.replace(/\$/g, "\\$"), $flags);
+ };
+
+ // extract the body of a function
+ function _getFunctionBody($function) {
+ with (String($function)) return slice(indexOf("{") + 1, lastIndexOf("}"));
+ };
+
+ // set the global flag on a RegExp (you have to create a new one)
+ function _globalize($regexp) {
+ return new RegExp(String($regexp).slice(1, -1), "g");
+ };
+
+ // build the parsing routine
+ _addParser(_basicCompression);
+ if (_specialChars) _addParser(_encodeSpecialChars);
+ if (_encoding) _addParser(_encodeKeywords);
+
+ // go!
+ return _pack(_script);
+};
diff --git a/js/tablesorter/build/writeFile.js b/js/tablesorter/build/writeFile.js
new file mode 100644
index 0000000..43b1eb2
--- /dev/null
+++ b/js/tablesorter/build/writeFile.js
@@ -0,0 +1,19 @@
+importPackage(java.io);
+
+function writeFile( file, stream ) {
+ var buffer = new PrintWriter( new FileWriter( file ) );
+ buffer.print( stream );
+ buffer.close();
+}
+
+function read( file ) {
+ var jq = new File(file);
+ var reader = new BufferedReader(new FileReader(jq));
+ var line = null;
+ var buffer = new java.lang.StringBuffer(jq.length());
+ while( (line = reader.readLine()) != null) {
+ buffer.append(line);
+ buffer.append("\n");
+ }
+ return buffer.toString();
+}
\ No newline at end of file
diff --git a/js/tablesorter/changelog b/js/tablesorter/changelog
new file mode 100644
index 0000000..f6a525f
--- /dev/null
+++ b/js/tablesorter/changelog
@@ -0,0 +1,41 @@
+tablesorter changelog
+======================
+http://tablesorter.com
+
+Changes in version 2.0.3 (2008-03-17)
+-------------------------------------
+
+Bug fixes
+* Missing semicolon, broke the minified version
+
+
+Changes in version 2.0.2 (2008-03-14)
+-------------------------------------
+
+General
+* Added support for the new metadata plugin
+* Added support for jQuery 1.2.3
+* Added support for decimal numbers and negative and positive digits
+* Updated documenation and website with new examples
+* Removed packed version.
+
+Bug fixes
+* Sort force (Thanks to David Lynch)
+
+
+Changes in version 2.0.1 (2007-09-17)
+-------------------------------------
+
+General
+* Removed the need for Dimensions plugin when using the pagnation plugin thanks to offset being included in the jQuery 1.2 core.
+* Added support for jQuery 1.2
+* Added new Minified version of tablesorter
+* Updated documenation and website with new examples
+
+Bug fixes
+* If row values are identical the original order is kept (Thanks to David hull)
+* If thead includes a table $('tbody:first', table) breaks (Thanks to David Hull)
+
+Speed improvements:
+* appendToTable, setting innerHTML to "" before appending new content to table body.
+* zebra widget. (Thanks to James Dempster)
\ No newline at end of file
diff --git a/js/tablesorter/docs/assets/ajax-content.html b/js/tablesorter/docs/assets/ajax-content.html
new file mode 100644
index 0000000..0d10cfb
--- /dev/null
+++ b/js/tablesorter/docs/assets/ajax-content.html
@@ -0,0 +1,43 @@
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
\ No newline at end of file
diff --git a/js/tablesorter/docs/css/jq.css b/js/tablesorter/docs/css/jq.css
new file mode 100644
index 0000000..3f6e34e
--- /dev/null
+++ b/js/tablesorter/docs/css/jq.css
@@ -0,0 +1,28 @@
+body,div,h1{font-family:'trebuchet ms', verdana, arial;margin:0;padding:0;}
+body{background-color:#fff;color:#333;font-size:small;margin:0;padding:0;}
+h1{font-size:large;font-weight:400;margin:0;}
+h2{color:#333;font-size:small;font-weight:400;margin:0;}
+pre{background-color:#eee;border:1px solid #ddd;border-left-width:5px;color:#333;font-size:small;overflow-x:auto;padding:15px;}
+pre.normal{background-color:transparent;border:none;border-left-width:0;overflow-x:auto;}
+#logo{background:url(images/jq.png);display:block;float:right;height:31px;margin-right:10px;margin-top:10px;width:110px;}
+#main{margin:0 20px 20px;padding:0 15px 15px 0;}
+#content{padding:20px;}
+#busy{background-color:#e95555;border:1px ridge #ccc;color:#eee;display:none;padding:3px;position:absolute;right:7px;top:7px;}
+hr{height:1px;}
+code{font-size:108%;font-style:normal;padding:0;}
+ul{color:#333;list-style:square;}
+#banner{margin:20px;padding-bottom:10px;text-align:left;}
+#banner *{color:#232121;font-family:Georgia, Palatino, Times New Roman;font-size:30px;font-style:normal;font-weight:400;margin:0;padding:0;}
+#banner h1{display:block;float:left;}
+#banner h1 em{color:#6cf;}
+#banner h2{float:right;font-size:26px;margin:10px 10px -10px -10px;}
+#banner h3{clear:both;display:block;font-size:12px;margin-top:-20px;}
+#banner a{border-top:1px solid #888;display:block;font-size:14px;margin:5px 0 0;padding:10px 0 0;text-align:right;width:auto;}
+a.external{background-image:url(../img/external.png);background-position:center right;background-repeat:no-repeat;padding-right:12px;}
+form{font-size:10pt;margin-bottom:20px;width:auto;}
+form fieldset{padding:10px;text-align:left;width:140px;}
+div#main h1{border-bottom:1px solid #CDCDCD;display:block;margin-top:20px;padding:10px 0 2px;}
+table#tablesorter-demo {margin: 10px 0 0 0;}
+table#options *{font-size:small;}
+p.tip em {padding: 2px; background-color: #6cf; color: #FFF;}
+div.digg {float: right;}
\ No newline at end of file
diff --git a/js/tablesorter/docs/example-ajax.html b/js/tablesorter/docs/example-ajax.html
new file mode 100644
index 0000000..254ac70
--- /dev/null
+++ b/js/tablesorter/docs/example-ajax.html
@@ -0,0 +1,119 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Appending table data with ajax
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Appending table data with ajax
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
Append new table data
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-empty-table.html b/js/tablesorter/docs/example-empty-table.html
new file mode 100644
index 0000000..52531dc
--- /dev/null
+++ b/js/tablesorter/docs/example-empty-table.html
@@ -0,0 +1,75 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Initializing tablesorter on a empty table
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Initializing tablesorter on a empty table
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-extending-defaults.html b/js/tablesorter/docs/example-extending-defaults.html
new file mode 100644
index 0000000..931e26a
--- /dev/null
+++ b/js/tablesorter/docs/example-extending-defaults.html
@@ -0,0 +1,109 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Extending default options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-meta-headers.html b/js/tablesorter/docs/example-meta-headers.html
new file mode 100644
index 0000000..6340faa
--- /dev/null
+++ b/js/tablesorter/docs/example-meta-headers.html
@@ -0,0 +1,108 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Disable headers using metadata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Disable headers using metadata
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-meta-parsers.html b/js/tablesorter/docs/example-meta-parsers.html
new file mode 100644
index 0000000..33a938c
--- /dev/null
+++ b/js/tablesorter/docs/example-meta-parsers.html
@@ -0,0 +1,105 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Setting column parser using metadata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Setting column parser using metadata
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-meta-sort-list.html b/js/tablesorter/docs/example-meta-sort-list.html
new file mode 100644
index 0000000..99fdaeb
--- /dev/null
+++ b/js/tablesorter/docs/example-meta-sort-list.html
@@ -0,0 +1,107 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Setting initial sorting order with metadata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Setting initial sorting order with metadata
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-debug.html b/js/tablesorter/docs/example-option-debug.html
new file mode 100644
index 0000000..8492b60
--- /dev/null
+++ b/js/tablesorter/docs/example-option-debug.html
@@ -0,0 +1,116 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Enabling debug mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NOTE! If firebug is installed the debuging information will be displayed in the firebug console.
+
+
+
Demo
+
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-digits.html b/js/tablesorter/docs/example-option-digits.html
new file mode 100644
index 0000000..41a72cb
--- /dev/null
+++ b/js/tablesorter/docs/example-option-digits.html
@@ -0,0 +1,106 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Enabling debug mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Demo
+
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Diff
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ 9.99
+ 20.3%
+ +3
+
+
+ John
+ Hood
+ 33
+ 19.99
+ 25.1%
+ -7
+
+
+ Clark
+ Kent
+ 18
+ 15.89
+ 44.2%
+ -15
+
+
+ Bruce
+ Almighty
+ 45
+ 153.19
+ 44%
+ +19
+
+
+ Bruce
+ Evans
+ 56
+ 153.19
+ 23%
+ +9
+
+
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-sort-force.html b/js/tablesorter/docs/example-option-sort-force.html
new file mode 100644
index 0000000..6e8824c
--- /dev/null
+++ b/js/tablesorter/docs/example-option-sort-force.html
@@ -0,0 +1,107 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Force a default sorting order
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Force a default sorting order
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-sort-key.html b/js/tablesorter/docs/example-option-sort-key.html
new file mode 100644
index 0000000..ec8d48a
--- /dev/null
+++ b/js/tablesorter/docs/example-option-sort-key.html
@@ -0,0 +1,108 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Change multi-column sorting key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Change multi-column sorting key
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-sort-list.html b/js/tablesorter/docs/example-option-sort-list.html
new file mode 100644
index 0000000..eda6372
--- /dev/null
+++ b/js/tablesorter/docs/example-option-sort-list.html
@@ -0,0 +1,108 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Set a initial sorting order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Set a initial sorting order
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-sort-order.html b/js/tablesorter/docs/example-option-sort-order.html
new file mode 100644
index 0000000..f6ec341
--- /dev/null
+++ b/js/tablesorter/docs/example-option-sort-order.html
@@ -0,0 +1,108 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Set a initi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Set a initial sorting order
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-option-text-extraction.html b/js/tablesorter/docs/example-option-text-extraction.html
new file mode 100644
index 0000000..fb4b523
--- /dev/null
+++ b/js/tablesorter/docs/example-option-text-extraction.html
@@ -0,0 +1,85 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Dealing with markup inside cells
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Dealing with markup inside cells
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+ Dec 10, 2002 5:14 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-options-headers.html b/js/tablesorter/docs/example-options-headers.html
new file mode 100644
index 0000000..b382b35
--- /dev/null
+++ b/js/tablesorter/docs/example-options-headers.html
@@ -0,0 +1,118 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Disable headers using options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Disable headers using options
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-pager.html b/js/tablesorter/docs/example-pager.html
new file mode 100644
index 0000000..6313568
--- /dev/null
+++ b/js/tablesorter/docs/example-pager.html
@@ -0,0 +1,329 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Pager plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Javascript
+
+$(document).ready(function() {
+ $("table")
+ .tablesorter({widthFixed: true, widgets: ['zebra']})
+ .tablesorterPager({container: $("#pager")});
+});
+
+
Demo
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+ student23 Mathematics male 82 77 0 79 student24 Languages female 100 91 13 82 student25 Mathematics male 22 96 82 53 student26 Languages female 37 29 56 59 student27 Mathematics male 86 82 69 23 student28 Languages female 44 25 43 1 student29 Mathematics male 77 47 22 38 student30 Languages female 19 35 23 10 student31 Mathematics male 90 27 17 50 student32 Languages female 60 75 33 38 student33 Mathematics male 4 31 37 15 student34 Languages female 77 97 81 44 student35 Mathematics male 5 81 51 95 student36 Languages female 70 61 70 94 student37 Mathematics male 60 3 61 84 student38 Languages female 63 39 0 11 student39 Mathematics male 50 46 32 38 student40 Languages female 51 75 25 3 student41 Mathematics male 43 34 28 78 student42 Languages female 11 89 60 95 student43 Mathematics male 48 92 18 88 student44 Languages female 82 2 59 73 student45 Mathematics male 91 73 37 39 student46 Languages female 4 8 12 10 student47 Mathematics male 89 10 6 11 student48 Languages female 90 32 21 18 student49 Mathematics male 42 49 49 72 student50 Languages female 56 37 67 54 student51 Mathematics male 48 31 55 63 student52 Languages female 38 91 71 74 student53 Mathematics male 2 63 85 100 student54 Languages female 75 81 16 23 student55 Mathematics male 65 52 15 53 student56 Languages female 23 52 79 94 student57 Mathematics male 80 22 61 12 student58 Languages female 53 5 79 79 student59 Mathematics male 96 32 35 17 student60 Languages female 16 76 65 27 student61 Mathematics male 20 57 22 23 student62 Languages female 19 83 87 78 student63 Mathematics male 2 5 83 30 student64 Languages female 0 21 9 93 student65 Mathematics male 20 86 13 96 student66 Languages female 28 35 87 57 student67 Mathematics male 36 50 29 10 student68 Languages female 60 90 96 6 student69 Mathematics male 34 61 43 98 student70 Languages female 13 37 91 83 student71 Mathematics male 47 80 57 82 student72 Languages female 69 43 37 37 student73 Mathematics male 54 60 94 21 student74 Languages female 71 14 34 46 student75 Mathematics male 89 96 31 17 student76 Languages female 28 48 29 94 student77 Mathematics male 100 65 20 24 student78 Languages female 11 96 90 33 student79 Mathematics male 53 55 93 39 student80 Languages female 1 100 84 44 student81 Mathematics male 63 78 96 43 student82 Languages female 41 69 82 35 student83 Mathematics male 94 98 13 9 student84 Languages female 94 72 91 77 student85 Mathematics male 71 32 45 25 student86 Languages female 9 89 64 37 student87 Mathematics male 89 1 73 67 student88 Languages female 43 41 68 79 student89 Mathematics male 7 38 22 37 student90 Languages female 94 83 93 37 student91 Mathematics male 82 84 2 61 student92 Languages female 46 41 30 69 student93 Mathematics male 47 19 85 83 student94 Languages female 39 14 64 62 student95 Mathematics male 71 31 46 28 student96 Languages female 90 94 45 40 student97 Mathematics male 46 89 2 5 student98 Languages female 41 43 47 99 student99 Mathematics male 71 90 89 73 student100 Languages female 31 64 18 56 student101 Mathematics male 52 13 69 99 student102 Languages female 86 39 83 18 student103 Mathematics male 23 65 98 80 student104 Languages female 78 100 57 66 student105 Mathematics male 69 21 43 97 student106 Languages female 27 2 78 38 student107 Mathematics male 86 96 46 34 student108 Languages female 13 84 66 64 student109 Mathematics male 35 95 98 81 student110 Languages female 30 28 62 54 student111 Mathematics male 60 31 35 85 student112 Languages female 19 81 19 69 student113 Mathematics male 66 5 98 54 student114 Languages female 38 80 40 16 student115 Mathematics male 5 84 96 97 student116 Languages female 59 97 69 54 student117 Mathematics male 0 34 79 49 student118 Languages female 18 7 12 85 student119 Mathematics male 93 87 7 59 student120 Languages female 42 23 26 90 student121 Mathematics male 17 39 66 89 student122 Languages female 26 75 90 18 student123 Mathematics male 34 23 77 80 student124 Languages female 52 6 77 42 student125 Mathematics male 56 2 85 81 student126 Languages female 51 35 67 44 student127 Mathematics male 64 64 44 34 student128 Languages female 67 91 79 82 student129 Mathematics male 4 26 15 79 student130 Languages female 72 10 3 69 student131 Mathematics male 94 77 51 1 student132 Languages female 27 95 85 48 student133 Mathematics male 92 11 40 61 student134 Languages female 4 18 56 60 student135 Mathematics male 8 42 26 52 student136 Languages female 7 60 47 21 student137 Mathematics male 51 81 30 90 student138 Languages female 58 6 16 73 student139 Mathematics male 48 38 37 31 student140 Languages female 33 26 56 60 student141 Mathematics male 84 84 29 75 student142 Languages female 72 35 6 54 student143 Mathematics male 31 42 70 82 student144 Languages female 94 87 50 35 student145 Mathematics male 91 52 80 26 student146 Languages female 78 65 79 79 student147 Mathematics male 50 90 59 71 student148 Languages female 15 68 66 33 student149 Mathematics male 17 36 34 13 student150 Languages female 30 95 69 73 student151 Mathematics male 20 53 49 58 student152 Languages female 19 89 60 60 student153 Mathematics male 52 82 20 3 student154 Languages female 66 98 53 66 student155 Mathematics male 5 85 22 58 student156 Languages female 34 43 68 8 student157 Mathematics male 43 0 91 14 student158 Languages female 34 18 67 31 student159 Mathematics male 79 73 34 52 student160 Languages female 15 61 37 27 student161 Mathematics male 74 77 15 45 student162 Languages female 52 62 19 58 student163 Mathematics male 77 60 27 95 student164 Languages female 96 1 93 57 student165 Mathematics male 51 63 75 19 student166 Languages female 32 44 72 99 student167 Mathematics male 82 84 57 63 student168 Languages female 53 12 85 67 student169 Mathematics male 49 16 84 6 student170 Languages female 39 34 16 65 student171 Mathematics male 100 68 88 4 student172 Languages female 14 25 63 52 student173 Mathematics male 74 26 15 60 student174 Languages female 11 58 8 92 student175 Mathematics male 62 47 2 31 student176 Languages female 65 26 32 42 student177 Mathematics male 83 78 69 24 student178 Languages female 14 100 7 43 student179 Mathematics male 28 35 89 7 student180 Languages female 1 48 39 62 student181 Mathematics male 14 4 24 69 student182 Languages female 64 52 72 2 student183 Mathematics male 15 26 27 85 student184 Languages female 91 49 40 7 student185 Mathematics male 87 89 42 87 student186 Languages female 75 76 61 88 student187 Mathematics male 11 48 66 30 student188 Languages female 73 7 92 72 student189 Mathematics male 98 36 58 15 student190 Languages female 80 2 86 56 student191 Mathematics male 36 33 97 4 student192 Languages female 59 2 33 90 student193 Mathematics male 94 6 19 33 student194 Languages female 82 49 72 42 student195 Mathematics male 80 59 8 30 student196 Languages female 89 17 90 27 student197 Mathematics male 46 22 6 67 student198 Languages female 65 75 73 77 student199 Mathematics male 77 97 54 13 student200 Languages female 78 19 57 96 student201 Mathematics male 92 21 11 80 student202 Languages female 45 49 93 40 student203 Mathematics male 74 25 87 53 student204 Languages female 15 71 23 4 student205 Mathematics male 82 97 95 73 student206 Languages female 82 60 58 98 student207 Mathematics male 26 64 11 100 student208 Languages female 64 9 60 45 student209 Mathematics male 96 81 96 63 student210 Languages female 24 39 0 69 student211 Mathematics male 86 64 7 10 student212 Languages female 7 64 50 7 student213 Mathematics male 59 12 26 77 student214 Languages female 21 25 93 82 student215 Mathematics male 22 18 64 51 student216 Languages female 92 41 98 28 student217 Mathematics male 32 48 14 17 student218 Languages female 62 36 85 56 student219 Mathematics male 33 37 90 87 student220 Languages female 24 43 60 84 student221 Mathematics male 6 59 37 51 student222 Languages female 91 97 5 76 student223 Mathematics male 86 29 32 27 student224 Languages female 63 59 68 91 student225 Mathematics male 57 73 95 68 student226 Languages female 38 54 59 87 student227 Mathematics male 53 62 72 64 student228 Languages female 62 84 72 73 student229 Mathematics male 13 0 83 58 student230 Languages female 35 65 80 87 student231 Mathematics male 76 20 28 50 student232 Languages female 9 17 66 33 student233 Mathematics male 92 2 99 61 student234 Languages female 47 69 98 39 student235 Mathematics male 21 44 38 82 student236 Languages female 19 86 51 78 student237 Mathematics male 28 45 49 36 student238 Languages female 78 19 49 81 student239 Mathematics male 72 69 47 20 student240 Languages female 17 43 66 56 student241 Mathematics male 90 1 94 4 student242 Languages female 6 18 2 51 student243 Mathematics male 1 37 72 13 student244 Languages female 80 0 58 54 student245 Mathematics male 83 31 85 9 student246 Languages female 90 99 29 12 student247 Mathematics male 89 23 81 59 student248 Languages female 72 26 28 3 student249 Mathematics male 28 10 50 47 student250 Languages female 89 14 89 4 student251 Mathematics male 15 23 37 69 student252 Languages female 27 82 10 36 student253 Mathematics male 49 45 64 23 student254 Languages female 79 75 63 74 student255 Mathematics male 2 56 64 75 student256 Languages female 36 26 29 58 student257 Mathematics male 17 22 66 73 student258 Languages female 70 91 97 45 student259 Mathematics male 34 30 78 30 student260 Languages female 77 57 86 77 student261 Mathematics male 12 59 68 7 student262 Languages female 11 60 97 71 student263 Mathematics male 12 30 35 58 student264 Languages female 46 15 23 40 student265 Mathematics male 44 81 9 26 student266 Languages female 15 68 32 15 student267 Mathematics male 5 58 50 98 student268 Languages female 42 30 32 24 student269 Mathematics male 78 100 99 57 student270 Languages female 55 33 87 25 student271 Mathematics male 25 97 29 93 student272 Languages female 39 35 18 43 student273 Mathematics male 35 17 99 58 student274 Languages female 86 52 27 24 student275 Mathematics male 97 38 73 76 student276 Languages female 20 6 19 8 student277 Mathematics male 93 36 9 47 student278 Languages female 42 3 15 2 student279 Mathematics male 61 18 96 2 student280 Languages female 99 89 87 94 student281 Mathematics male 48 95 90 0 student282 Languages female 60 47 31 30 student283 Mathematics male 64 24 10 76 student284 Languages female 99 37 4 68 student285 Mathematics male 0 98 68 69 student286 Languages female 66 82 49 59 student287 Mathematics male 86 14 37 17 student288 Languages female 27 48 93 27 student289 Mathematics male 84 89 6 68 student290 Languages female 99 0 20 57 student291 Mathematics male 50 96 72 42 student292 Languages female 98 2 27 92 student293 Mathematics male 19 9 42 87 student294 Languages female 98 97 9 22 student295 Mathematics male 75 30 77 64 student296 Languages female 51 98 55 3 student297 Mathematics male 25 95 86 72 student298 Languages female 20 75 37 35 student299 Mathematics male 4 92 41 11 student300 Languages female 28 3 28 91 student301 Mathematics male 41 63 4 25 student302 Languages female 29 16 77 90 student303 Mathematics male 89 41 51 82 student304 Languages female 40 91 24 34 student305 Mathematics male 7 47 49 78 student306 Languages female 6 37 55 62 student307 Mathematics male 30 73 34 90 student308 Languages female 82 91 95 93 student309 Mathematics male 62 4 73 82 student310 Languages female 39 10 12 57 student311 Mathematics male 89 64 20 67 student312 Languages female 56 36 92 41 student313 Mathematics male 99 80 99 74 student314 Languages female 31 79 64 93 student315 Mathematics male 53 2 70 55 student316 Languages female 35 15 29 60 student317 Mathematics male 31 47 69 60 student318 Languages female 88 28 13 66 student319 Mathematics male 65 12 16 40 student320 Languages female 28 17 19 40 student321 Mathematics male 24 100 44 70 student322 Languages female 20 59 83 52 student323 Mathematics male 17 60 82 91 student324 Languages female 95 99 43 37 student325 Mathematics male 30 18 99 31 student326 Languages female 34 7 83 86 student327 Mathematics male 98 63 4 35 student328 Languages female 54 23 98 46 student329 Mathematics male 97 93 45 18 student330 Languages female 27 74 0 77 student331 Mathematics male 9 70 41 37 student332 Languages female 52 37 76 20 student333 Mathematics male 74 18 68 19 student334 Languages female 77 100 33 9 student335 Mathematics male 38 53 77 18 student336 Languages female 18 13 26 10 student337 Mathematics male 90 47 87 70 student338 Languages female 38 49 36 74 student339 Mathematics male 100 64 13 72 student340 Languages female 74 25 41 52 student341 Mathematics male 37 13 16 13 student342 Languages female 24 34 15 83 student343 Mathematics male 20 5 67 28 student344 Languages female 45 2 25 72 student345 Mathematics male 19 11 75 35 student346 Languages female 6 58 31 15 student347 Mathematics male 16 66 36 11 student348 Languages female 12 3 95 40 student349 Mathematics male 7 52 74 2 student350 Languages female 88 92 60 55 student351 Mathematics male 92 70 91 45 student352 Languages female 74 76 59 44 student353 Mathematics male 63 69 60 94 student354 Languages female 3 68 55 48 student355 Mathematics male 39 96 21 48 student356 Languages female 41 34 27 5 student357 Mathematics male 64 3 47 33 student358 Languages female 95 14 63 55 student359 Mathematics male 70 100 13 82 student360 Languages female 52 24 100 21 student361 Mathematics male 0 40 86 9 student362 Languages female 0 2 49 32 student363 Mathematics male 23 10 86 94 student364 Languages female 15 3 86 49 student365 Mathematics male 76 23 31 0 student366 Languages female 35 35 78 94 student367 Mathematics male 29 42 43 100 student368 Languages female 66 8 5 10 student369 Mathematics male 74 15 56 83 student370 Languages female 75 43 90 8 student371 Mathematics male 40 60 4 70 student372 Languages female 62 42 17 49 student373 Mathematics male 31 46 44 54 student374 Languages female 30 34 47 87 student375 Mathematics male 9 69 41 52 student376 Languages female 85 43 29 92 student377 Mathematics male 79 0 40 25 student378 Languages female 36 40 72 85 student379 Mathematics male 53 68 88 2 student380 Languages female 87 78 38 79 student381 Mathematics male 89 97 83 38 student382 Languages female 21 19 49 10 student383 Mathematics male 47 12 68 50 student384 Languages female 37 12 49 95 student385 Mathematics male 84 0 88 51 student386 Languages female 89 61 27 48 student387 Mathematics male 10 47 87 61 student388 Languages female 16 9 26 56 student389 Mathematics male 57 33 13 47 student390 Languages female 90 35 77 75 student391 Mathematics male 31 47 47 53 student392 Languages female 9 4 24 12 student393 Mathematics male 61 19 81 7 student394 Languages female 4 57 57 7 student395 Mathematics male 67 29 21 2 student396 Languages female 51 6 45 6 student397 Mathematics male 93 14 77 14 student398 Languages female 1 89 34 27 student399 Mathematics male 93 77 57 91 student400 Languages female 67 77 80 32 student401 Mathematics male 58 89 4 17 student402 Languages female 30 56 0 53 student403 Mathematics male 28 25 32 59 student404 Languages female 62 34 81 64 student405 Mathematics male 29 84 26 23 student406 Languages female 70 8 63 77 student407 Mathematics male 8 65 47 99 student408 Languages female 9 38 10 89 student409 Mathematics male 84 21 46 58 student410 Languages female 21 84 18 49 student411 Mathematics male 27 9 63 40 student412 Languages female 93 0 19 91 student413 Mathematics male 31 92 87 43 student414 Languages female 53 25 98 43 student415 Mathematics male 36 75 80 89 student416 Languages female 37 68 12 54 student417 Mathematics male 25 89 12 53 student418 Languages female 92 2 8 46 student419 Mathematics male 11 28 60 58 student420 Languages female 1 37 35 17 student421 Mathematics male 67 30 38 85 student422 Languages female 68 79 34 41 student423 Mathematics male 72 45 93 41 student424 Languages female 56 46 45 38 student425 Mathematics male 86 21 84 0 student426 Languages female 99 85 41 19 student427 Mathematics male 71 35 3 89 student428 Languages female 22 91 12 16 student429 Mathematics male 15 3 26 93 student430 Languages female 35 46 34 74 student431 Mathematics male 33 83 97 20 student432 Languages female 99 20 3 26 student433 Mathematics male 48 42 83 18 student434 Languages female 44 4 25 30 student435 Mathematics male 78 48 60 45 student436 Languages female 47 57 89 0 student437 Mathematics male 88 12 100 53 student438 Languages female 48 0 51 60 student439 Mathematics male 70 89 85 16 student440 Languages female 71 94 34 33 student441 Mathematics male 68 13 72 18 student442 Languages female 7 53 97 21 student443 Mathematics male 65 36 60 87 student444 Languages female 43 21 24 34 student445 Mathematics male 85 77 65 28 student446 Languages female 61 90 78 91 student447 Mathematics male 92 0 78 12 student448 Languages female 33 30 62 90 student449 Mathematics male 86 16 74 5 student450 Languages female 100 86 24 23 student451 Mathematics male 14 25 6 45 student452 Languages female 86 39 98 88 student453 Mathematics male 72 68 77 19 student454 Languages female 9 45 23 100 student455 Mathematics male 34 67 89 79 student456 Languages female 92 0 47 45 student457 Mathematics male 64 58 26 98 student458 Languages female 43 93 59 100 student459 Mathematics male 82 35 97 81 student460 Languages female 18 35 24 100 student461 Mathematics male 79 80 43 51 student462 Languages female 56 10 17 67 student463 Mathematics male 36 44 14 85 student464 Languages female 26 40 69 2 student465 Mathematics male 59 93 43 78 student466 Languages female 78 84 88 3 student467 Mathematics male 41 37 80 60 student468 Languages female 44 27 97 77 student469 Mathematics male 29 19 64 82 student470 Languages female 50 96 27 46 student471 Mathematics male 49 15 51 45 student472 Languages female 38 35 31 78 student473 Mathematics male 1 80 23 65 student474 Languages female 91 17 23 76 student475 Mathematics male 57 39 35 63 student476 Languages female 33 73 62 14 student477 Mathematics male 96 16 88 40 student478 Languages female 30 63 16 13 student479 Mathematics male 74 39 37 87 student480 Languages female 26 36 94 79 student481 Mathematics male 19 58 65 12 student482 Languages female 73 36 22 48 student483 Mathematics male 78 94 75 7 student484 Languages female 59 51 9 35 student485 Mathematics male 67 71 100 85 student486 Languages female 33 30 15 46 student487 Mathematics male 12 19 16 37 student488 Languages female 80 98 29 14 student489 Mathematics male 70 51 14 31 student490 Languages female 95 38 15 92 student491 Mathematics male 60 31 74 12 student492 Languages female 62 56 90 68 student493 Mathematics male 63 11 29 91 student494 Languages female 41 1 25 20 student495 Mathematics male 60 5 31 44 student496 Languages female 11 35 5 28 student497 Mathematics male 11 96 42 37 student498 Languages female 16 72 79 74 student499 Mathematics male 9 21 22 66 student500 Languages female 34 22 64 34 student501 Mathematics male 50 93 86 61 student502 Languages female 50 22 40 44 student503 Mathematics male 3 8 39 17 student504 Languages female 98 16 93 55 student505 Mathematics male 86 89 36 28 student506 Languages female 16 53 13 50 student507 Mathematics male 57 57 3 38 student508 Languages female 34 79 69 77 student509 Mathematics male 2 4 16 59 student510 Languages female 60 62 99 100 student511 Mathematics male 65 52 52 95 student512 Languages female 58 73 94 1 student513 Mathematics male 39 75 28 76 student514 Languages female 46 6 64 78 student515 Mathematics male 51 60 99 8 student516 Languages female 17 20 12 97 student517 Mathematics male 72 17 96 73 student518 Languages female 92 21 62 27 student519 Mathematics male 50 42 4 33 student520 Languages female 52 37 1 57 student521 Mathematics male 58 40 35 54 student522 Languages female 9 38 57 53 student523 Mathematics male 79 20 18 18 student524 Languages female 1 4 94 27 student525 Mathematics male 95 41 29 98 student526 Languages female 34 59 9 21 student527 Mathematics male 39 66 41 29 student528 Languages female 3 2 81 25 student529 Mathematics male 33 44 37 85 student530 Languages female 69 25 59 79 student531 Mathematics male 13 50 49 52 student532 Languages female 54 83 45 31 student533 Mathematics male 15 24 97 51 student534 Languages female 7 51 69 63 student535 Mathematics male 91 8 38 56 student536 Languages female 50 13 74 80 student537 Mathematics male 54 75 74 10 student538 Languages female 76 39 70 46 student539 Mathematics male 84 72 39 40 student540 Languages female 100 47 2 14 student541 Mathematics male 42 61 1 1 student542 Languages female 57 71 65 61 student543 Mathematics male 78 5 41 34 student544 Languages female 14 76 36 47 student545 Mathematics male 15 19 63 96 student546 Languages female 27 82 33 56 student547 Mathematics male 70 23 96 90 student548 Languages female 61 2 2 78 student549 Mathematics male 22 37 64 36 student550 Languages female 75 96 94 40 student551 Mathematics male 43 8 29 21 student552 Languages female 7 96 87 18 student553 Mathematics male 65 76 52 44 student554 Languages female 41 62 73 54 student555 Mathematics male 25 98 21 40 student556 Languages female 17 70 96 82 student557 Mathematics male 43 91 27 43 student558 Languages female 33 37 24 33 student559 Mathematics male 87 87 10 31 student560 Languages female 48 40 97 74 student561 Mathematics male 63 75 91 55 student562 Languages female 66 82 59 95 student563 Mathematics male 21 95 58 38 student564 Languages female 92 9 97 45 student565 Mathematics male 59 7 94 20 student566 Languages female 64 95 24 12 student567 Mathematics male 70 46 36 74 student568 Languages female 16 25 91 49 student569 Mathematics male 73 33 24 88 student570 Languages female 9 61 95 27 student571 Mathematics male 18 12 76 46 student572 Languages female 61 71 49 63 student573 Mathematics male 46 32 85 17 student574 Languages female 42 42 11 37 student575 Mathematics male 49 76 41 20 student576 Languages female 22 27 80 12 student577 Mathematics male 76 34 18 66 student578 Languages female 96 77 29 17 student579 Mathematics male 62 51 67 72 student580 Languages female 96 67 22 54 student581 Mathematics male 77 11 23 88 student582 Languages female 6 28 24 33 student583 Mathematics male 39 23 12 100 student584 Languages female 10 21 20 71 student585 Mathematics male 11 27 7 100 student586 Languages female 40 34 97 78 student587 Mathematics male 2 51 83 19 student588 Languages female 18 76 30 25 student589 Mathematics male 24 57 46 81 student590 Languages female 2 10 31 94 student591 Mathematics male 91 84 75 13 student592 Languages female 79 44 97 10 student593 Mathematics male 42 60 67 30 student594 Languages female 61 57 75 35 student595 Mathematics male 42 46 81 71 student596 Languages female 92 63 75 74 student597 Mathematics male 86 37 40 51 student598 Languages female 52 10 47 3 student599 Mathematics male 100 28 14 76 student600 Languages female 31 76 20 43 student601 Mathematics male 40 27 6 6 student602 Languages female 5 8 79 21 student603 Mathematics male 7 54 6 91 student604 Languages female 28 30 15 3 student605 Mathematics male 38 93 98 92 student606 Languages female 43 96 89 91 student607 Mathematics male 43 49 14 83 student608 Languages female 50 61 72 98 student609 Mathematics male 4 49 99 83 student610 Languages female 5 36 73 82 student611 Mathematics male 40 84 99 54 student612 Languages female 29 96 65 69 student613 Mathematics male 12 76 5 99 student614 Languages female 47 83 49 4 student615 Mathematics male 37 27 22 4 student616 Languages female 94 39 49 24 student617 Mathematics male 0 75 21 41 student618 Languages female 59 36 4 18 student619 Mathematics male 22 66 13 3 student620 Languages female 43 87 4 48 student621 Mathematics male 100 15 51 52 student622 Languages female 63 71 99 17 student623 Mathematics male 14 34 44 100 student624 Languages female 23 8 57 27 student625 Mathematics male 23 14 32 40 student626 Languages female 34 49 72 54 student627 Mathematics male 21 16 81 26 student628 Languages female 54 69 34 34 student629 Mathematics male 72 11 63 31 student630 Languages female 87 98 9 47 student631 Mathematics male 43 52 53 58 student632 Languages female 50 14 4 20 student633 Mathematics male 89 83 67 87 student634 Languages female 0 79 9 16 student635 Mathematics male 59 17 84 58 student636 Languages female 94 95 36 60 student637 Mathematics male 39 42 63 46 student638 Languages female 0 19 6 10 student639 Mathematics male 50 16 41 71 student640 Languages female 8 60 46 13 student641 Mathematics male 45 85 59 36 student642 Languages female 83 35 0 57 student643 Mathematics male 8 30 60 14 student644 Languages female 76 80 73 38 student645 Mathematics male 26 14 58 2 student646 Languages female 93 16 42 2 student647 Mathematics male 85 94 76 16 student648 Languages female 57 45 32 16 student649 Mathematics male 16 16 90 13 student650 Languages female 43 3 18 87 student651 Mathematics male 16 24 32 44 student652 Languages female 59 98 3 34 student653 Mathematics male 73 18 47 83 student654 Languages female 99 25 100 93 student655 Mathematics male 0 73 97 84 student656 Languages female 0 28 94 75 student657 Mathematics male 65 90 58 63 student658 Languages female 84 35 86 41 student659 Mathematics male 45 39 59 9 student660 Languages female 32 10 31 62 student661 Mathematics male 61 28 54 61 student662 Languages female 70 96 14 54 student663 Mathematics male 63 92 29 8 student664 Languages female 41 10 46 23 student665 Mathematics male 81 91 80 21 student666 Languages female 79 71 65 68 student667 Mathematics male 47 69 18 90 student668 Languages female 26 16 70 0 student669 Mathematics male 66 10 93 35 student670 Languages female 66 68 27 13 student671 Mathematics male 86 79 26 45 student672 Languages female 50 53 25 74 student673 Mathematics male 97 53 9 14 student674 Languages female 28 79 69 42 student675 Mathematics male 60 72 5 9 student676 Languages female 53 21 39 43 student677 Mathematics male 37 65 45 91 student678 Languages female 76 80 60 27 student679 Mathematics male 85 27 34 55 student680 Languages female 66 11 41 17 student681 Mathematics male 27 61 89 82 student682 Languages female 40 26 1 3 student683 Mathematics male 25 1 66 95 student684 Languages female 63 44 85 63 student685 Mathematics male 97 95 78 83 student686 Languages female 51 2 13 87 student687 Mathematics male 63 92 87 23 student688 Languages female 22 96 59 59 student689 Mathematics male 33 80 15 23 student690 Languages female 34 75 19 24 student691 Mathematics male 36 68 48 54 student692 Languages female 32 36 20 12 student693 Mathematics male 68 91 74 50 student694 Languages female 87 91 96 37 student695 Mathematics male 23 9 14 4 student696 Languages female 94 62 9 77 student697 Mathematics male 14 7 45 75 student698 Languages female 73 92 19 90 student699 Mathematics male 8 20 79 78 student700 Languages female 76 35 100 39 student701 Mathematics male 27 51 89 49 student702 Languages female 0 64 72 37 student703 Mathematics male 93 46 94 87 student704 Languages female 69 22 17 2 student705 Mathematics male 17 52 11 3 student706 Languages female 13 2 52 19 student707 Mathematics male 75 61 72 73 student708 Languages female 84 37 7 36 student709 Mathematics male 81 19 45 14 student710 Languages female 62 17 39 27 student711 Mathematics male 88 69 6 81 student712 Languages female 53 82 59 29 student713 Mathematics male 83 34 71 34 student714 Languages female 95 52 61 4 student715 Mathematics male 6 71 53 13 student716 Languages female 82 97 82 5 student717 Mathematics male 65 50 31 46 student718 Languages female 27 46 25 37 student719 Mathematics male 98 42 35 44 student720 Languages female 90 1 44 44 student721 Mathematics male 3 16 82 93 student722 Languages female 34 3 43 70 student723 Mathematics male 59 77 14 21 student724 Languages female 16 53 57 59 student725 Mathematics male 79 1 44 16 student726 Languages female 10 8 19 9 student727 Mathematics male 89 48 79 16 student728 Languages female 8 87 23 87 student729 Mathematics male 17 53 95 84 student730 Languages female 65 52 39 61 student731 Mathematics male 44 30 96 72 student732 Languages female 70 79 32 33 student733 Mathematics male 30 47 46 11 student734 Languages female 76 100 16 49 student735 Mathematics male 39 36 90 89 student736 Languages female 1 94 19 29 student737 Mathematics male 23 73 78 87 student738 Languages female 87 71 44 64 student739 Mathematics male 22 19 82 20 student740 Languages female 94 52 67 39 student741 Mathematics male 14 17 51 87 student742 Languages female 56 63 98 3 student743 Mathematics male 99 92 46 98 student744 Languages female 19 76 83 88 student745 Mathematics male 15 77 68 81 student746 Languages female 48 81 48 38 student747 Mathematics male 29 1 38 61 student748 Languages female 71 63 0 30 student749 Mathematics male 19 68 30 53 student750 Languages female 91 18 27 62 student751 Mathematics male 73 33 38 36 student752 Languages female 99 38 75 50 student753 Mathematics male 55 71 34 90 student754 Languages female 52 40 98 83 student755 Mathematics male 14 63 61 1 student756 Languages female 1 31 94 96 student757 Mathematics male 49 66 55 92 student758 Languages female 0 19 80 82 student759 Mathematics male 26 35 87 3 student760 Languages female 8 28 76 39 student761 Mathematics male 52 11 83 57 student762 Languages female 83 68 84 25 student763 Mathematics male 17 2 56 70 student764 Languages female 17 58 0 84 student765 Mathematics male 75 6 47 85 student766 Languages female 76 32 93 39 student767 Mathematics male 20 75 84 65 student768 Languages female 25 47 12 89 student769 Mathematics male 86 94 79 45 student770 Languages female 65 81 55 35 student771 Mathematics male 62 41 41 43 student772 Languages female 14 4 62 43 student773 Mathematics male 17 55 72 78 student774 Languages female 95 46 35 6 student775 Mathematics male 72 0 56 48 student776 Languages female 30 88 19 56 student777 Mathematics male 42 44 88 56 student778 Languages female 42 69 56 63 student779 Mathematics male 78 57 78 3 student780 Languages female 15 86 24 98 student781 Mathematics male 46 8 43 69 student782 Languages female 67 98 15 52 student783 Mathematics male 33 32 63 57 student784 Languages female 35 95 16 53 student785 Mathematics male 78 54 54 82 student786 Languages female 81 85 91 4 student787 Mathematics male 42 41 23 14 student788 Languages female 59 100 86 36 student789 Mathematics male 1 92 60 12 student790 Languages female 100 34 5 70 student791 Mathematics male 3 81 2 17 student792 Languages female 31 55 19 3 student793 Mathematics male 11 33 98 77 student794 Languages female 4 61 7 86 student795 Mathematics male 57 86 7 27 student796 Languages female 5 74 62 36 student797 Mathematics male 57 67 66 61 student798 Languages female 93 88 87 25 student799 Mathematics male 59 96 64 41 student800 Languages female 62 7 69 23 student801 Mathematics male 35 83 32 55 student802 Languages female 42 58 15 83 student803 Mathematics male 41 90 40 12 student804 Languages female 81 43 83 7 student805 Mathematics male 87 77 33 20 student806 Languages female 53 87 30 37 student807 Mathematics male 13 35 85 16 student808 Languages female 20 82 90 34 student809 Mathematics male 58 2 16 14 student810 Languages female 14 28 23 56 student811 Mathematics male 49 97 36 8 student812 Languages female 31 46 11 63 student813 Mathematics male 74 9 76 43 student814 Languages female 42 83 95 75 student815 Mathematics male 2 65 45 29 student816 Languages female 79 59 69 88 student817 Mathematics male 68 18 26 84 student818 Languages female 39 13 99 15 student819 Mathematics male 22 48 71 6 student820 Languages female 12 53 88 11 student821 Mathematics male 33 90 80 29 student822 Languages female 37 9 54 86 student823 Mathematics male 91 78 85 1 student824 Languages female 31 58 67 31 student825 Mathematics male 22 30 50 98 student826 Languages female 55 58 56 10 student827 Mathematics male 56 76 57 53 student828 Languages female 1 12 98 81 student829 Mathematics male 67 92 66 71 student830 Languages female 30 61 44 49 student831 Mathematics male 0 41 44 61 student832 Languages female 72 52 45 85 student833 Mathematics male 60 99 12 94 student834 Languages female 83 58 75 42 student835 Mathematics male 95 0 53 77 student836 Languages female 33 28 70 62 student837 Mathematics male 39 82 75 5 student838 Languages female 41 100 45 47 student839 Mathematics male 81 69 27 29 student840 Languages female 90 1 26 49 student841 Mathematics male 45 38 20 34 student842 Languages female 3 25 31 1 student843 Mathematics male 55 77 86 49 student844 Languages female 61 60 91 76 student845 Mathematics male 80 85 74 9 student846 Languages female 63 89 73 71 student847 Mathematics male 79 15 97 42 student848 Languages female 99 18 73 43 student849 Mathematics male 30 52 38 56 student850 Languages female 65 86 67 34 student851 Mathematics male 73 43 6 55 student852 Languages female 42 43 51 73 student853 Mathematics male 8 70 98 0 student854 Languages female 29 41 12 45 student855 Mathematics male 57 3 90 90 student856 Languages female 80 52 96 54 student857 Mathematics male 43 83 82 46 student858 Languages female 7 91 71 31 student859 Mathematics male 68 13 70 7 student860 Languages female 51 44 15 52 student861 Mathematics male 91 70 1 78 student862 Languages female 4 11 65 78 student863 Mathematics male 20 63 55 85 student864 Languages female 59 3 87 26 student865 Mathematics male 4 89 44 32 student866 Languages female 26 67 98 39 student867 Mathematics male 48 79 38 66 student868 Languages female 16 32 15 3 student869 Mathematics male 13 20 50 85 student870 Languages female 4 92 20 39 student871 Mathematics male 82 6 23 53 student872 Languages female 6 60 74 64 student873 Mathematics male 66 48 39 14 student874 Languages female 43 83 3 100 student875 Mathematics male 21 49 9 0 student876 Languages female 79 80 71 80 student877 Mathematics male 84 25 26 88 student878 Languages female 38 46 66 60 student879 Mathematics male 35 27 98 51 student880 Languages female 57 59 2 67 student881 Mathematics male 76 87 78 8 student882 Languages female 21 40 8 17 student883 Mathematics male 50 4 68 66 student884 Languages female 83 86 30 92 student885 Mathematics male 63 46 66 94 student886 Languages female 76 71 2 62 student887 Mathematics male 74 18 68 6 student888 Languages female 65 77 44 88 student889 Mathematics male 67 32 61 19 student890 Languages female 85 96 85 41 student891 Mathematics male 14 87 70 5 student892 Languages female 81 28 45 28 student893 Mathematics male 9 19 18 83 student894 Languages female 40 70 2 4 student895 Mathematics male 18 19 51 89 student896 Languages female 70 35 25 12 student897 Mathematics male 72 90 7 41 student898 Languages female 84 1 71 86 student899 Mathematics male 14 2 38 86 student900 Languages female 78 37 60 1 student901 Mathematics male 66 95 31 68 student902 Languages female 23 60 80 65 student903 Mathematics male 76 89 63 96 student904 Languages female 3 46 90 70 student905 Mathematics male 65 44 96 79 student906 Languages female 68 77 8 65 student907 Mathematics male 86 61 99 43 student908 Languages female 88 95 32 13 student909 Mathematics male 53 100 59 82 student910 Languages female 35 7 95 35 student911 Mathematics male 23 0 1 77 student912 Languages female 9 68 72 63 student913 Mathematics male 23 92 39 96 student914 Languages female 94 97 6 58 student915 Mathematics male 49 31 29 71 student916 Languages female 21 57 79 57 student917 Mathematics male 0 35 100 89 student918 Languages female 64 82 75 52 student919 Mathematics male 16 66 69 68 student920 Languages female 92 95 11 27 student921 Mathematics male 16 88 85 90 student922 Languages female 56 15 26 98 student923 Mathematics male 78 27 40 17 student924 Languages female 95 10 44 32 student925 Mathematics male 99 85 52 18 student926 Languages female 73 31 71 49 student927 Mathematics male 21 79 10 63 student928 Languages female 92 71 80 12 student929 Mathematics male 23 29 33 88 student930 Languages female 41 8 98 84 student931 Mathematics male 97 17 79 21 student932 Languages female 72 40 93 92 student933 Mathematics male 75 58 3 26 student934 Languages female 15 98 27 28 student935 Mathematics male 76 88 80 6 student936 Languages female 84 23 42 92 student937 Mathematics male 71 56 86 71 student938 Languages female 7 39 58 22 student939 Mathematics male 1 55 54 60 student940 Languages female 20 31 30 8 student941 Mathematics male 97 54 41 81 student942 Languages female 83 41 86 64 student943 Mathematics male 71 95 32 7 student944 Languages female 0 27 30 91 student945 Mathematics male 99 75 17 22 student946 Languages female 92 53 10 90 student947 Mathematics male 4 44 94 32 student948 Languages female 0 97 48 79 student949 Mathematics male 97 55 79 74 student950 Languages female 65 98 9 32 student951 Mathematics male 56 73 38 81 student952 Languages female 84 94 61 50 student953 Mathematics male 48 20 77 0 student954 Languages female 39 98 14 20 student955 Mathematics male 4 15 24 65 student956 Languages female 78 22 92 31 student957 Mathematics male 28 38 26 54 student958 Languages female 49 61 35 54 student959 Mathematics male 81 15 28 17 student960 Languages female 54 80 58 2 student961 Mathematics male 75 23 5 37 student962 Languages female 55 65 1 20 student963 Mathematics male 86 42 70 36 student964 Languages female 54 45 54 80 student965 Mathematics male 38 18 69 92 student966 Languages female 33 89 46 83 student967 Mathematics male 43 9 55 76 student968 Languages female 13 26 12 86 student969 Mathematics male 94 22 85 59 student970 Languages female 93 58 6 10 student971 Mathematics male 35 72 85 36 student972 Languages female 37 51 96 93 student973 Mathematics male 71 10 79 59 student974 Languages female 71 31 73 93 student975 Mathematics male 80 26 86 97 student976 Languages female 69 21 67 69 student977 Mathematics male 38 86 10 39 student978 Languages female 48 90 39 81 student979 Mathematics male 90 83 3 42 student980 Languages female 19 1 91 84 student981 Mathematics male 98 25 50 46 student982 Languages female 38 88 21 16 student983 Mathematics male 71 48 18 43 student984 Languages female 79 85 18 16 student985 Mathematics male 51 66 90 68 student986 Languages female 100 95 65 91 student987 Mathematics male 6 74 24 24 student988 Languages female 93 80 94 35 student989 Mathematics male 65 78 57 94 student990 Languages female 27 92 21 91 student991 Mathematics male 77 15 26 76 student992 Languages female 28 84 51 67 student993 Mathematics male 3 78 62 50 student994 Languages female 59 77 20 74 student995 Mathematics male 62 66 8 75 student996 Languages female 88 70 33 43 student997 Mathematics male 73 33 42 53 student998 Languages female 64 10 2 31 student999 Mathematics male 91 93 16 35 student1000 Languages female 30 68 95 40 student1001 Mathematics male 25 2 48 32 student1002 Languages female 50 77 53 81 student1003 Mathematics male 67 44 10 65 student1004 Languages female 29 53 34 86 student1005 Mathematics male 77 69 22 75 student1006 Languages female 48 82 95 40 student1007 Mathematics male 30 71 29 63 student1008 Languages female 45 31 4 71 student1009 Mathematics male 81 12 20 44 student1010 Languages female 17 66 82 42 student1011 Mathematics male 15 11 32 18 student1012 Languages female 27 34 59 19 student1013 Mathematics male 18 67 25 14 student1014 Languages female 24 64 52 24 student1015 Mathematics male 36 87 48 46 student1016 Languages female 33 1 70 68 student1017 Mathematics male 48 26 3 80 student1018 Languages female 53 63 85 57 student1019 Mathematics male 58 73 0 24 student1020 Languages female 85 90 81 0 student1021 Mathematics male 69 28 52 76 student1022 Languages female 75 22 7 52
+
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-parsers.html b/js/tablesorter/docs/example-parsers.html
new file mode 100644
index 0000000..002ee0a
--- /dev/null
+++ b/js/tablesorter/docs/example-parsers.html
@@ -0,0 +1,112 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Writing custom parsers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Demo
+
+
+
+
+ Name
+ Major
+ Gender
+ English
+ Japanese
+ Calculus
+ Overall grades
+
+
+
+
+ Student01
+ Languages
+ male
+ 80
+ 70
+ 75
+ bad
+
+
+ Student02
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ good
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+ 80
+ medium
+
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-trigger-sort.html b/js/tablesorter/docs/example-trigger-sort.html
new file mode 100644
index 0000000..d107921
--- /dev/null
+++ b/js/tablesorter/docs/example-trigger-sort.html
@@ -0,0 +1,113 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Sort table using a link outside the table
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Sort table using a link outside the table
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Date
+
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20%
+
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44%
+
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ Jan 18, 2007 9:12 AM
+
+
+
Sort first and third columns
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-triggers.html b/js/tablesorter/docs/example-triggers.html
new file mode 100644
index 0000000..58d1711
--- /dev/null
+++ b/js/tablesorter/docs/example-triggers.html
@@ -0,0 +1,336 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Triggers sortStart and sortEnd
+
+
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Triggers sortStart and sortEnd
+
Flexible client-side table sorting
+
Back to documentation
+
+
+
Demo
+
+
+ Please wait...
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+ student23 Mathematics male 82 77 0 79 student24 Languages female 100 91 13 82 student25 Mathematics male 22 96 82 53 student26 Languages female 37 29 56 59 student27 Mathematics male 86 82 69 23 student28 Languages female 44 25 43 1 student29 Mathematics male 77 47 22 38 student30 Languages female 19 35 23 10 student31 Mathematics male 90 27 17 50 student32 Languages female 60 75 33 38 student33 Mathematics male 4 31 37 15 student34 Languages female 77 97 81 44 student35 Mathematics male 5 81 51 95 student36 Languages female 70 61 70 94 student37 Mathematics male 60 3 61 84 student38 Languages female 63 39 0 11 student39 Mathematics male 50 46 32 38 student40 Languages female 51 75 25 3 student41 Mathematics male 43 34 28 78 student42 Languages female 11 89 60 95 student43 Mathematics male 48 92 18 88 student44 Languages female 82 2 59 73 student45 Mathematics male 91 73 37 39 student46 Languages female 4 8 12 10 student47 Mathematics male 89 10 6 11 student48 Languages female 90 32 21 18 student49 Mathematics male 42 49 49 72 student50 Languages female 56 37 67 54 student51 Mathematics male 48 31 55 63 student52 Languages female 38 91 71 74 student53 Mathematics male 2 63 85 100 student54 Languages female 75 81 16 23 student55 Mathematics male 65 52 15 53 student56 Languages female 23 52 79 94 student57 Mathematics male 80 22 61 12 student58 Languages female 53 5 79 79 student59 Mathematics male 96 32 35 17 student60 Languages female 16 76 65 27 student61 Mathematics male 20 57 22 23 student62 Languages female 19 83 87 78 student63 Mathematics male 2 5 83 30 student64 Languages female 0 21 9 93 student65 Mathematics male 20 86 13 96 student66 Languages female 28 35 87 57 student67 Mathematics male 36 50 29 10 student68 Languages female 60 90 96 6 student69 Mathematics male 34 61 43 98 student70 Languages female 13 37 91 83 student71 Mathematics male 47 80 57 82 student72 Languages female 69 43 37 37 student73 Mathematics male 54 60 94 21 student74 Languages female 71 14 34 46 student75 Mathematics male 89 96 31 17 student76 Languages female 28 48 29 94 student77 Mathematics male 100 65 20 24 student78 Languages female 11 96 90 33 student79 Mathematics male 53 55 93 39 student80 Languages female 1 100 84 44 student81 Mathematics male 63 78 96 43 student82 Languages female 41 69 82 35 student83 Mathematics male 94 98 13 9 student84 Languages female 94 72 91 77 student85 Mathematics male 71 32 45 25 student86 Languages female 9 89 64 37 student87 Mathematics male 89 1 73 67 student88 Languages female 43 41 68 79 student89 Mathematics male 7 38 22 37 student90 Languages female 94 83 93 37 student91 Mathematics male 82 84 2 61 student92 Languages female 46 41 30 69 student93 Mathematics male 47 19 85 83 student94 Languages female 39 14 64 62 student95 Mathematics male 71 31 46 28 student96 Languages female 90 94 45 40 student97 Mathematics male 46 89 2 5 student98 Languages female 41 43 47 99 student99 Mathematics male 71 90 89 73 student100 Languages female 31 64 18 56 student101 Mathematics male 52 13 69 99 student102 Languages female 86 39 83 18 student103 Mathematics male 23 65 98 80 student104 Languages female 78 100 57 66 student105 Mathematics male 69 21 43 97 student106 Languages female 27 2 78 38 student107 Mathematics male 86 96 46 34 student108 Languages female 13 84 66 64 student109 Mathematics male 35 95 98 81 student110 Languages female 30 28 62 54 student111 Mathematics male 60 31 35 85 student112 Languages female 19 81 19 69 student113 Mathematics male 66 5 98 54 student114 Languages female 38 80 40 16 student115 Mathematics male 5 84 96 97 student116 Languages female 59 97 69 54 student117 Mathematics male 0 34 79 49 student118 Languages female 18 7 12 85 student119 Mathematics male 93 87 7 59 student120 Languages female 42 23 26 90 student121 Mathematics male 17 39 66 89 student122 Languages female 26 75 90 18 student123 Mathematics male 34 23 77 80 student124 Languages female 52 6 77 42 student125 Mathematics male 56 2 85 81 student126 Languages female 51 35 67 44 student127 Mathematics male 64 64 44 34 student128 Languages female 67 91 79 82 student129 Mathematics male 4 26 15 79 student130 Languages female 72 10 3 69 student131 Mathematics male 94 77 51 1 student132 Languages female 27 95 85 48 student133 Mathematics male 92 11 40 61 student134 Languages female 4 18 56 60 student135 Mathematics male 8 42 26 52 student136 Languages female 7 60 47 21 student137 Mathematics male 51 81 30 90 student138 Languages female 58 6 16 73 student139 Mathematics male 48 38 37 31 student140 Languages female 33 26 56 60 student141 Mathematics male 84 84 29 75 student142 Languages female 72 35 6 54 student143 Mathematics male 31 42 70 82 student144 Languages female 94 87 50 35 student145 Mathematics male 91 52 80 26 student146 Languages female 78 65 79 79 student147 Mathematics male 50 90 59 71 student148 Languages female 15 68 66 33 student149 Mathematics male 17 36 34 13 student150 Languages female 30 95 69 73 student151 Mathematics male 20 53 49 58 student152 Languages female 19 89 60 60 student153 Mathematics male 52 82 20 3 student154 Languages female 66 98 53 66 student155 Mathematics male 5 85 22 58 student156 Languages female 34 43 68 8 student157 Mathematics male 43 0 91 14 student158 Languages female 34 18 67 31 student159 Mathematics male 79 73 34 52 student160 Languages female 15 61 37 27 student161 Mathematics male 74 77 15 45 student162 Languages female 52 62 19 58 student163 Mathematics male 77 60 27 95 student164 Languages female 96 1 93 57 student165 Mathematics male 51 63 75 19 student166 Languages female 32 44 72 99 student167 Mathematics male 82 84 57 63 student168 Languages female 53 12 85 67 student169 Mathematics male 49 16 84 6 student170 Languages female 39 34 16 65 student171 Mathematics male 100 68 88 4 student172 Languages female 14 25 63 52 student173 Mathematics male 74 26 15 60 student174 Languages female 11 58 8 92 student175 Mathematics male 62 47 2 31 student176 Languages female 65 26 32 42 student177 Mathematics male 83 78 69 24 student178 Languages female 14 100 7 43 student179 Mathematics male 28 35 89 7 student180 Languages female 1 48 39 62 student181 Mathematics male 14 4 24 69 student182 Languages female 64 52 72 2 student183 Mathematics male 15 26 27 85 student184 Languages female 91 49 40 7 student185 Mathematics male 87 89 42 87 student186 Languages female 75 76 61 88 student187 Mathematics male 11 48 66 30 student188 Languages female 73 7 92 72 student189 Mathematics male 98 36 58 15 student190 Languages female 80 2 86 56 student191 Mathematics male 36 33 97 4 student192 Languages female 59 2 33 90 student193 Mathematics male 94 6 19 33 student194 Languages female 82 49 72 42 student195 Mathematics male 80 59 8 30 student196 Languages female 89 17 90 27 student197 Mathematics male 46 22 6 67 student198 Languages female 65 75 73 77 student199 Mathematics male 77 97 54 13 student200 Languages female 78 19 57 96 student201 Mathematics male 92 21 11 80 student202 Languages female 45 49 93 40 student203 Mathematics male 74 25 87 53 student204 Languages female 15 71 23 4 student205 Mathematics male 82 97 95 73 student206 Languages female 82 60 58 98 student207 Mathematics male 26 64 11 100 student208 Languages female 64 9 60 45 student209 Mathematics male 96 81 96 63 student210 Languages female 24 39 0 69 student211 Mathematics male 86 64 7 10 student212 Languages female 7 64 50 7 student213 Mathematics male 59 12 26 77 student214 Languages female 21 25 93 82 student215 Mathematics male 22 18 64 51 student216 Languages female 92 41 98 28 student217 Mathematics male 32 48 14 17 student218 Languages female 62 36 85 56 student219 Mathematics male 33 37 90 87 student220 Languages female 24 43 60 84 student221 Mathematics male 6 59 37 51 student222 Languages female 91 97 5 76 student223 Mathematics male 86 29 32 27 student224 Languages female 63 59 68 91 student225 Mathematics male 57 73 95 68 student226 Languages female 38 54 59 87 student227 Mathematics male 53 62 72 64 student228 Languages female 62 84 72 73 student229 Mathematics male 13 0 83 58 student230 Languages female 35 65 80 87 student231 Mathematics male 76 20 28 50 student232 Languages female 9 17 66 33 student233 Mathematics male 92 2 99 61 student234 Languages female 47 69 98 39 student235 Mathematics male 21 44 38 82 student236 Languages female 19 86 51 78 student237 Mathematics male 28 45 49 36 student238 Languages female 78 19 49 81 student239 Mathematics male 72 69 47 20 student240 Languages female 17 43 66 56 student241 Mathematics male 90 1 94 4 student242 Languages female 6 18 2 51 student243 Mathematics male 1 37 72 13 student244 Languages female 80 0 58 54 student245 Mathematics male 83 31 85 9 student246 Languages female 90 99 29 12 student247 Mathematics male 89 23 81 59 student248 Languages female 72 26 28 3 student249 Mathematics male 28 10 50 47 student250 Languages female 89 14 89 4 student251 Mathematics male 15 23 37 69 student252 Languages female 27 82 10 36 student253 Mathematics male 49 45 64 23 student254 Languages female 79 75 63 74 student255 Mathematics male 2 56 64 75 student256 Languages female 36 26 29 58 student257 Mathematics male 17 22 66 73 student258 Languages female 70 91 97 45 student259 Mathematics male 34 30 78 30 student260 Languages female 77 57 86 77 student261 Mathematics male 12 59 68 7 student262 Languages female 11 60 97 71 student263 Mathematics male 12 30 35 58 student264 Languages female 46 15 23 40 student265 Mathematics male 44 81 9 26 student266 Languages female 15 68 32 15 student267 Mathematics male 5 58 50 98 student268 Languages female 42 30 32 24 student269 Mathematics male 78 100 99 57 student270 Languages female 55 33 87 25 student271 Mathematics male 25 97 29 93 student272 Languages female 39 35 18 43 student273 Mathematics male 35 17 99 58 student274 Languages female 86 52 27 24 student275 Mathematics male 97 38 73 76 student276 Languages female 20 6 19 8 student277 Mathematics male 93 36 9 47 student278 Languages female 42 3 15 2 student279 Mathematics male 61 18 96 2 student280 Languages female 99 89 87 94 student281 Mathematics male 48 95 90 0 student282 Languages female 60 47 31 30 student283 Mathematics male 64 24 10 76 student284 Languages female 99 37 4 68 student285 Mathematics male 0 98 68 69 student286 Languages female 66 82 49 59 student287 Mathematics male 86 14 37 17 student288 Languages female 27 48 93 27 student289 Mathematics male 84 89 6 68 student290 Languages female 99 0 20 57 student291 Mathematics male 50 96 72 42 student292 Languages female 98 2 27 92 student293 Mathematics male 19 9 42 87 student294 Languages female 98 97 9 22 student295 Mathematics male 75 30 77 64 student296 Languages female 51 98 55 3 student297 Mathematics male 25 95 86 72 student298 Languages female 20 75 37 35 student299 Mathematics male 4 92 41 11 student300 Languages female 28 3 28 91 student301 Mathematics male 41 63 4 25 student302 Languages female 29 16 77 90 student303 Mathematics male 89 41 51 82 student304 Languages female 40 91 24 34 student305 Mathematics male 7 47 49 78 student306 Languages female 6 37 55 62 student307 Mathematics male 30 73 34 90 student308 Languages female 82 91 95 93 student309 Mathematics male 62 4 73 82 student310 Languages female 39 10 12 57 student311 Mathematics male 89 64 20 67 student312 Languages female 56 36 92 41 student313 Mathematics male 99 80 99 74 student314 Languages female 31 79 64 93 student315 Mathematics male 53 2 70 55 student316 Languages female 35 15 29 60 student317 Mathematics male 31 47 69 60 student318 Languages female 88 28 13 66 student319 Mathematics male 65 12 16 40 student320 Languages female 28 17 19 40 student321 Mathematics male 24 100 44 70 student322 Languages female 20 59 83 52 student323 Mathematics male 17 60 82 91 student324 Languages female 95 99 43 37 student325 Mathematics male 30 18 99 31 student326 Languages female 34 7 83 86 student327 Mathematics male 98 63 4 35 student328 Languages female 54 23 98 46 student329 Mathematics male 97 93 45 18 student330 Languages female 27 74 0 77 student331 Mathematics male 9 70 41 37 student332 Languages female 52 37 76 20 student333 Mathematics male 74 18 68 19 student334 Languages female 77 100 33 9 student335 Mathematics male 38 53 77 18 student336 Languages female 18 13 26 10 student337 Mathematics male 90 47 87 70 student338 Languages female 38 49 36 74 student339 Mathematics male 100 64 13 72 student340 Languages female 74 25 41 52 student341 Mathematics male 37 13 16 13 student342 Languages female 24 34 15 83 student343 Mathematics male 20 5 67 28 student344 Languages female 45 2 25 72 student345 Mathematics male 19 11 75 35 student346 Languages female 6 58 31 15 student347 Mathematics male 16 66 36 11 student348 Languages female 12 3 95 40 student349 Mathematics male 7 52 74 2 student350 Languages female 88 92 60 55 student351 Mathematics male 92 70 91 45 student352 Languages female 74 76 59 44 student353 Mathematics male 63 69 60 94 student354 Languages female 3 68 55 48 student355 Mathematics male 39 96 21 48 student356 Languages female 41 34 27 5 student357 Mathematics male 64 3 47 33 student358 Languages female 95 14 63 55 student359 Mathematics male 70 100 13 82 student360 Languages female 52 24 100 21 student361 Mathematics male 0 40 86 9 student362 Languages female 0 2 49 32 student363 Mathematics male 23 10 86 94 student364 Languages female 15 3 86 49 student365 Mathematics male 76 23 31 0 student366 Languages female 35 35 78 94 student367 Mathematics male 29 42 43 100 student368 Languages female 66 8 5 10 student369 Mathematics male 74 15 56 83 student370 Languages female 75 43 90 8 student371 Mathematics male 40 60 4 70 student372 Languages female 62 42 17 49 student373 Mathematics male 31 46 44 54 student374 Languages female 30 34 47 87 student375 Mathematics male 9 69 41 52 student376 Languages female 85 43 29 92 student377 Mathematics male 79 0 40 25 student378 Languages female 36 40 72 85 student379 Mathematics male 53 68 88 2 student380 Languages female 87 78 38 79 student381 Mathematics male 89 97 83 38 student382 Languages female 21 19 49 10 student383 Mathematics male 47 12 68 50 student384 Languages female 37 12 49 95 student385 Mathematics male 84 0 88 51 student386 Languages female 89 61 27 48 student387 Mathematics male 10 47 87 61 student388 Languages female 16 9 26 56 student389 Mathematics male 57 33 13 47 student390 Languages female 90 35 77 75 student391 Mathematics male 31 47 47 53 student392 Languages female 9 4 24 12 student393 Mathematics male 61 19 81 7 student394 Languages female 4 57 57 7 student395 Mathematics male 67 29 21 2 student396 Languages female 51 6 45 6 student397 Mathematics male 93 14 77 14 student398 Languages female 1 89 34 27 student399 Mathematics male 93 77 57 91 student400 Languages female 67 77 80 32 student401 Mathematics male 58 89 4 17 student402 Languages female 30 56 0 53 student403 Mathematics male 28 25 32 59 student404 Languages female 62 34 81 64 student405 Mathematics male 29 84 26 23 student406 Languages female 70 8 63 77 student407 Mathematics male 8 65 47 99 student408 Languages female 9 38 10 89 student409 Mathematics male 84 21 46 58 student410 Languages female 21 84 18 49 student411 Mathematics male 27 9 63 40 student412 Languages female 93 0 19 91 student413 Mathematics male 31 92 87 43 student414 Languages female 53 25 98 43 student415 Mathematics male 36 75 80 89 student416 Languages female 37 68 12 54 student417 Mathematics male 25 89 12 53 student418 Languages female 92 2 8 46 student419 Mathematics male 11 28 60 58 student420 Languages female 1 37 35 17 student421 Mathematics male 67 30 38 85 student422 Languages female 68 79 34 41 student423 Mathematics male 72 45 93 41 student424 Languages female 56 46 45 38 student425 Mathematics male 86 21 84 0 student426 Languages female 99 85 41 19 student427 Mathematics male 71 35 3 89 student428 Languages female 22 91 12 16 student429 Mathematics male 15 3 26 93 student430 Languages female 35 46 34 74 student431 Mathematics male 33 83 97 20 student432 Languages female 99 20 3 26 student433 Mathematics male 48 42 83 18 student434 Languages female 44 4 25 30 student435 Mathematics male 78 48 60 45 student436 Languages female 47 57 89 0 student437 Mathematics male 88 12 100 53 student438 Languages female 48 0 51 60 student439 Mathematics male 70 89 85 16 student440 Languages female 71 94 34 33 student441 Mathematics male 68 13 72 18 student442 Languages female 7 53 97 21 student443 Mathematics male 65 36 60 87 student444 Languages female 43 21 24 34 student445 Mathematics male 85 77 65 28 student446 Languages female 61 90 78 91 student447 Mathematics male 92 0 78 12 student448 Languages female 33 30 62 90 student449 Mathematics male 86 16 74 5 student450 Languages female 100 86 24 23 student451 Mathematics male 14 25 6 45 student452 Languages female 86 39 98 88 student453 Mathematics male 72 68 77 19 student454 Languages female 9 45 23 100 student455 Mathematics male 34 67 89 79 student456 Languages female 92 0 47 45 student457 Mathematics male 64 58 26 98 student458 Languages female 43 93 59 100 student459 Mathematics male 82 35 97 81 student460 Languages female 18 35 24 100 student461 Mathematics male 79 80 43 51 student462 Languages female 56 10 17 67 student463 Mathematics male 36 44 14 85 student464 Languages female 26 40 69 2 student465 Mathematics male 59 93 43 78 student466 Languages female 78 84 88 3 student467 Mathematics male 41 37 80 60 student468 Languages female 44 27 97 77 student469 Mathematics male 29 19 64 82 student470 Languages female 50 96 27 46 student471 Mathematics male 49 15 51 45 student472 Languages female 38 35 31 78 student473 Mathematics male 1 80 23 65 student474 Languages female 91 17 23 76 student475 Mathematics male 57 39 35 63 student476 Languages female 33 73 62 14 student477 Mathematics male 96 16 88 40 student478 Languages female 30 63 16 13 student479 Mathematics male 74 39 37 87 student480 Languages female 26 36 94 79 student481 Mathematics male 19 58 65 12 student482 Languages female 73 36 22 48 student483 Mathematics male 78 94 75 7 student484 Languages female 59 51 9 35 student485 Mathematics male 67 71 100 85 student486 Languages female 33 30 15 46 student487 Mathematics male 12 19 16 37 student488 Languages female 80 98 29 14 student489 Mathematics male 70 51 14 31 student490 Languages female 95 38 15 92 student491 Mathematics male 60 31 74 12 student492 Languages female 62 56 90 68 student493 Mathematics male 63 11 29 91 student494 Languages female 41 1 25 20 student495 Mathematics male 60 5 31 44 student496 Languages female 11 35 5 28 student497 Mathematics male 11 96 42 37 student498 Languages female 16 72 79 74 student499 Mathematics male 9 21 22 66 student500 Languages female 34 22 64 34 student501 Mathematics male 50 93 86 61 student502 Languages female 50 22 40 44 student503 Mathematics male 3 8 39 17 student504 Languages female 98 16 93 55 student505 Mathematics male 86 89 36 28 student506 Languages female 16 53 13 50 student507 Mathematics male 57 57 3 38 student508 Languages female 34 79 69 77 student509 Mathematics male 2 4 16 59 student510 Languages female 60 62 99 100 student511 Mathematics male 65 52 52 95 student512 Languages female 58 73 94 1 student513 Mathematics male 39 75 28 76 student514 Languages female 46 6 64 78 student515 Mathematics male 51 60 99 8 student516 Languages female 17 20 12 97 student517 Mathematics male 72 17 96 73 student518 Languages female 92 21 62 27 student519 Mathematics male 50 42 4 33 student520 Languages female 52 37 1 57 student521 Mathematics male 58 40 35 54 student522 Languages female 9 38 57 53 student523 Mathematics male 79 20 18 18 student524 Languages female 1 4 94 27 student525 Mathematics male 95 41 29 98 student526 Languages female 34 59 9 21 student527 Mathematics male 39 66 41 29 student528 Languages female 3 2 81 25 student529 Mathematics male 33 44 37 85 student530 Languages female 69 25 59 79 student531 Mathematics male 13 50 49 52 student532 Languages female 54 83 45 31 student533 Mathematics male 15 24 97 51 student534 Languages female 7 51 69 63 student535 Mathematics male 91 8 38 56 student536 Languages female 50 13 74 80 student537 Mathematics male 54 75 74 10 student538 Languages female 76 39 70 46 student539 Mathematics male 84 72 39 40 student540 Languages female 100 47 2 14 student541 Mathematics male 42 61 1 1 student542 Languages female 57 71 65 61 student543 Mathematics male 78 5 41 34 student544 Languages female 14 76 36 47 student545 Mathematics male 15 19 63 96 student546 Languages female 27 82 33 56 student547 Mathematics male 70 23 96 90 student548 Languages female 61 2 2 78 student549 Mathematics male 22 37 64 36 student550 Languages female 75 96 94 40 student551 Mathematics male 43 8 29 21 student552 Languages female 7 96 87 18 student553 Mathematics male 65 76 52 44 student554 Languages female 41 62 73 54 student555 Mathematics male 25 98 21 40 student556 Languages female 17 70 96 82 student557 Mathematics male 43 91 27 43 student558 Languages female 33 37 24 33 student559 Mathematics male 87 87 10 31 student560 Languages female 48 40 97 74 student561 Mathematics male 63 75 91 55 student562 Languages female 66 82 59 95 student563 Mathematics male 21 95 58 38 student564 Languages female 92 9 97 45 student565 Mathematics male 59 7 94 20 student566 Languages female 64 95 24 12 student567 Mathematics male 70 46 36 74 student568 Languages female 16 25 91 49 student569 Mathematics male 73 33 24 88 student570 Languages female 9 61 95 27 student571 Mathematics male 18 12 76 46 student572 Languages female 61 71 49 63 student573 Mathematics male 46 32 85 17 student574 Languages female 42 42 11 37 student575 Mathematics male 49 76 41 20 student576 Languages female 22 27 80 12 student577 Mathematics male 76 34 18 66 student578 Languages female 96 77 29 17 student579 Mathematics male 62 51 67 72 student580 Languages female 96 67 22 54 student581 Mathematics male 77 11 23 88 student582 Languages female 6 28 24 33 student583 Mathematics male 39 23 12 100 student584 Languages female 10 21 20 71 student585 Mathematics male 11 27 7 100 student586 Languages female 40 34 97 78 student587 Mathematics male 2 51 83 19 student588 Languages female 18 76 30 25 student589 Mathematics male 24 57 46 81 student590 Languages female 2 10 31 94 student591 Mathematics male 91 84 75 13 student592 Languages female 79 44 97 10 student593 Mathematics male 42 60 67 30 student594 Languages female 61 57 75 35 student595 Mathematics male 42 46 81 71 student596 Languages female 92 63 75 74 student597 Mathematics male 86 37 40 51 student598 Languages female 52 10 47 3 student599 Mathematics male 100 28 14 76 student600 Languages female 31 76 20 43 student601 Mathematics male 40 27 6 6 student602 Languages female 5 8 79 21 student603 Mathematics male 7 54 6 91 student604 Languages female 28 30 15 3 student605 Mathematics male 38 93 98 92 student606 Languages female 43 96 89 91 student607 Mathematics male 43 49 14 83 student608 Languages female 50 61 72 98 student609 Mathematics male 4 49 99 83 student610 Languages female 5 36 73 82 student611 Mathematics male 40 84 99 54 student612 Languages female 29 96 65 69 student613 Mathematics male 12 76 5 99 student614 Languages female 47 83 49 4 student615 Mathematics male 37 27 22 4 student616 Languages female 94 39 49 24 student617 Mathematics male 0 75 21 41 student618 Languages female 59 36 4 18 student619 Mathematics male 22 66 13 3 student620 Languages female 43 87 4 48 student621 Mathematics male 100 15 51 52 student622 Languages female 63 71 99 17 student623 Mathematics male 14 34 44 100 student624 Languages female 23 8 57 27 student625 Mathematics male 23 14 32 40 student626 Languages female 34 49 72 54 student627 Mathematics male 21 16 81 26 student628 Languages female 54 69 34 34 student629 Mathematics male 72 11 63 31 student630 Languages female 87 98 9 47 student631 Mathematics male 43 52 53 58 student632 Languages female 50 14 4 20 student633 Mathematics male 89 83 67 87 student634 Languages female 0 79 9 16 student635 Mathematics male 59 17 84 58 student636 Languages female 94 95 36 60 student637 Mathematics male 39 42 63 46 student638 Languages female 0 19 6 10 student639 Mathematics male 50 16 41 71 student640 Languages female 8 60 46 13 student641 Mathematics male 45 85 59 36 student642 Languages female 83 35 0 57 student643 Mathematics male 8 30 60 14 student644 Languages female 76 80 73 38 student645 Mathematics male 26 14 58 2 student646 Languages female 93 16 42 2 student647 Mathematics male 85 94 76 16 student648 Languages female 57 45 32 16 student649 Mathematics male 16 16 90 13 student650 Languages female 43 3 18 87 student651 Mathematics male 16 24 32 44 student652 Languages female 59 98 3 34 student653 Mathematics male 73 18 47 83 student654 Languages female 99 25 100 93 student655 Mathematics male 0 73 97 84 student656 Languages female 0 28 94 75 student657 Mathematics male 65 90 58 63 student658 Languages female 84 35 86 41 student659 Mathematics male 45 39 59 9 student660 Languages female 32 10 31 62 student661 Mathematics male 61 28 54 61 student662 Languages female 70 96 14 54 student663 Mathematics male 63 92 29 8 student664 Languages female 41 10 46 23 student665 Mathematics male 81 91 80 21 student666 Languages female 79 71 65 68 student667 Mathematics male 47 69 18 90 student668 Languages female 26 16 70 0 student669 Mathematics male 66 10 93 35 student670 Languages female 66 68 27 13 student671 Mathematics male 86 79 26 45 student672 Languages female 50 53 25 74 student673 Mathematics male 97 53 9 14 student674 Languages female 28 79 69 42 student675 Mathematics male 60 72 5 9 student676 Languages female 53 21 39 43 student677 Mathematics male 37 65 45 91 student678 Languages female 76 80 60 27 student679 Mathematics male 85 27 34 55 student680 Languages female 66 11 41 17 student681 Mathematics male 27 61 89 82 student682 Languages female 40 26 1 3 student683 Mathematics male 25 1 66 95 student684 Languages female 63 44 85 63 student685 Mathematics male 97 95 78 83 student686 Languages female 51 2 13 87 student687 Mathematics male 63 92 87 23 student688 Languages female 22 96 59 59 student689 Mathematics male 33 80 15 23 student690 Languages female 34 75 19 24 student691 Mathematics male 36 68 48 54 student692 Languages female 32 36 20 12 student693 Mathematics male 68 91 74 50 student694 Languages female 87 91 96 37 student695 Mathematics male 23 9 14 4 student696 Languages female 94 62 9 77 student697 Mathematics male 14 7 45 75 student698 Languages female 73 92 19 90 student699 Mathematics male 8 20 79 78 student700 Languages female 76 35 100 39 student701 Mathematics male 27 51 89 49 student702 Languages female 0 64 72 37 student703 Mathematics male 93 46 94 87 student704 Languages female 69 22 17 2 student705 Mathematics male 17 52 11 3 student706 Languages female 13 2 52 19 student707 Mathematics male 75 61 72 73 student708 Languages female 84 37 7 36 student709 Mathematics male 81 19 45 14 student710 Languages female 62 17 39 27 student711 Mathematics male 88 69 6 81 student712 Languages female 53 82 59 29 student713 Mathematics male 83 34 71 34 student714 Languages female 95 52 61 4 student715 Mathematics male 6 71 53 13 student716 Languages female 82 97 82 5 student717 Mathematics male 65 50 31 46 student718 Languages female 27 46 25 37 student719 Mathematics male 98 42 35 44 student720 Languages female 90 1 44 44 student721 Mathematics male 3 16 82 93 student722 Languages female 34 3 43 70 student723 Mathematics male 59 77 14 21 student724 Languages female 16 53 57 59 student725 Mathematics male 79 1 44 16 student726 Languages female 10 8 19 9 student727 Mathematics male 89 48 79 16 student728 Languages female 8 87 23 87 student729 Mathematics male 17 53 95 84 student730 Languages female 65 52 39 61 student731 Mathematics male 44 30 96 72 student732 Languages female 70 79 32 33 student733 Mathematics male 30 47 46 11 student734 Languages female 76 100 16 49 student735 Mathematics male 39 36 90 89 student736 Languages female 1 94 19 29 student737 Mathematics male 23 73 78 87 student738 Languages female 87 71 44 64 student739 Mathematics male 22 19 82 20 student740 Languages female 94 52 67 39 student741 Mathematics male 14 17 51 87 student742 Languages female 56 63 98 3 student743 Mathematics male 99 92 46 98 student744 Languages female 19 76 83 88 student745 Mathematics male 15 77 68 81 student746 Languages female 48 81 48 38 student747 Mathematics male 29 1 38 61 student748 Languages female 71 63 0 30 student749 Mathematics male 19 68 30 53 student750 Languages female 91 18 27 62 student751 Mathematics male 73 33 38 36 student752 Languages female 99 38 75 50 student753 Mathematics male 55 71 34 90 student754 Languages female 52 40 98 83 student755 Mathematics male 14 63 61 1 student756 Languages female 1 31 94 96 student757 Mathematics male 49 66 55 92 student758 Languages female 0 19 80 82 student759 Mathematics male 26 35 87 3 student760 Languages female 8 28 76 39 student761 Mathematics male 52 11 83 57 student762 Languages female 83 68 84 25 student763 Mathematics male 17 2 56 70 student764 Languages female 17 58 0 84 student765 Mathematics male 75 6 47 85 student766 Languages female 76 32 93 39 student767 Mathematics male 20 75 84 65 student768 Languages female 25 47 12 89 student769 Mathematics male 86 94 79 45 student770 Languages female 65 81 55 35 student771 Mathematics male 62 41 41 43 student772 Languages female 14 4 62 43 student773 Mathematics male 17 55 72 78 student774 Languages female 95 46 35 6 student775 Mathematics male 72 0 56 48 student776 Languages female 30 88 19 56 student777 Mathematics male 42 44 88 56 student778 Languages female 42 69 56 63 student779 Mathematics male 78 57 78 3 student780 Languages female 15 86 24 98 student781 Mathematics male 46 8 43 69 student782 Languages female 67 98 15 52 student783 Mathematics male 33 32 63 57 student784 Languages female 35 95 16 53 student785 Mathematics male 78 54 54 82 student786 Languages female 81 85 91 4 student787 Mathematics male 42 41 23 14 student788 Languages female 59 100 86 36 student789 Mathematics male 1 92 60 12 student790 Languages female 100 34 5 70 student791 Mathematics male 3 81 2 17 student792 Languages female 31 55 19 3 student793 Mathematics male 11 33 98 77 student794 Languages female 4 61 7 86 student795 Mathematics male 57 86 7 27 student796 Languages female 5 74 62 36 student797 Mathematics male 57 67 66 61 student798 Languages female 93 88 87 25 student799 Mathematics male 59 96 64 41 student800 Languages female 62 7 69 23 student801 Mathematics male 35 83 32 55 student802 Languages female 42 58 15 83 student803 Mathematics male 41 90 40 12 student804 Languages female 81 43 83 7 student805 Mathematics male 87 77 33 20 student806 Languages female 53 87 30 37 student807 Mathematics male 13 35 85 16 student808 Languages female 20 82 90 34 student809 Mathematics male 58 2 16 14 student810 Languages female 14 28 23 56 student811 Mathematics male 49 97 36 8 student812 Languages female 31 46 11 63 student813 Mathematics male 74 9 76 43 student814 Languages female 42 83 95 75 student815 Mathematics male 2 65 45 29 student816 Languages female 79 59 69 88 student817 Mathematics male 68 18 26 84 student818 Languages female 39 13 99 15 student819 Mathematics male 22 48 71 6 student820 Languages female 12 53 88 11 student821 Mathematics male 33 90 80 29 student822 Languages female 37 9 54 86 student823 Mathematics male 91 78 85 1 student824 Languages female 31 58 67 31 student825 Mathematics male 22 30 50 98 student826 Languages female 55 58 56 10 student827 Mathematics male 56 76 57 53 student828 Languages female 1 12 98 81 student829 Mathematics male 67 92 66 71 student830 Languages female 30 61 44 49 student831 Mathematics male 0 41 44 61 student832 Languages female 72 52 45 85 student833 Mathematics male 60 99 12 94 student834 Languages female 83 58 75 42 student835 Mathematics male 95 0 53 77 student836 Languages female 33 28 70 62 student837 Mathematics male 39 82 75 5 student838 Languages female 41 100 45 47 student839 Mathematics male 81 69 27 29 student840 Languages female 90 1 26 49 student841 Mathematics male 45 38 20 34 student842 Languages female 3 25 31 1 student843 Mathematics male 55 77 86 49 student844 Languages female 61 60 91 76 student845 Mathematics male 80 85 74 9 student846 Languages female 63 89 73 71 student847 Mathematics male 79 15 97 42 student848 Languages female 99 18 73 43 student849 Mathematics male 30 52 38 56 student850 Languages female 65 86 67 34 student851 Mathematics male 73 43 6 55 student852 Languages female 42 43 51 73 student853 Mathematics male 8 70 98 0 student854 Languages female 29 41 12 45 student855 Mathematics male 57 3 90 90 student856 Languages female 80 52 96 54 student857 Mathematics male 43 83 82 46 student858 Languages female 7 91 71 31 student859 Mathematics male 68 13 70 7 student860 Languages female 51 44 15 52 student861 Mathematics male 91 70 1 78 student862 Languages female 4 11 65 78 student863 Mathematics male 20 63 55 85 student864 Languages female 59 3 87 26 student865 Mathematics male 4 89 44 32 student866 Languages female 26 67 98 39 student867 Mathematics male 48 79 38 66 student868 Languages female 16 32 15 3 student869 Mathematics male 13 20 50 85 student870 Languages female 4 92 20 39 student871 Mathematics male 82 6 23 53 student872 Languages female 6 60 74 64 student873 Mathematics male 66 48 39 14 student874 Languages female 43 83 3 100 student875 Mathematics male 21 49 9 0 student876 Languages female 79 80 71 80 student877 Mathematics male 84 25 26 88 student878 Languages female 38 46 66 60 student879 Mathematics male 35 27 98 51 student880 Languages female 57 59 2 67 student881 Mathematics male 76 87 78 8 student882 Languages female 21 40 8 17 student883 Mathematics male 50 4 68 66 student884 Languages female 83 86 30 92 student885 Mathematics male 63 46 66 94 student886 Languages female 76 71 2 62 student887 Mathematics male 74 18 68 6 student888 Languages female 65 77 44 88 student889 Mathematics male 67 32 61 19 student890 Languages female 85 96 85 41 student891 Mathematics male 14 87 70 5 student892 Languages female 81 28 45 28 student893 Mathematics male 9 19 18 83 student894 Languages female 40 70 2 4 student895 Mathematics male 18 19 51 89 student896 Languages female 70 35 25 12 student897 Mathematics male 72 90 7 41 student898 Languages female 84 1 71 86 student899 Mathematics male 14 2 38 86 student900 Languages female 78 37 60 1 student901 Mathematics male 66 95 31 68 student902 Languages female 23 60 80 65 student903 Mathematics male 76 89 63 96 student904 Languages female 3 46 90 70 student905 Mathematics male 65 44 96 79 student906 Languages female 68 77 8 65 student907 Mathematics male 86 61 99 43 student908 Languages female 88 95 32 13 student909 Mathematics male 53 100 59 82 student910 Languages female 35 7 95 35 student911 Mathematics male 23 0 1 77 student912 Languages female 9 68 72 63 student913 Mathematics male 23 92 39 96 student914 Languages female 94 97 6 58 student915 Mathematics male 49 31 29 71 student916 Languages female 21 57 79 57 student917 Mathematics male 0 35 100 89 student918 Languages female 64 82 75 52 student919 Mathematics male 16 66 69 68 student920 Languages female 92 95 11 27 student921 Mathematics male 16 88 85 90 student922 Languages female 56 15 26 98 student923 Mathematics male 78 27 40 17 student924 Languages female 95 10 44 32 student925 Mathematics male 99 85 52 18 student926 Languages female 73 31 71 49 student927 Mathematics male 21 79 10 63 student928 Languages female 92 71 80 12 student929 Mathematics male 23 29 33 88 student930 Languages female 41 8 98 84 student931 Mathematics male 97 17 79 21 student932 Languages female 72 40 93 92 student933 Mathematics male 75 58 3 26 student934 Languages female 15 98 27 28 student935 Mathematics male 76 88 80 6 student936 Languages female 84 23 42 92 student937 Mathematics male 71 56 86 71 student938 Languages female 7 39 58 22 student939 Mathematics male 1 55 54 60 student940 Languages female 20 31 30 8 student941 Mathematics male 97 54 41 81 student942 Languages female 83 41 86 64 student943 Mathematics male 71 95 32 7 student944 Languages female 0 27 30 91 student945 Mathematics male 99 75 17 22 student946 Languages female 92 53 10 90 student947 Mathematics male 4 44 94 32 student948 Languages female 0 97 48 79 student949 Mathematics male 97 55 79 74 student950 Languages female 65 98 9 32 student951 Mathematics male 56 73 38 81 student952 Languages female 84 94 61 50 student953 Mathematics male 48 20 77 0 student954 Languages female 39 98 14 20 student955 Mathematics male 4 15 24 65 student956 Languages female 78 22 92 31 student957 Mathematics male 28 38 26 54 student958 Languages female 49 61 35 54 student959 Mathematics male 81 15 28 17 student960 Languages female 54 80 58 2 student961 Mathematics male 75 23 5 37 student962 Languages female 55 65 1 20 student963 Mathematics male 86 42 70 36 student964 Languages female 54 45 54 80 student965 Mathematics male 38 18 69 92 student966 Languages female 33 89 46 83 student967 Mathematics male 43 9 55 76 student968 Languages female 13 26 12 86 student969 Mathematics male 94 22 85 59 student970 Languages female 93 58 6 10 student971 Mathematics male 35 72 85 36 student972 Languages female 37 51 96 93 student973 Mathematics male 71 10 79 59 student974 Languages female 71 31 73 93 student975 Mathematics male 80 26 86 97 student976 Languages female 69 21 67 69 student977 Mathematics male 38 86 10 39 student978 Languages female 48 90 39 81 student979 Mathematics male 90 83 3 42 student980 Languages female 19 1 91 84 student981 Mathematics male 98 25 50 46 student982 Languages female 38 88 21 16 student983 Mathematics male 71 48 18 43 student984 Languages female 79 85 18 16 student985 Mathematics male 51 66 90 68 student986 Languages female 100 95 65 91 student987 Mathematics male 6 74 24 24 student988 Languages female 93 80 94 35 student989 Mathematics male 65 78 57 94 student990 Languages female 27 92 21 91 student991 Mathematics male 77 15 26 76 student992 Languages female 28 84 51 67 student993 Mathematics male 3 78 62 50 student994 Languages female 59 77 20 74 student995 Mathematics male 62 66 8 75 student996 Languages female 88 70 33 43 student997 Mathematics male 73 33 42 53 student998 Languages female 64 10 2 31 student999 Mathematics male 91 93 16 35 student1000 Languages female 30 68 95 40 student1001 Mathematics male 25 2 48 32 student1002 Languages female 50 77 53 81 student1003 Mathematics male 67 44 10 65 student1004 Languages female 29 53 34 86 student1005 Mathematics male 77 69 22 75 student1006 Languages female 48 82 95 40 student1007 Mathematics male 30 71 29 63 student1008 Languages female 45 31 4 71 student1009 Mathematics male 81 12 20 44 student1010 Languages female 17 66 82 42 student1011 Mathematics male 15 11 32 18 student1012 Languages female 27 34 59 19 student1013 Mathematics male 18 67 25 14 student1014 Languages female 24 64 52 24 student1015 Mathematics male 36 87 48 46 student1016 Languages female 33 1 70 68 student1017 Mathematics male 48 26 3 80 student1018 Languages female 53 63 85 57 student1019 Mathematics male 58 73 0 24 student1020 Languages female 85 90 81 0 student1021 Mathematics male 69 28 52 76 student1022 Languages female 75 22 7 52
+
+
+
+
Javascript
+
+
HTML
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/example-widgets.html b/js/tablesorter/docs/example-widgets.html
new file mode 100644
index 0000000..8077226
--- /dev/null
+++ b/js/tablesorter/docs/example-widgets.html
@@ -0,0 +1,383 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0 - Writing custom widgets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Javascript
+
+// add new widget called repeatHeaders
+$.tablesorter.addWidget({
+ // give the widget a id
+ id: "repeatHeaders",
+ // format is called when the on init and when a sorting has finished
+ format: function(table) {
+ // cache and collect all TH headers
+ if(!this.headers) {
+ var h = this.headers = [];
+ $("thead th",table).each(function() {
+ h.push(
+ "" + $(this).text() + " "
+ );
+
+ });
+ }
+
+ // remove appended headers by classname.
+ $("tr.repated-header",table).remove();
+
+ // loop all tr elements and insert a copy of the "headers"
+ for(var i=0; i < table.tBodies[0].rows.length; i++) {
+ // insert a copy of the table head every 10th row
+ if((i%5) == 4) {
+ $("tbody tr:eq(" + i + ")",table).before(
+ $(" ").html(this.headers.join(""))
+
+ );
+ }
+ }
+ }
+});
+
+// call the tablesorter plugin and assign widgets with id "zebra" (Default widget in the core) and the newly created "repeatHeaders"
+$("table").tablesorter({
+ widgets: ['zebra','repeatHeaders']
+});
+
+
+
Demo
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/img/external.png b/js/tablesorter/docs/img/external.png
new file mode 100644
index 0000000..419c06f
Binary files /dev/null and b/js/tablesorter/docs/img/external.png differ
diff --git a/js/tablesorter/docs/index.html b/js/tablesorter/docs/index.html
new file mode 100644
index 0000000..b366cec
--- /dev/null
+++ b/js/tablesorter/docs/index.html
@@ -0,0 +1,559 @@
+
+
+
+ jQuery plugin: Tablesorter 2.0
+
+
+
+
+
+
+
+
+
+
+
tablesorter
+
Documentation
+
Flexible client-side table sorting
+
+
+
+
+
+
+
+
+ Author: Christian Bach
+ Version: 2.0.3 (changelog )
+ Licence:
+ Dual licensed under MIT
+ or GPL licenses.
+
+
+
+ Helping out! If you like tablesorter and you're feeling generous, take a look at my Amazon Wish List
+
+
+
Comments and love letters can be sent to: christian at tablesorter dot com .
+
+
+
+
+
+
+
+
Contents
+
+ Introduction
+ Demo
+ Getting started
+
+ Examples
+
+ Configuration
+ Download
+ Compatibility
+ Support
+ Credits
+
+
+
+
Introduction
+
+ tablesorter is a jQuery plugin for turning a
+ standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes.
+ tablesorter can successfully parse and sort many types of data including linked data in a cell.
+ It has many useful features including:
+
+
+
+ Multi-column sorting
+ Parsers for sorting text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats), time. Add your own easily
+ Support for ROWSPAN and COLSPAN on TH elements
+ Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria)
+ Extensibility via widget system
+ Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+
+ Small code size
+
+
+
+
+
Demo
+
+
+
+
+ First Name
+ Last Name
+ Age
+ Total
+ Discount
+ Difference
+ Date
+
+
+
+
+ Peter
+ Parker
+ 28
+ $9.99
+ 20.9%
+ +12.1
+ Jul 6, 2006 8:14 AM
+
+
+ John
+ Hood
+ 33
+ $19.99
+ 25%
+ +12
+ Dec 10, 2002 5:14 AM
+
+
+ Clark
+ Kent
+ 18
+ $15.89
+ 44%
+ -26
+ Jan 12, 2003 11:14 AM
+
+
+ Bruce
+ Almighty
+ 45
+ $153.19
+ 44.7%
+ +77
+ Jan 18, 2001 9:12 AM
+
+
+ Bruce
+ Evans
+ 22
+ $13.19
+ 11%
+ -100.9
+ Jan 18, 2007 9:12 AM
+
+
+
+
+
+ TIP! Sort multiple columns simultaneously by holding down the shift key and clicking a second, third or even fourth column header!
+
+
+
+
+
Getting started
+
+ To use the tablesorter plugin, include the jQuery
+ library and the tablesorter plugin inside the <head>
tag
+ of your HTML document:
+
+
+
+<script type="text/javascript" src="/path/to/jquery-latest.js"></script>
+<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>
+
+
+
+
tablesorter works on standard HTML tables. You must include THEAD and TBODY tags:
+
+
+<table id="myTable">
+<thead>
+<tr>
+ <th>Last Name</th>
+ <th>First Name</th>
+ <th>Email</th>
+ <th>Due</th>
+ <th>Web Site</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Smith</td>
+ <td>John</td>
+ <td>jsmith@gmail.com</td>
+ <td>$50.00</td>
+ <td>http://www.jsmith.com</td>
+</tr>
+<tr>
+ <td>Bach</td>
+ <td>Frank</td>
+ <td>fbach@yahoo.com</td>
+ <td>$50.00</td>
+ <td>http://www.frank.com</td>
+</tr>
+<tr>
+ <td>Doe</td>
+ <td>Jason</td>
+ <td>jdoe@hotmail.com</td>
+ <td>$100.00</td>
+ <td>http://www.jdoe.com</td>
+</tr>
+<tr>
+ <td>Conway</td>
+ <td>Tim</td>
+ <td>tconway@earthlink.net</td>
+ <td>$50.00</td>
+ <td>http://www.timconway.com</td>
+</tr>
+</tbody>
+</table>
+
+
+
+
Start by telling tablesorter to sort your table when the document is loaded:
+
+
+
+
+
+$(document).ready(function()
+ {
+ $("#myTable").tablesorter();
+ }
+);
+
+
+
+ Click on the headers and you'll see that your table is now sortable! You can
+ also pass in configuration options when you initialize the table. This tells
+ tablesorter to sort on the first and second column in ascending order.
+
+
+
+
+
+$(document).ready(function()
+ {
+ $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} );
+ }
+);
+
+
+
+ NOTE! tablesorter will auto-detect most data types including numbers, dates, ip-adresses for more information see Examples
+
+
+
+
+
+
+
+
Examples
+
+ These examples will show what's possible with tablesorter. You need Javascript enabled to
+ run these samples, just like you and your users will need Javascript enabled to use tablesorter.
+
+
+
Basic
+
+
Metadata - setting inline options
+
+
+
Advanced
+
+
+
Companion plugins
+
+
+
+
+
+
+
+
+
Configuration
+
+
+ tablesorter has many options you can pass in at initialization to achieve different effects:
+
+
+
+
+
+
+
+ Property
+ Type
+ Default
+ Description
+ Link
+
+
+
+
+ sortList
+ Array
+ null
+ An array of instructions for per-column sorting and direction in the format: [[columnIndex, sortDirection], ... ]
where columnIndex is a zero-based index for your columns left-to-right and sortDirection is 0 for Ascending and 1 for Descending. A valid argument that sorts ascending first by column 1 and then column 2 looks like: [[0,0],[1,0]]
+ Example
+
+
+
+ sortMultiSortKey
+ String
+ shiftKey
+ The key used to select more than one column for multi-column sorting. Defaults to the shift key. Other options might be ctrlKey, altKey. Reference: http://developer.mozilla.org/en/docs/DOM:event#Properties
+
+ Example
+
+
+ textExtraction
+ String Or Function
+ simple
+
+ Defines which method is used to extract data from a table cell for sorting.
+ Built-in options include "simple" and "complex". Use complex if you have data marked up
+ inside of a table cell like: <td><strong><em>123 Main Street</em></strong></td>
.
+ Complex can be slow in large tables so consider writing your own text extraction function "myTextExtraction" which you define like:
+
+var myTextExtraction = function(node)
+{
+ // extract data from markup and return it
+ return node.childNodes[0].childNodes[0].innerHTML;
+}
+$(document).ready(function()
+ {
+ $("#myTable").tableSorter( {textExtraction: myTextExtraction} );
+ }
+);
+
+
+ tablesorter will pass a jQuery object containing the contents of the current cell for you to parse and return. Thanks to Josh Nathanson for the examples.
+
+ Example
+
+
+ headers
+ Object
+ null
+
+ An object of instructions for per-column controls in the format: headers: { 0: { option: setting }, ... }
For example, to disable
+ sorting on the first two columns of a table: headers: { 0: { sorter: false}, 1: {sorter: false} }
+
+ Example
+
+
+ sortForce
+ Array
+ null
+ Use to add an additional forced sort that will be appended to the dynamic selections by the user. For example, can be used to sort people alphabetically after some other user-selected sort that results in rows with the same value like dates or money due. It can help prevent data from appearing as though it has a random secondary sort.
+ Example
+
+
+ widthFixed
+ Boolean
+ false
+ Indicates if tablesorter should apply fixed widths to the table columns. This is useful for the Pager companion. Requires the jQuery dimension plugin to work.
+ Example
+
+
+ cancelSelection
+ Boolean
+ true
+ Indicates if tablesorter should disable selection of text in the table header (TH). Makes header behave more like a button.
+
+
+
+ cssHeader
+ String
+ "header"
+ The CSS style used to style the header in its unsorted state. Example from the blue skin:
+
+th.header {
+ background-image: url(../img/small.gif);
+ cursor: pointer;
+ font-weight: bold;
+ background-repeat: no-repeat;
+ background-position: center left;
+ padding-left: 20px;
+ border-right: 1px solid #dad9c7;
+ margin-left: -1px;
+}
+
+
+
+
+
+ cssAsc
+ String
+ "headerSortUp"
+ The CSS style used to style the header when sorting ascending. Example from the blue skin:
+
+th.headerSortUp {
+ background-image: url(../img/small_asc.gif);
+ background-color: #3399FF;
+}
+
+
+
+
+
+ cssDesc
+ String
+ "headerSortDown"
+ The CSS style used to style the header when sorting descending. Example from the blue skin:
+
+th.headerSortDown {
+ background-image: url(../img/small_desc.gif);
+ background-color: #3399FF;
+}
+
+
+
+
+
+ debug
+ Boolean
+ false
+
+ Boolean flag indicating if tablesorter should display debuging information usefull for development.
+
+ Example
+
+
+
+
+
+
+
+
Download
+
+
Full release - Plugin, Documentation, Add-ons, Themes jquery.tablesorter.zip
+
+
+
Pick n choose - Place at least the required files in a directory on your webserver that is accessible to a web browser. Record this location.
+
+
Required:
+
+
+
Optional/Add-Ons:
+
+
+
Widgets:
+
+
+
Themes:
+
+ Green Skin - Images and CSS styles for green themed headers
+ Blue Skin - Images and CSS styles for blue themed headers (as seen in the examples)
+
+
+
+
Browser Compatibility
+
+
tablesorter has been tested successfully in the following browsers with Javascript enabled:
+
+ Firefox 2+
+ Internet Explorer 6+
+ Safari 2+
+ Opera 9+
+ Konqueror
+
+
+
jQuery Browser Compatibility
+
+
+
+
+
+
Support
+
+ Support is available through the
+ jQuery Mailing List .
+
+
Access to the jQuery Mailing List is also available through Nabble Forums .
+
+
+
+
Credits
+
+ Written by Christian Bach .
+
+
+ Documentation written by Brian Ghidinelli ,
+ based on Mike Alsup's great documention.
+
+
+ John Resig for the fantastic jQuery
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/docs/js/chili/chili-1.8b.js b/js/tablesorter/docs/js/chili/chili-1.8b.js
new file mode 100644
index 0000000..c066040
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/chili-1.8b.js
@@ -0,0 +1,392 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+
+===============================================================================
+Metaobjects is the jQuery metadata plugin on steroids
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/metaobjects/
+===============================================================================
+*/
+
+//-----------------------------------------------------------------------------
+( function($) {
+
+ChiliBook = { //implied global
+
+ version: "1.8b" // 2007-05-26
+
+ , automatic: true
+ , automaticSelector: "code"
+
+ , codeLanguage: function( el ) {
+ var recipeName = $( el ).attr( "class" );
+ return recipeName ? recipeName : '';
+ }
+
+ , metadataSelector: "object.chili" // use an empty string for not executing
+
+ , recipeLoading: true
+ , recipeFolder: "" // used like: recipeFolder + recipeName + '.js'
+ , stylesheetLoading: true
+ , stylesheetFolder: "" // used like: stylesheetFolder + recipeName + '.css'
+
+ , defaultReplacement: '$$ '
+
+ , replaceSpace: " " // use an empty string for not replacing
+ , replaceTab: " " // use an empty string for not replacing
+ , replaceNewLine: " " // use an empty string for not replacing
+
+ , recipes: {} //repository
+ , queue: {} //register
+
+ //fix for IE: copy of PREformatted text strips off all html, losing newlines
+ , preFixCopy: document.selection && document.selection.createRange
+ , preContent: ""
+ , preElement: null
+};
+
+
+$.metaobjects = function( options ) {
+
+ options = $.extend( {
+ context: document
+ , clean: true
+ , selector: 'object.metaobject'
+ }, options );
+
+ function jsValue( value ) {
+ eval( 'value = ' + value + ";" );
+ return value;
+ }
+
+ return $( options.selector, options.context )
+ .each( function() {
+
+ var settings = { target: this.parentNode };
+ $( '> param[@name=metaparam]', this )
+ .each( function() {
+ $.extend( settings, jsValue( this.value ) );
+ } );
+
+ $( '> param', this )
+ .not( '[@name=metaparam]' )
+ .each( function() {
+ var name = this.name, value = jsValue( this.value );
+ $( settings.target )
+ .each( function() {
+ this[ name ] = value;
+ } );
+ } );
+
+ if( options.clean ) {
+ $( this ).remove();
+ }
+ } );
+};
+
+$.fn.chili = function( options ) {
+ var book = $.extend( {}, ChiliBook, options || {} );
+
+ function cook( ingredients, recipe ) {
+
+ function prepareStep( stepName, step ) {
+ var exp = ( typeof step.exp == "string" ) ? step.exp : step.exp.source;
+ steps.push( {
+ stepName: stepName
+ , exp: "(" + exp + ")"
+ , length: 1 // add 1 to account for the newly added parentheses
+ + (exp // count number of submatches in here
+ .replace( /\\./g, "%" ) // disable any escaped character
+ .replace( /\[.*?\]/g, "%" ) // disable any character class
+ .match( /\((?!\?)/g ) // match any open parenthesis, not followed by a ?
+ || [] // make sure it is an empty array if there are no matches
+ ).length // get the number of matches
+ , replacement: (step.replacement) ? step.replacement : book.defaultReplacement
+ } );
+ } // function prepareStep( stepName, step )
+
+ function knowHow() {
+ var prevLength = 0;
+ var exps = new Array;
+ for (var i = 0; i < steps.length; i++) {
+ var exp = steps[ i ].exp;
+ // adjust backreferences
+ exp = exp.replace( /\\\\|\\(\d+)/g, function( m, aNum ) {
+ return !aNum ? m : "\\" + ( prevLength + 1 + parseInt( aNum, 10 ) );
+ } );
+ exps.push( exp );
+ prevLength += steps[ i ].length;
+ }
+ var source = exps.join( "|" );
+ return new RegExp( source, (recipe.ignoreCase) ? "gi" : "g" );
+ } // function knowHow()
+
+ function escapeHTML( str ) {
+ return str.replace( /&/g, "&" ).replace( / 1 ) {
+ return;
+ }
+ var ingredients = el.childNodes[0] && el.childNodes[0].data;
+ if( ! ingredients ) {
+ return;
+ }
+ // hack for IE: \r is used instead of \n
+ ingredients = ingredients.replace(/\r\n?/g, "\n");
+
+ var dish = cook( ingredients, recipe ); // all happens here
+
+ if( book.replaceTab ) {
+ dish = dish.replace( /\t/g, book.replaceTab );
+ }
+ if( book.replaceNewLine ) {
+ dish = dish.replace( /\n/g, book.replaceNewLine );
+ }
+
+ $( el ).html( dish );
+ if( ChiliBook.preFixCopy ) {
+ $( el )
+ .parents()
+ .filter( "pre" )
+ .bind( "mousedown", function() {
+ ChiliBook.preElement = this;
+ } )
+ .bind( "mouseup", function() {
+ if( ChiliBook.preElement == this ) {
+ ChiliBook.preContent = document.selection.createRange().htmlText;
+ }
+ } )
+ ;
+ }
+ } // function makeDish( el )
+
+ function getPath( recipeName, options ) {
+ var settingsDef = {
+ recipeFolder: book.recipeFolder
+ , recipeFile: recipeName + ".js"
+ , stylesheetFolder: book.stylesheetFolder
+ , stylesheetFile: recipeName + ".css"
+ };
+ var settings;
+ if( options && typeof options == "object" ) {
+ settings = $.extend( settingsDef, options );
+ }
+ else {
+ settings = settingsDef;
+ }
+ return {
+ recipe : settings.recipeFolder + settings.recipeFile
+ , stylesheet: settings.stylesheetFolder + settings.stylesheetFile
+ };
+ } //function getPath( recipeName, options )
+
+//-----------------------------------------------------------------------------
+// initializations
+ if( book.metadataSelector ) {
+ $.metaobjects( { context: this, selector: book.metadataSelector } );
+ }
+
+//-----------------------------------------------------------------------------
+// the coloring starts here
+ this
+ .each( function() {
+ var el = this;
+ var recipeName = book.codeLanguage( el );
+ if( '' != recipeName ) {
+ var path = getPath( recipeName, el.chili );
+ if( book.recipeLoading || el.chili ) {
+ /* dynamic setups come here */
+ if( ! book.queue[ path.recipe ] ) {
+ /* this is a new recipe to download */
+ try {
+ book.queue[ path.recipe ] = [ el ];
+ $.getJSON( path.recipe, function( recipeLoaded ) {
+ recipeLoaded.path = path.recipe;
+ book.recipes[ path.recipe ] = recipeLoaded;
+ if( book.stylesheetLoading ) {
+ checkCSS( path.stylesheet );
+ }
+ var q = book.queue[ path.recipe ];
+ for( var i = 0, iTop = q.length; i < iTop; i++ ) {
+ makeDish( q[ i ], path.recipe );
+ }
+ } );
+ }
+ catch( recipeNotAvailable ) {
+ alert( "the recipe for '" + recipeName + "' was not found in '" + path.recipe + "'" );
+ }
+ }
+ else {
+ /* not a new recipe, so just enqueue this element */
+ book.queue[ path.recipe ].push( el );
+ }
+ /* a recipe could have been already downloaded */
+ makeDish( el, path.recipe );
+ }
+ else {
+ /* static setups come here */
+ makeDish( el, path.recipe );
+ }
+ }
+ } );
+
+ return this;
+//-----------------------------------------------------------------------------
+};
+
+//main
+$( function() {
+
+ if( ChiliBook.automatic ) {
+ if( ChiliBook.elementPath ) {
+ //preserve backward compatibility
+ ChiliBook.automaticSelector = ChiliBook.elementPath;
+ if( ChiliBook.elementClass ) {
+ ChiliBook.codeLanguage = function ( el ) {
+ var selectClass = new RegExp( "\\b" + ChiliBook.elementClass + "\\b", "gi" );
+ var elClass = $( el ).attr( "class" );
+ if( ! elClass ) {
+ return '';
+ }
+ var recipeName = $.trim( elClass.replace( selectClass, "" ) );
+ return recipeName;
+ };
+ }
+ }
+
+ $( ChiliBook.automaticSelector ).chili();
+ }
+
+ if( ChiliBook.preFixCopy ) {
+ function preformatted( text ) {
+ if( '' == text ) {
+ return "";
+ }
+ do {
+ var newline_flag = (new Date()).valueOf();
+ }
+ while( text.indexOf( newline_flag ) > -1 );
+ text = text.replace( /\ ]*?\>/ig, newline_flag );
+ var el = document.createElement( '' );
+ el.innerHTML = text;
+ text = el.innerText.replace( new RegExp( newline_flag, "g" ), '\r\n' );
+ return text;
+ }
+
+ $( "body" )
+ .bind( "copy", function() {
+ if( '' != ChiliBook.preContent ) {
+ window.clipboardData.setData( 'Text', preformatted( ChiliBook.preContent ) );
+ event.returnValue = false;
+ }
+ } )
+ .bind( "mousedown", function() {
+ ChiliBook.preContent = "";
+ } )
+ .bind( "mouseup", function() {
+ ChiliBook.preElement = null;
+ } )
+ ;
+ }
+
+} );
+
+} ) ( jQuery );
diff --git a/js/tablesorter/docs/js/chili/chili-1.8b.pack.js b/js/tablesorter/docs/js/chili/chili-1.8b.pack.js
new file mode 100644
index 0000000..21758e2
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/chili-1.8b.pack.js
@@ -0,0 +1 @@
+(function($){ChiliBook={version:"1.8b",automatic:true,automaticSelector:"code",codeLanguage:function(el){var recipeName=$(el).attr("class");return recipeName?recipeName:''},metadataSelector:"object.chili",recipeLoading:true,recipeFolder:"",stylesheetLoading:true,stylesheetFolder:"",defaultReplacement:'$$ ',replaceSpace:" ",replaceTab:" ",replaceNewLine:" ",recipes:{},queue:{},preFixCopy:document.selection&&document.selection.createRange,preContent:"",preElement:null};$.metaobjects=function(options){options=$.extend({context:document,clean:true,selector:'object.metaobject'},options);function jsValue(value){eval('value = '+value+";");return value}return $(options.selector,options.context).each(function(){var settings={target:this.parentNode};$('> param[@name=metaparam]',this).each(function(){$.extend(settings,jsValue(this.value))});$('> param',this).not('[@name=metaparam]').each(function(){var name=this.name,value=jsValue(this.value);$(settings.target).each(function(){this[name]=value})});if(options.clean){$(this).remove()}})};$.fn.chili=function(options){var book=$.extend({},ChiliBook,options||{});function cook(ingredients,recipe){function prepareStep(stepName,step){var exp=(typeof step.exp=="string")?step.exp:step.exp.source;steps.push({stepName:stepName,exp:"("+exp+")",length:1+(exp.replace(/\\./g,"%").replace(/\[.*?\]/g,"%").match(/\((?!\?)/g)||[]).length,replacement:(step.replacement)?step.replacement:book.defaultReplacement})}function knowHow(){var prevLength=0;var exps=new Array;for(var i=0;i1){return}var ingredients=el.childNodes[0]&&el.childNodes[0].data;if(!ingredients){return}ingredients=ingredients.replace(/\r\n?/g,"\n");var dish=cook(ingredients,recipe);if(book.replaceTab){dish=dish.replace(/\t/g,book.replaceTab)}if(book.replaceNewLine){dish=dish.replace(/\n/g,book.replaceNewLine)}$(el).html(dish);if(ChiliBook.preFixCopy){$(el).parents().filter("pre").bind("mousedown",function(){ChiliBook.preElement=this}).bind("mouseup",function(){if(ChiliBook.preElement==this){ChiliBook.preContent=document.selection.createRange().htmlText}})}}function getPath(recipeName,options){var settingsDef={recipeFolder:book.recipeFolder,recipeFile:recipeName+".js",stylesheetFolder:book.stylesheetFolder,stylesheetFile:recipeName+".css"};var settings;if(options&&typeof options=="object"){settings=$.extend(settingsDef,options)}else{settings=settingsDef}return{recipe:settings.recipeFolder+settings.recipeFile,stylesheet:settings.stylesheetFolder+settings.stylesheetFile}}if(book.metadataSelector){$.metaobjects({context:this,selector:book.metadataSelector})}$(this).each(function(){var el=this;var recipeName=book.codeLanguage(el);if(''!=recipeName){var path=getPath(recipeName,el.chili);if(book.recipeLoading||el.chili){if(!book.queue[path.recipe]){try{book.queue[path.recipe]=[el];$.getJSON(path.recipe,function(recipeLoaded){recipeLoaded.path=path.recipe;book.recipes[path.recipe]=recipeLoaded;if(book.stylesheetLoading){checkCSS(path.stylesheet)}var q=book.queue[path.recipe];for(var i=0,iTop=q.length;i-1);text=text.replace(/\ ]*?\>/ig,newline_flag);var el=document.createElement('');el.innerHTML=text;text=el.innerText.replace(new RegExp(newline_flag,"g"),'\r\n');return text}$("body").bind("copy",function(){if(''!=ChiliBook.preContent){window.clipboardData.setData('Text',preformatted(ChiliBook.preContent));event.returnValue=false}}).bind("mousedown",function(){ChiliBook.preContent=""}).bind("mouseup",function(){ChiliBook.preElement=null})}})})(jQuery);
\ No newline at end of file
diff --git a/js/tablesorter/docs/js/chili/cplusplus.css b/js/tablesorter/docs/js/chili/cplusplus.css
new file mode 100644
index 0000000..4770735
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/cplusplus.css
@@ -0,0 +1,18 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+.cplusplus .mlcom { color: #4040c2; }
+.cplusplus .com { color: green; }
+.cplusplus .string { color: teal; }
+.cplusplus .keyword { color: navy; font-weight: bold; }
+.cplusplus .datatype { color: blue; }
+.cplusplus .preproc { color: red; }
+.cplusplus .number { color: red; }
diff --git a/js/tablesorter/docs/js/chili/cplusplus.js b/js/tablesorter/docs/js/chili/cplusplus.js
new file mode 100644
index 0000000..5cc6b5b
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/cplusplus.js
@@ -0,0 +1,22 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+{
+ steps: {
+ mlcom : { exp: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\// }
+ , com : { exp: /\/\/.*/ }
+ , preproc : { exp: /[\^\n]\s*#\w+/ }
+ , string : { exp: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/ }
+ , number : { exp: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/ }
+ , datatype: { exp: /\b(?:ATOM|BOOL|BOOLEAN|BYTE|CHAR|COLORREF|DWORD|DWORD32|DWORD64|DWORDLONG|DWORD_PTR|FILE|FLOAT|HACCEL|HALF_PTR|HANDLE|HBITMAP|HBRUSH|HCOLORSPACE|HCONV|HCONVLIST|HCURSOR|HDC|HDDEDATA|HDESK|HDROP|HDWP|HENHMETAFILE|HFILE|HFONT|HGDIOBJ|HGLOBAL|HHOOK|HICON|HINSTANCE|HKEY|HKL|HLOCAL|HMENU|HMETAFILE|HMODULE|HMONITOR|HPALETTE|HPEN|HRESULT|HRGN|HRSRC|HSZ|HWINSTA|HWND|INT|INT32|INT64|INT_PTR|LANGID|LCID|LCTYPE|LGRPID|LONG|LONG32|LONG64|LONGLONG|LONG_PTR|LPARAM|LPBOOL|LPBYTE|LPCOLORREF|LPCSTR|LPCTSTR|LPCVOID|LPCWSTR|LPDWORD|LPHANDLE|LPINT|LPLONG|LPSTR|LPTSTR|LPVOID|LPWORD|LPWSTR|LRESULT|PBOOL|PBOOLEAN|PBYTE|PCHAR|PCSTR|PCTSTR|PCWSTR|PDWORD32|PDWORD64|PDWORDLONG|PDWORD_PTR|PFLOAT|PHALF_PTR|PHANDLE|PHKEY|PINT|PINT32|PINT64|PINT_PTR|PLCID|PLONG|PLONG32|PLONG64|PLONGLONG|PLONG_PTR|POINTER_32|POINTER_64|PSHORT|PSIZE_T|PSSIZE_T|PSTR|PTBYTE|PTCHAR|PTSTR|PUCHAR|PUHALF_PTR|PUINT|PUINT32|PUINT64|PUINT_PTR|PULONG|PULONG32|PULONG64|PULONGLONG|PULONG_PTR|PUSHORT|PVOID|PWCHAR|PWORD|PWSTR|SC_HANDLE|SC_LOCK|SERVICE_STATUS_HANDLE|SHORT|SIZE_T|SSIZE_T|TBYTE|TCHAR|UCHAR|UHALF_PTR|UINT|UINT32|UINT64|UINT_PTR|ULONG|ULONG32|ULONG64|ULONGLONG|ULONG_PTR|USHORT|USN|VOID|WCHAR|WORD|WPARAM|_EXCEPTION_POINTERS|_FPIEEE_RECORD|_HEAPINFO|_HFILE|_PNH|__finddata64_t|__int16|__int32|__int64|__int8|__stat64|__time64_t|__timeb64|__wchar_t|__wfinddata64_t|_complex|_dev_t|_diskfree_t|_exception|_finddata_t|_finddatai64_t|_off_t|_onexit_t|_purecall_handler|_stat|_stati64|_timeb|_utimbuf|_wfinddata_t|_wfinddatai64_t|bool|char|clock_t|div_t|double|float|fpos_t|int|intptr_t|jmp_buf|lconv|ldiv_t|long|mbstate_t|ptrdiff_t|short|sig_atomic_t|signed|size_t|terminate_function|time_t|tm|uintptr_t|va_list|wchar_t|wctrans_t|wctype_t|wint_t)\b/ }
+ , keyword : { exp: /\b(?:__declspec|__exception|__finally|__try|break|case|catch|class|const|const_cast|continue|default|delete|deprecated|dllexport|dllimport|do|dynamic_cast|else|enum|explicit|extern|false|for|friend|goto|if|inline|mutable|naked|namespace|new|noinline|noreturn|nothrow|private|protected|public|register|reinterpret_cast|return|selectany|sizeof|static|static_cast|struct|switch|template|this|thread|throw|true|try|typedef|typeid|typename|union|using|uuid|virtual|void|volatile|whcar_t|while)\b/ }
+ }
+}
diff --git a/js/tablesorter/docs/js/chili/csharp.css b/js/tablesorter/docs/js/chili/csharp.css
new file mode 100644
index 0000000..f34c628
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/csharp.css
@@ -0,0 +1,17 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+.csharp .mlcom { color: #4040c2; }
+.csharp .com { color: green; }
+.csharp .string { color: teal; }
+.csharp .keyword { color: navy; font-weight: bold; }
+.csharp .preproc { color: red; }
+.csharp .number { color: red; }
diff --git a/js/tablesorter/docs/js/chili/csharp.js b/js/tablesorter/docs/js/chili/csharp.js
new file mode 100644
index 0000000..005a3a6
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/csharp.js
@@ -0,0 +1,21 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+{
+ steps: {
+ mlcom : { exp: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\// }
+ , com : { exp: /\/\/.*/ }
+ , string : { exp: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/ }
+ , preproc: { exp: /^\s*#.*/ }
+ , number : { exp: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/ }
+ , keyword: { exp: /\b(?:abstract|as|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|get|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|while)\b/ }
+ }
+}
diff --git a/js/tablesorter/docs/js/chili/css.css b/js/tablesorter/docs/js/chili/css.css
new file mode 100644
index 0000000..e401117
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/css.css
@@ -0,0 +1,17 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+.css .mlcom { color: #4040c2; }
+.css .color { color: green; }
+.css .string { color: teal; }
+.css .attrib { color: navy; font-weight: bold; }
+.css .value { color: blue; }
+.css .number { color: red; }
diff --git a/js/tablesorter/docs/js/chili/css.js b/js/tablesorter/docs/js/chili/css.js
new file mode 100644
index 0000000..b8261d1
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/css.js
@@ -0,0 +1,21 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+{
+ steps: {
+ mlcom : { exp: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\// }
+ , string: { exp: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/ }
+ , number: { exp: /(?:\b[+-]?(?:\d*\.?\d+|\d+\.?\d*))(?:%|(?:(?:px|pt|em|)\b))/ }
+ , attrib: { exp: /\b(?:z-index|x-height|word-spacing|widths|width|widows|white-space|volume|voice-family|visibility|vertical-align|units-per-em|unicode-range|unicode-bidi|text-transform|text-shadow|text-indent|text-decoration|text-align|table-layout|stress|stemv|stemh|src|speech-rate|speak-punctuation|speak-numeral|speak-header|speak|slope|size|right|richness|quotes|position|play-during|pitch-range|pitch|pause-before|pause-after|pause|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|overflow|outline-width|outline-style|outline-color|outline|orphans|min-width|min-height|max-width|max-height|mathline|marks|marker-offset|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|height|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float|empty-cells|elevation|display|direction|descent|definition-src|cursor|cue-before|cue-after|cue|counter-reset|counter-increment|content|color|clip|clear|centerline|caption-side|cap-height|bottom|border-width|border-top-width|border-top-style|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-left-width|border-left-style|border-left-color|border-left|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-color|border-bottom|border|bbox|baseline|background-repeat|background-position|background-image|background-color|background-attachment|background|azimuth|ascent)\b/ }
+ , value : { exp: /\b(?:xx-small|xx-large|x-soft|x-small|x-slow|x-low|x-loud|x-large|x-high|x-fast|wider|wait|w-resize|visible|url|uppercase|upper-roman|upper-latin|upper-alpha|underline|ultra-expanded|ultra-condensed|tv|tty|transparent|top|thin|thick|text-top|text-bottom|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table-caption|sw-resize|super|sub|status-bar|static|square|spell-out|speech|solid|soft|smaller|small-caption|small-caps|small|slower|slow|silent|show|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|s-resize|run-in|rtl|rightwards|right-side|right|ridge|rgb|repeat-y|repeat-x|repeat|relative|projection|print|pre|portrait|pointer|overline|outside|outset|open-quote|once|oblique|nw-resize|nowrap|normal|none|no-repeat|no-open-quote|no-close-quote|ne-resize|narrower|n-resize|move|mix|middle|message-box|medium|marker|ltr|lowercase|lower-roman|lower-latin|lower-greek|lower-alpha|lower|low|loud|local|list-item|line-through|lighter|level|leftwards|left-side|left|larger|large|landscape|justify|italic|invert|inside|inset|inline-table|inline|icon|higher|high|hide|hidden|help|hebrew|handheld|groove|format|fixed|faster|fast|far-right|far-left|fantasy|extra-expanded|extra-condensed|expanded|embossed|embed|e-resize|double|dotted|disc|digits|default|decimal-leading-zero|decimal|dashed|cursive|crosshair|cross|crop|counters|counter|continuous|condensed|compact|collapse|code|close-quote|circle|center-right|center-left|center|caption|capitalize|braille|bottom|both|bolder|bold|block|blink|bidi-override|below|behind|baseline|avoid|auto|aural|attr|armenian|always|all|absolute|above)\b/ }
+ , color : { exp: /(?:\#[a-zA-Z0-9]{3,6})|(?:yellow|white|teal|silver|red|purple|olive|navy|maroon|lime|green|gray|fuchsia|blue|black|aqua)/ }
+ }
+}
diff --git a/js/tablesorter/docs/js/chili/delphi.css b/js/tablesorter/docs/js/chili/delphi.css
new file mode 100644
index 0000000..da03d32
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/delphi.css
@@ -0,0 +1,17 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+.delphi .mlcom { color: #4040c2; }
+.delphi .com { color: green; }
+.delphi .string { color: teal; }
+.delphi .keyword { color: navy; font-weight: bold; }
+.delphi .direct { color: red; }
+.delphi .number { color: red; }
diff --git a/js/tablesorter/docs/js/chili/delphi.js b/js/tablesorter/docs/js/chili/delphi.js
new file mode 100644
index 0000000..e7b231f
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/delphi.js
@@ -0,0 +1,21 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+{
+ steps: {
+ mlcom : { exp: /(?:\(\*[\s\S]*?\*\))|(?:{(?!\$)[\s\S]*?})/ }
+ , com : { exp: /\/\/.*/ }
+ , string : { exp: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')/ }
+ , number : { exp: /(?:\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b)|(?:\$[a-zA-Z0-9]+\b)/ }
+ , direct : { exp: /\{\$[a-zA-Z]+ .+\}/ }
+ , keyword: { exp: /\b(?:abs|addr|and|ansichar|ansistring|array|as|asm|begin|boolean|byte|cardinal|case|char|class|comp|const|constructor|currency|destructor|div|do|double|downto|else|end|except|exports|extended|false|file|finalization|finally|for|function|goto|if|implementation|in|inherited|initialization|int64|integer|interface|is|label|library|longint|longword|mod|nil|not|object|of|on|or|packed|pansichar|pansistring|pchar|pcurrency|pdatetime|pextended|pint64|pointer|private|procedure|program|property|protected|pshortstring|pstring|public|published|pvariant|pwidechar|pwidestring|raise|real|real48|record|repeat|set|shl|shortint|shortstring|shr|single|smallint|string|then|threadvar|to|true|try|type|unit|until|uses|val|var|varirnt|while|widechar|widestring|with|word|write|writeln|xor)\b/ }
+ }
+}
diff --git a/js/tablesorter/docs/js/chili/html.css b/js/tablesorter/docs/js/chili/html.css
new file mode 100644
index 0000000..b687661
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/html.css
@@ -0,0 +1,17 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+.html .php { color: red; font-weight: bold; }
+.html .tag { color: navy; font-weight: bold; }
+.html .aname { color: purple; }
+.html .avalue { color: fuchsia; }
+.html .mlcom { color: green; }
+.html .entity { color: teal; }
diff --git a/js/tablesorter/docs/js/chili/html.js b/js/tablesorter/docs/js/chili/html.js
new file mode 100644
index 0000000..17fdf6d
--- /dev/null
+++ b/js/tablesorter/docs/js/chili/html.js
@@ -0,0 +1,23 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+ Copyright 2007 / Andrea Ercolino
+-------------------------------------------------------------------------------
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+===============================================================================
+*/
+
+{
+ steps: {
+ mlcom : { exp: /\/g,'-->\n');
+
+ $("#html pre").text(html);
+ }
+ $("pre.javascript").chili();
+ $("pre.html").chili();
+ $("pre.css").chili();
+});
\ No newline at end of file
diff --git a/js/tablesorter/jquery-latest.js b/js/tablesorter/jquery-latest.js
new file mode 100644
index 0000000..3747929
--- /dev/null
+++ b/js/tablesorter/jquery-latest.js
@@ -0,0 +1,32 @@
+/*
+ * jQuery 1.2.3 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
+ * $Rev: 4663 $
+ */
+(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else
+selector=[];}}else
+return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
+return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,""]||!tags.indexOf(""," "]||(!tags.indexOf(""," "]||!tags.indexOf(""," "]||jQuery.browser.msie&&[1,"div","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
+ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
+for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
+jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(/This is a p
+ * @before $.metadata.setType("elem", "script")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a nested script element
+ *
+ * @param String type The encoding type
+ * @param String name The name of the attribute to be used to get metadata (optional)
+ * @cat Plugins/Metadata
+ * @descr Sets the type of encoding to be used when loading metadata for the first time
+ * @type undefined
+ * @see metadata()
+ */
+
+(function($) {
+
+$.extend({
+ metadata : {
+ defaults : {
+ type: 'class',
+ name: 'metadata',
+ cre: /({.*})/,
+ single: 'metadata'
+ },
+ setType: function( type, name ){
+ this.defaults.type = type;
+ this.defaults.name = name;
+ },
+ get: function( elem, opts ){
+ var settings = $.extend({},this.defaults,opts);
+ // check for empty string in single property
+ if ( !settings.single.length ) settings.single = 'metadata';
+
+ var data = $.data(elem, settings.single);
+ // returned cached data if it already exists
+ if ( data ) return data;
+
+ data = "{}";
+
+ if ( settings.type == "class" ) {
+ var m = settings.cre.exec( elem.className );
+ if ( m )
+ data = m[1];
+ } else if ( settings.type == "elem" ) {
+ if( !elem.getElementsByTagName )
+ return undefined;
+ var e = elem.getElementsByTagName(settings.name);
+ if ( e.length )
+ data = $.trim(e[0].innerHTML);
+ } else if ( elem.getAttribute != undefined ) {
+ var attr = elem.getAttribute( settings.name );
+ if ( attr )
+ data = attr;
+ }
+
+ if ( data.indexOf( '{' ) <0 )
+ data = "{" + data + "}";
+
+ data = eval("(" + data + ")");
+
+ $.data( elem, settings.single, data );
+ return data;
+ }
+ }
+});
+
+/**
+ * Returns the metadata object for the first member of the jQuery object.
+ *
+ * @name metadata
+ * @descr Returns element's metadata object
+ * @param Object opts An object contianing settings to override the defaults
+ * @type jQuery
+ * @cat Plugins/Metadata
+ */
+$.fn.metadata = function( opts ){
+ return $.metadata.get( this[0], opts );
+};
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/tablesorter/jquery.tablesorter.js b/js/tablesorter/jquery.tablesorter.js
new file mode 100644
index 0000000..f781334
--- /dev/null
+++ b/js/tablesorter/jquery.tablesorter.js
@@ -0,0 +1,852 @@
+/*
+ *
+ * TableSorter 2.0 - Client-side table sorting with ease!
+ * Version 2.0.3
+ * @requires jQuery v1.2.3
+ *
+ * Copyright (c) 2007 Christian Bach
+ * Examples and docs at: http://tablesorter.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+/**
+ *
+ * @description Create a sortable table with multi-column sorting capabilitys
+ *
+ * @example $('table').tablesorter();
+ * @desc Create a simple tablesorter interface.
+ *
+ * @example $('table').tablesorter({ sortList:[[0,0],[1,0]] });
+ * @desc Create a tablesorter interface and sort on the first and secound column in ascending order.
+ *
+ * @example $('table').tablesorter({ headers: { 0: { sorter: false}, 1: {sorter: false} } });
+ * @desc Create a tablesorter interface and disableing the first and secound column headers.
+ *
+ * @example $('table').tablesorter({ 0: {sorter:"integer"}, 1: {sorter:"currency"} });
+ * @desc Create a tablesorter interface and set a column parser for the first and secound column.
+ *
+ *
+ * @param Object settings An object literal containing key/value pairs to provide optional settings.
+ *
+ * @option String cssHeader (optional) A string of the class name to be appended to sortable tr elements in the thead of the table.
+ * Default value: "header"
+ *
+ * @option String cssAsc (optional) A string of the class name to be appended to sortable tr elements in the thead on a ascending sort.
+ * Default value: "headerSortUp"
+ *
+ * @option String cssDesc (optional) A string of the class name to be appended to sortable tr elements in the thead on a descending sort.
+ * Default value: "headerSortDown"
+ *
+ * @option String sortInitialOrder (optional) A string of the inital sorting order can be asc or desc.
+ * Default value: "asc"
+ *
+ * @option String sortMultisortKey (optional) A string of the multi-column sort key.
+ * Default value: "shiftKey"
+ *
+ * @option String textExtraction (optional) A string of the text-extraction method to use.
+ * For complex html structures inside td cell set this option to "complex",
+ * on large tables the complex option can be slow.
+ * Default value: "simple"
+ *
+ * @option Object headers (optional) An array containing the forces sorting rules.
+ * This option let's you specify a default sorting rule.
+ * Default value: null
+ *
+ * @option Array sortList (optional) An array containing the forces sorting rules.
+ * This option let's you specify a default sorting rule.
+ * Default value: null
+ *
+ * @option Array sortForce (optional) An array containing forced sorting rules.
+ * This option let's you specify a default sorting rule, which is prepended to user-selected rules.
+ * Default value: null
+ *
+ * @option Array sortAppend (optional) An array containing forced sorting rules.
+ * This option let's you specify a default sorting rule, which is appended to user-selected rules.
+ * Default value: null
+ *
+ * @option Boolean widthFixed (optional) Boolean flag indicating if tablesorter should apply fixed widths to the table columns.
+ * This is usefull when using the pager companion plugin.
+ * This options requires the dimension jquery plugin.
+ * Default value: false
+ *
+ * @option Boolean cancelSelection (optional) Boolean flag indicating if tablesorter should cancel selection of the table headers text.
+ * Default value: true
+ *
+ * @option Boolean debug (optional) Boolean flag indicating if tablesorter should display debuging information usefull for development.
+ *
+ * @type jQuery
+ *
+ * @name tablesorter
+ *
+ * @cat Plugins/Tablesorter
+ *
+ * @author Christian Bach/christian.bach@polyester.se
+ */
+
+(function($) {
+ $.extend({
+ tablesorter: new function() {
+
+ var parsers = [], widgets = [];
+
+ this.defaults = {
+ cssHeader: "header",
+ cssAsc: "headerSortUp",
+ cssDesc: "headerSortDown",
+ sortInitialOrder: "asc",
+ sortMultiSortKey: "shiftKey",
+ sortForce: null,
+ sortAppend: null,
+ textExtraction: "simple",
+ parsers: {},
+ widgets: [],
+ widgetZebra: {css: ["even","odd"]},
+ headers: {},
+ widthFixed: false,
+ cancelSelection: true,
+ sortList: [],
+ headerList: [],
+ dateFormat: "us",
+ decimal: '.',
+ debug: false
+ };
+
+ /* debuging utils */
+ function benchmark(s,d) {
+ log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
+ }
+
+ this.benchmark = benchmark;
+
+ function log(s) {
+ if (typeof console != "undefined" && typeof console.debug != "undefined") {
+ console.log(s);
+ } else {
+ alert(s);
+ }
+ }
+
+ /* parsers utils */
+ function buildParserCache(table,$headers) {
+
+ if(table.config.debug) { var parsersDebug = ""; }
+
+ var rows = table.tBodies[0].rows;
+
+ if(table.tBodies[0].rows[0]) {
+
+ var list = [], cells = rows[0].cells, l = cells.length;
+
+ for (var i=0;i < l; i++) {
+ var p = false;
+
+ if($.metadata && ($($headers[i]).metadata() && $($headers[i]).metadata().sorter) ) {
+
+ p = getParserById($($headers[i]).metadata().sorter);
+
+ } else if((table.config.headers[i] && table.config.headers[i].sorter)) {
+
+ p = getParserById(table.config.headers[i].sorter);
+ }
+ if(!p) {
+ p = detectParserForColumn(table,cells[i]);
+ }
+
+ if(table.config.debug) { parsersDebug += "column:" + i + " parser:" +p.id + "\n"; }
+
+ list.push(p);
+ }
+ }
+
+ if(table.config.debug) { log(parsersDebug); }
+
+ return list;
+ };
+
+ function detectParserForColumn(table,node) {
+ var l = parsers.length;
+ for(var i=1; i < l; i++) {
+ if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)) {
+ return parsers[i];
+ }
+ }
+ // 0 is always the generic parser (text)
+ return parsers[0];
+ }
+
+ function getParserById(name) {
+ var l = parsers.length;
+ for(var i=0; i < l; i++) {
+ if(parsers[i].id.toLowerCase() == name.toLowerCase()) {
+ return parsers[i];
+ }
+ }
+ return false;
+ }
+
+ /* utils */
+ function buildCache(table) {
+
+ if(table.config.debug) { var cacheTime = new Date(); }
+
+
+ var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length) || 0,
+ totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length) || 0,
+ parsers = table.config.parsers,
+ cache = {row: [], normalized: []};
+
+ for (var i=0;i < totalRows; ++i) {
+
+ /** Add the table data to main data array */
+ var c = table.tBodies[0].rows[i], cols = [];
+
+ cache.row.push($(c));
+
+ for(var j=0; j < totalCells; ++j) {
+ cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));
+ }
+
+ cols.push(i); // add position for rowCache
+ cache.normalized.push(cols);
+ cols = null;
+ };
+
+ if(table.config.debug) { benchmark("Building cache for " + totalRows + " rows:", cacheTime); }
+
+ return cache;
+ };
+
+ function getElementText(config,node) {
+
+ if(!node) return "";
+
+ var t = "";
+
+ if(config.textExtraction == "simple") {
+ if(node.childNodes[0] && node.childNodes[0].hasChildNodes()) {
+ t = node.childNodes[0].innerHTML;
+ } else {
+ t = node.innerHTML;
+ }
+ } else {
+ if(typeof(config.textExtraction) == "function") {
+ t = config.textExtraction(node);
+ } else {
+ t = $(node).text();
+ }
+ }
+ return t;
+ }
+
+ function appendToTable(table,cache) {
+
+ if(table.config.debug) {var appendTime = new Date()}
+
+ var c = cache,
+ r = c.row,
+ n= c.normalized,
+ totalRows = n.length,
+ checkCell = (n[0].length-1),
+ tableBody = $(table.tBodies[0]),
+ rows = [];
+
+ for (var i=0;i < totalRows; i++) {
+ rows.push(r[n[i][checkCell]]);
+ if(!table.config.appender) {
+
+ var o = r[n[i][checkCell]];
+ var l = o.length;
+ for(var j=0; j < l; j++) {
+
+ tableBody[0].appendChild(o[j]);
+
+ }
+
+ //tableBody.append(r[n[i][checkCell]]);
+ }
+ }
+
+ if(table.config.appender) {
+
+ table.config.appender(table,rows);
+ }
+
+ rows = null;
+
+ if(table.config.debug) { benchmark("Rebuilt table:", appendTime); }
+
+ //apply table widgets
+ applyWidget(table);
+
+ // trigger sortend
+ setTimeout(function() {
+ $(table).trigger("sortEnd");
+ },0);
+
+ };
+
+ function buildHeaders(table) {
+
+ if(table.config.debug) { var time = new Date(); }
+
+ var meta = ($.metadata) ? true : false, tableHeadersRows = [];
+
+ for(var i = 0; i < table.tHead.rows.length; i++) { tableHeadersRows[i]=0; };
+
+ $tableHeaders = $("thead th",table);
+
+ $tableHeaders.each(function(index) {
+
+ this.count = 0;
+ this.column = index;
+ this.order = formatSortingOrder(table.config.sortInitialOrder);
+
+ if(checkHeaderMetadata(this) || checkHeaderOptions(table,index)) this.sortDisabled = true;
+
+ if(!this.sortDisabled) {
+ $(this).addClass(table.config.cssHeader);
+ }
+
+ // add cell to headerList
+ table.config.headerList[index]= this;
+ });
+
+ if(table.config.debug) { benchmark("Built headers:", time); log($tableHeaders); }
+
+ return $tableHeaders;
+
+ };
+
+ function checkCellColSpan(table, rows, row) {
+ var arr = [], r = table.tHead.rows, c = r[row].cells;
+
+ for(var i=0; i < c.length; i++) {
+ var cell = c[i];
+
+ if ( cell.colSpan > 1) {
+ arr = arr.concat(checkCellColSpan(table, headerArr,row++));
+ } else {
+ if(table.tHead.length == 1 || (cell.rowSpan > 1 || !r[row+1])) {
+ arr.push(cell);
+ }
+ //headerArr[row] = (i+row);
+ }
+ }
+ return arr;
+ };
+
+ function checkHeaderMetadata(cell) {
+ if(($.metadata) && ($(cell).metadata().sorter === false)) { return true; };
+ return false;
+ }
+
+ function checkHeaderOptions(table,i) {
+ if((table.config.headers[i]) && (table.config.headers[i].sorter === false)) { return true; };
+ return false;
+ }
+
+ function applyWidget(table) {
+ var c = table.config.widgets;
+ var l = c.length;
+ for(var i=0; i < l; i++) {
+
+ getWidgetById(c[i]).format(table);
+ }
+
+ }
+
+ function getWidgetById(name) {
+ var l = widgets.length;
+ for(var i=0; i < l; i++) {
+ if(widgets[i].id.toLowerCase() == name.toLowerCase() ) {
+ return widgets[i];
+ }
+ }
+ };
+
+ function formatSortingOrder(v) {
+
+ if(typeof(v) != "Number") {
+ i = (v.toLowerCase() == "desc") ? 1 : 0;
+ } else {
+ i = (v == (0 || 1)) ? v : 0;
+ }
+ return i;
+ }
+
+ function isValueInArray(v, a) {
+ var l = a.length;
+ for(var i=0; i < l; i++) {
+ if(a[i][0] == v) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function setHeadersCss(table,$headers, list, css) {
+ // remove all header information
+ $headers.removeClass(css[0]).removeClass(css[1]);
+
+ var h = [];
+ $headers.each(function(offset) {
+ if(!this.sortDisabled) {
+ h[this.column] = $(this);
+ }
+ });
+
+ var l = list.length;
+ for(var i=0; i < l; i++) {
+ h[list[i][0]].addClass(css[list[i][1]]);
+ }
+ }
+
+ function fixColumnWidth(table,$headers) {
+ var c = table.config;
+ if(c.widthFixed) {
+ var colgroup = $('');
+ $("tr:first td",table.tBodies[0]).each(function() {
+ colgroup.append($(' ').css('width',$(this).width()));
+ });
+ $(table).prepend(colgroup);
+ };
+ }
+
+ function updateHeaderSortCount(table,sortList) {
+ var c = table.config, l = sortList.length;
+ for(var i=0; i < l; i++) {
+ var s = sortList[i], o = c.headerList[s[0]];
+ o.count = s[1];
+ o.count++;
+ }
+ }
+
+ /* sorting methods */
+ function multisort(table,sortList,cache) {
+
+ if(table.config.debug) { var sortTime = new Date(); }
+
+ var dynamicExp = "var sortWrapper = function(a,b) {", l = sortList.length;
+
+ for(var i=0; i < l; i++) {
+
+ var c = sortList[i][0];
+ var order = sortList[i][1];
+ var s = (getCachedSortType(table.config.parsers,c) == "text") ? ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ? "sortNumeric" : "sortNumericDesc");
+
+ var e = "e" + i;
+
+ dynamicExp += "var " + e + " = " + s + "(a[" + c + "],b[" + c + "]); ";
+ dynamicExp += "if(" + e + ") { return " + e + "; } ";
+ dynamicExp += "else { ";
+ }
+
+ // if value is the same keep orignal order
+ var orgOrderCol = cache.normalized[0].length - 1;
+ dynamicExp += "return a[" + orgOrderCol + "]-b[" + orgOrderCol + "];";
+
+ for(var i=0; i < l; i++) {
+ dynamicExp += "}; ";
+ }
+
+ dynamicExp += "return 0; ";
+ dynamicExp += "}; ";
+
+ eval(dynamicExp);
+
+ cache.normalized.sort(sortWrapper);
+
+ if(table.config.debug) { benchmark("Sorting on " + sortList.toString() + " and dir " + order+ " time:", sortTime); }
+
+ return cache;
+ };
+
+ function sortText(a,b) {
+ return ((a < b) ? -1 : ((a > b) ? 1 : 0));
+ };
+
+ function sortTextDesc(a,b) {
+ return ((b < a) ? -1 : ((b > a) ? 1 : 0));
+ };
+
+ function sortNumeric(a,b) {
+ return a-b;
+ };
+
+ function sortNumericDesc(a,b) {
+ return b-a;
+ };
+
+ function getCachedSortType(parsers,i) {
+ return parsers[i].type;
+ };
+
+ /* public methods */
+ this.construct = function(settings) {
+
+ return this.each(function() {
+
+ if(!this.tHead || !this.tBodies) return;
+
+ var $this, $document,$headers, cache, config, shiftDown = 0, sortOrder;
+
+ this.config = {};
+
+ config = $.extend(this.config, $.tablesorter.defaults, settings);
+
+ // store common expression for speed
+ $this = $(this);
+
+ // build headers
+ $headers = buildHeaders(this);
+
+ // try to auto detect column type, and store in tables config
+ this.config.parsers = buildParserCache(this,$headers);
+
+
+ // build the cache for the tbody cells
+ cache = buildCache(this);
+
+ // get the css class names, could be done else where.
+ var sortCSS = [config.cssDesc,config.cssAsc];
+
+ // fixate columns if the users supplies the fixedWidth option
+ fixColumnWidth(this);
+
+ // apply event handling to headers
+ // this is to big, perhaps break it out?
+ $headers.click(function(e) {
+
+ $this.trigger("sortStart");
+
+ var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length) || 0;
+
+ if(!this.sortDisabled && totalRows > 0) {
+
+
+ // store exp, for speed
+ var $cell = $(this);
+
+ // get current column index
+ var i = this.column;
+
+ // get current column sort order
+ this.order = this.count++ % 2;
+
+ // user only whants to sort on one column
+ if(!e[config.sortMultiSortKey]) {
+
+ // flush the sort list
+ config.sortList = [];
+
+ if(config.sortForce != null) {
+ var a = config.sortForce;
+ for(var j=0; j < a.length; j++) {
+ if(a[j][0] != i) {
+ config.sortList.push(a[j]);
+ }
+ }
+ }
+
+ // add column to sort list
+ config.sortList.push([i,this.order]);
+
+ // multi column sorting
+ } else {
+ // the user has clicked on an all ready sortet column.
+ if(isValueInArray(i,config.sortList)) {
+
+ // revers the sorting direction for all tables.
+ for(var j=0; j < config.sortList.length; j++) {
+ var s = config.sortList[j], o = config.headerList[s[0]];
+ if(s[0] == i) {
+ o.count = s[1];
+ o.count++;
+ s[1] = o.count % 2;
+ }
+ }
+ } else {
+ // add column to sort list array
+ config.sortList.push([i,this.order]);
+ }
+ };
+ setTimeout(function() {
+ //set css for headers
+ setHeadersCss($this[0],$headers,config.sortList,sortCSS);
+ appendToTable($this[0],multisort($this[0],config.sortList,cache));
+ },1);
+ // stop normal event by returning false
+ return false;
+ }
+ // cancel selection
+ }).mousedown(function() {
+ if(config.cancelSelection) {
+ this.onselectstart = function() {return false};
+ return false;
+ }
+ });
+
+ // apply easy methods that trigger binded events
+ $this.bind("update",function() {
+
+ // rebuild parsers.
+ this.config.parsers = buildParserCache(this,$headers);
+
+ // rebuild the cache map
+ cache = buildCache(this);
+
+ }).bind("sorton",function(e,list) {
+
+ $(this).trigger("sortStart");
+
+ config.sortList = list;
+
+ // update and store the sortlist
+ var sortList = config.sortList;
+
+ // update header count index
+ updateHeaderSortCount(this,sortList);
+
+ //set css for headers
+ setHeadersCss(this,$headers,sortList,sortCSS);
+
+
+ // sort the table and append it to the dom
+ appendToTable(this,multisort(this,sortList,cache));
+
+ }).bind("appendCache",function() {
+
+ appendToTable(this,cache);
+
+ }).bind("applyWidgetId",function(e,id) {
+
+ getWidgetById(id).format(this);
+
+ }).bind("applyWidgets",function() {
+ // apply widgets
+ applyWidget(this);
+ });
+
+ if($.metadata && ($(this).metadata() && $(this).metadata().sortlist)) {
+ config.sortList = $(this).metadata().sortlist;
+ }
+ // if user has supplied a sort list to constructor.
+ if(config.sortList.length > 0) {
+ $this.trigger("sorton",[config.sortList]);
+ }
+
+ // apply widgets
+ applyWidget(this);
+ });
+ };
+
+ this.addParser = function(parser) {
+ var l = parsers.length, a = true;
+ for(var i=0; i < l; i++) {
+ if(parsers[i].id.toLowerCase() == parser.id.toLowerCase()) {
+ a = false;
+ }
+ }
+ if(a) { parsers.push(parser); };
+ };
+
+ this.addWidget = function(widget) {
+ widgets.push(widget);
+ };
+
+ this.formatFloat = function(s) {
+ var i = parseFloat(s);
+ return (isNaN(i)) ? 0 : i;
+ };
+ this.formatInt = function(s) {
+ var i = parseInt(s);
+ return (isNaN(i)) ? 0 : i;
+ };
+
+ this.isDigit = function(s,config) {
+ var DECIMAL = '\\' + config.decimal;
+ var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/';
+ return RegExp(exp).test($.trim(s));
+ };
+
+ this.clearTableBody = function(table) {
+ if($.browser.msie) {
+ function empty() {
+ while ( this.firstChild ) this.removeChild( this.firstChild );
+ }
+ empty.apply(table.tBodies[0]);
+ } else {
+ table.tBodies[0].innerHTML = "";
+ }
+ };
+ }
+ });
+
+ // extend plugin scope
+ $.fn.extend({
+ tablesorter: $.tablesorter.construct
+ });
+
+ var ts = $.tablesorter;
+
+ // add default parsers
+ ts.addParser({
+ id: "text",
+ is: function(s) {
+ return true;
+ },
+ format: function(s) {
+ return $.trim(s.toLowerCase());
+ },
+ type: "text"
+ });
+
+ ts.addParser({
+ id: "digit",
+ is: function(s,table) {
+ var c = table.config;
+ return $.tablesorter.isDigit(s,c);
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat(s);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "currency",
+ is: function(s) {
+ return /^[£$€?.]/.test(s);
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "ipAddress",
+ is: function(s) {
+ return /^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);
+ },
+ format: function(s) {
+ var a = s.split("."), r = "", l = a.length;
+ for(var i = 0; i < l; i++) {
+ var item = a[i];
+ if(item.length == 2) {
+ r += "0" + item;
+ } else {
+ r += item;
+ }
+ }
+ return $.tablesorter.formatFloat(r);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "url",
+ is: function(s) {
+ return /^(https?|ftp|file):\/\/$/.test(s);
+ },
+ format: function(s) {
+ return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));
+ },
+ type: "text"
+ });
+
+ ts.addParser({
+ id: "isoDate",
+ is: function(s) {
+ return /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat((s != "") ? new Date(s.replace(new RegExp(/-/g),"/")).getTime() : "0");
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "percent",
+ is: function(s) {
+ return /\%$/.test($.trim(s));
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "usLongDate",
+ is: function(s) {
+ return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat(new Date(s).getTime());
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "shortDate",
+ is: function(s) {
+ return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
+ },
+ format: function(s,table) {
+ var c = table.config;
+ s = s.replace(/\-/g,"/");
+ if(c.dateFormat == "us") {
+ // reformat the string in ISO format
+ s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
+ } else if(c.dateFormat == "uk") {
+ //reformat the string in ISO format
+ s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
+ } else if(c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
+ s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
+ }
+ return $.tablesorter.formatFloat(new Date(s).getTime());
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "time",
+ is: function(s) {
+ return /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);
+ },
+ format: function(s) {
+ return $.tablesorter.formatFloat(new Date("2000/01/01 " + s).getTime());
+ },
+ type: "numeric"
+ });
+
+
+ ts.addParser({
+ id: "metadata",
+ is: function(s) {
+ return false;
+ },
+ format: function(s,table,cell) {
+ var c = table.config, p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
+ return $(cell).metadata()[p];
+ },
+ type: "numeric"
+ });
+
+ // add default widgets
+ ts.addWidget({
+ id: "zebra",
+ format: function(table) {
+ if(table.config.debug) { var time = new Date(); }
+ $("tr:visible",table.tBodies[0])
+ .filter(':even')
+ .removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0])
+ .end().filter(':odd')
+ .removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);
+ if(table.config.debug) { $.tablesorter.benchmark("Applying Zebra widget", time); }
+ }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/js/tablesorter/jquery.tablesorter.min.js b/js/tablesorter/jquery.tablesorter.min.js
new file mode 100644
index 0000000..64c7007
--- /dev/null
+++ b/js/tablesorter/jquery.tablesorter.min.js
@@ -0,0 +1,2 @@
+
+(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'.',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}var rows=table.tBodies[0].rows;if(table.tBodies[0].rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($(' ').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;ib)?1:0));};function sortTextDesc(a,b){return((ba)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){$this.trigger("sortStart");var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){var $cell=$(this);var i=this.column;this.order=this.count++%2;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j 0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i
+ Student04
+ Languages
+ male
+ 80
+ 70
+ 75
+ 80
+
+
+ Student05
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student06
+ Languages
+ female
+ 85
+ 95
+ 80
+ 85
+
diff --git a/js/tablesorter/tests/assets/css/default.css b/js/tablesorter/tests/assets/css/default.css
new file mode 100644
index 0000000..63a2122
--- /dev/null
+++ b/js/tablesorter/tests/assets/css/default.css
@@ -0,0 +1,74 @@
+* {
+ font-family: Arial, Helvetica, sans-serif;
+}
+pre {
+ font-family: "Courier New", Courier, monospace;
+
+ font-size: 14px;
+ width: 100%;
+}
+h1 {
+
+ font-size: 20px;
+ color: #4D4D4D;
+}
+h3 {
+ font-size: 16px;
+
+ color: #3D3D3D;
+}
+th {
+ text-align: left;
+ padding: 5px;
+ background-color: #6E6E6E;
+}
+td {
+ color: #FFF;
+ padding: 5px;
+}
+table {
+ font-size: 12px;
+ background-color: #4D4D4D;
+ width: 1024px;
+ border: 1px solid #000;
+}
+.even {
+ background-color: #3D3D3D;
+}
+.odd {
+ background-color: #6E6E6E;
+}
+.highlight {
+ background-color: #3D3D3D;
+ font-weight: bold;
+}
+.header {
+ background-image: url(../img/header-bg.png);
+ background-repeat: no-repeat;
+ border-left: 1px solid #FFF;
+ border-right: 1px solid #000;
+ border-top: 1px solid #FFF;
+ padding-left: 30px;
+ padding-top: 8px;
+ height: auto;
+}
+.headerSortUp {
+ background-image: url(../img/header-asc.png);
+ background-repeat: no-repeat;
+ border-left: 1px solid #FFF;
+ border-right: 1px solid #000;
+ border-top: 1px solid #FFF;
+ padding-left: 30px;
+ padding-top: 8px;
+ height: auto;
+}
+.headerSortDown {
+ background-image: url(../img/header-desc.png);
+ background-repeat: no-repeat;
+ border-left: 1px solid #FFF;
+ border-right: 1px solid #000;
+ border-top: 1px solid #FFF;
+ padding-left: 30px;
+ padding-top: 8px;
+ height: auto;
+}
\ No newline at end of file
diff --git a/js/tablesorter/tests/assets/css/jquery.tabs-ie.css b/js/tablesorter/tests/assets/css/jquery.tabs-ie.css
new file mode 100644
index 0000000..b0dd7f4
--- /dev/null
+++ b/js/tablesorter/tests/assets/css/jquery.tabs-ie.css
@@ -0,0 +1,20 @@
+/*
+Tabs - additional IE specific bug fixes
+
+Recommended usage (Conditional Comments):
+
+
+*/
+.tabs-nav { /* auto clear */
+ display: inline-block;
+}
+.tabs-nav .tabs-disabled {
+ position: relative; /* fixes opacity */
+ filter: alpha(opacity=40);
+}
+.tabs-nav .tabs-disabled a span {
+ _height: 19px; /* for some reason the height is 1px to less with opacity... */
+ min-height: 19px; /* ...in both IE 6 and 7 */
+}
diff --git a/js/tablesorter/tests/assets/css/jquery.tabs.css b/js/tablesorter/tests/assets/css/jquery.tabs.css
new file mode 100644
index 0000000..3f8631b
--- /dev/null
+++ b/js/tablesorter/tests/assets/css/jquery.tabs.css
@@ -0,0 +1,97 @@
+/* Caution! Ensure accessibility in print and other media types... */
+@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */
+ .tabs-hide {
+ display: none;
+ }
+}
+
+/* Hide useless elements in print layouts... */
+@media print {
+ .tabs-nav {
+ display: none;
+ }
+}
+
+/* Skin */
+.tabs-nav {
+ list-style: none;
+ margin: 0;
+ padding: 0 0 0 4px;
+}
+.tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */
+ display: block;
+ clear: both;
+ content: " ";
+}
+.tabs-nav li {
+ float: left;
+ margin: 0 0 0 1px;
+ min-width: 84px; /* be nice to Opera */
+}
+.tabs-nav a, .tabs-nav a span {
+ display: block;
+ padding: 0 10px;
+ background: url(../img/tab.png) no-repeat;
+}
+.tabs-nav a {
+ position: relative;
+ top: 1px;
+ z-index: 2;
+ padding-left: 0;
+ color: #27537a;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1.2;
+ text-align: center;
+ text-decoration: none;
+ white-space: nowrap; /* required in IE 6 */
+}
+.tabs-nav .tabs-selected a {
+ color: #000;
+}
+.tabs-nav .tabs-selected a, .tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active {
+ background-position: 100% -150px;
+ outline: 0; /* prevent dotted border in Firefox */
+}
+.tabs-nav a, .tabs-nav .tabs-disabled a:hover, .tabs-nav .tabs-disabled a:focus, .tabs-nav .tabs-disabled a:active {
+ background-position: 100% -100px;
+}
+.tabs-nav a span {
+ width: 64px; /* IE 6 treats width as min-width */
+ min-width: 64px;
+ height: 18px; /* IE 6 treats height as min-height */
+ min-height: 18px;
+ padding-top: 6px;
+ padding-right: 0;
+}
+*>.tabs-nav a span { /* hide from IE 6 */
+ width: auto;
+ height: auto;
+}
+.tabs-nav .tabs-selected a span {
+ padding-top: 7px;
+}
+.tabs-nav .tabs-selected a span, .tabs-nav a:hover span, .tabs-nav a:focus span, .tabs-nav a:active span {
+ background-position: 0 -50px;
+}
+.tabs-nav a span, .tabs-nav .tabs-disabled a:hover span, .tabs-nav .tabs-disabled a:focus span, .tabs-nav .tabs-disabled a:active span {
+ background-position: 0 0;
+}
+.tabs-nav .tabs-selected a:link, .tabs-nav .tabs-selected a:visited, .tabs-nav .tabs-disabled a:link, .tabs-nav .tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */
+ cursor: text;
+}
+.tabs-nav a:hover, .tabs-nav a:focus, .tabs-nav a:active { /* @ Opera, we need to be explicit again here now... */
+ cursor: pointer;
+}
+.tabs-nav .tabs-disabled {
+ opacity: .4;
+}
+.tabs-container {
+ border-top: 1px solid #97a5b0;
+ padding: 1em 8px;
+ background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */
+}
+.tabs-loading em {
+ padding: 0 0 0 20px;
+ background: url(loading.gif) no-repeat 0 50%;
+}
diff --git a/js/tablesorter/tests/assets/img/header-asc.png b/js/tablesorter/tests/assets/img/header-asc.png
new file mode 100644
index 0000000..66e39ca
Binary files /dev/null and b/js/tablesorter/tests/assets/img/header-asc.png differ
diff --git a/js/tablesorter/tests/assets/img/header-bg.png b/js/tablesorter/tests/assets/img/header-bg.png
new file mode 100644
index 0000000..ca83716
Binary files /dev/null and b/js/tablesorter/tests/assets/img/header-bg.png differ
diff --git a/js/tablesorter/tests/assets/img/header-desc.png b/js/tablesorter/tests/assets/img/header-desc.png
new file mode 100644
index 0000000..431f63a
Binary files /dev/null and b/js/tablesorter/tests/assets/img/header-desc.png differ
diff --git a/js/tablesorter/tests/assets/img/small.gif b/js/tablesorter/tests/assets/img/small.gif
new file mode 100644
index 0000000..43ace8a
Binary files /dev/null and b/js/tablesorter/tests/assets/img/small.gif differ
diff --git a/js/tablesorter/tests/assets/img/small_asc.gif b/js/tablesorter/tests/assets/img/small_asc.gif
new file mode 100644
index 0000000..185e935
Binary files /dev/null and b/js/tablesorter/tests/assets/img/small_asc.gif differ
diff --git a/js/tablesorter/tests/assets/img/small_desc.gif b/js/tablesorter/tests/assets/img/small_desc.gif
new file mode 100644
index 0000000..18836ff
Binary files /dev/null and b/js/tablesorter/tests/assets/img/small_desc.gif differ
diff --git a/js/tablesorter/tests/assets/img/tab.png b/js/tablesorter/tests/assets/img/tab.png
new file mode 100644
index 0000000..413c755
Binary files /dev/null and b/js/tablesorter/tests/assets/img/tab.png differ
diff --git a/js/tablesorter/tests/cell.metadata.html b/js/tablesorter/tests/cell.metadata.html
new file mode 100644
index 0000000..d4de55d
--- /dev/null
+++ b/js/tablesorter/tests/cell.metadata.html
@@ -0,0 +1,117 @@
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+
+
+
+
+
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+To select more then one column to sort by, hold down your shift key and press the "headers".
+Pressing a all ready sorted column while holding down shift will reverse the order.
+
+
+Releasing the shift key and pressing a column will result in a one column sort.
+
+
+Not big enough? Add 500 random rows of data (can be clicked many times, more then a 1000 rows can be slow)
+
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+ Geometry
+
+
+
+
+ Name
+
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+ brian christian
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+brian christian
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+ brian christian
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+ angus zebra
+
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/checkbox.html b/js/tablesorter/tests/checkbox.html
new file mode 100644
index 0000000..35240a2
--- /dev/null
+++ b/js/tablesorter/tests/checkbox.html
@@ -0,0 +1,83 @@
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+
+
+
+
+
+
+
+
+
+fill up
+
+
+
+
+
+ Name
+
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+ Name
+
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/colspan.html b/js/tablesorter/tests/colspan.html
new file mode 100644
index 0000000..16b0cdb
--- /dev/null
+++ b/js/tablesorter/tests/colspan.html
@@ -0,0 +1,148 @@
+
+
+
+
+ Untitled Document
+
+
+
+
+
+
+
+
+
+ General information
+
+ Degree information
+ Name
+
+
+ Major
+ Gender
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+ Student01
+ Languages
+ male
+ 80
+ 70
+ 75
+ 80%
+
+
+ Student02
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90%
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+ 80
+ 85%
+
+
+
+
+
+
+
+
+ something
+ Group of information 1
+ Group of information 2
+
+
+ Col 1
+ Col 2
+ Col 3
+ Col 4
+ Col 5
+
+
+
+
+
+ Student01
+ Languages
+ male
+ 80
+ 70
+
+
+
+ Student02
+ Mathematics
+ male
+ 90
+ 88
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+
+
+
+
+
+
+ Col 1
+ Col 2
+ Col 3
+ Col 4
+ Col 5
+
+
+
+
+
+ Student01
+ Languages
+ male
+ 80
+ 70
+
+
+
+ Student02
+ Mathematics
+ male
+ 90
+ 88
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/demo.html b/js/tablesorter/tests/demo.html
new file mode 100644
index 0000000..5a45719
--- /dev/null
+++ b/js/tablesorter/tests/demo.html
@@ -0,0 +1,352 @@
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+
+
+
+
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+To select more then one column to sort by, hold down your shift key and press the "headers".
+Pressing a all ready sorted column while holding down shift will reverse the order.
+
+
+Releasing the shift key and pressing a column will result in a one column sort.
+
+
+Not big enough? Add 500 random rows of data (can be clicked many times, more then a 1000 rows can be slow)
+
+
+
+
+
+ One and Two
+ Three
+ Three
+ Three
+ Three
+ Three
+
+
+ Name
+ Major
+
+
+
+
+
+ Name
+
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/index.html b/js/tablesorter/tests/index.html
new file mode 100644
index 0000000..f2bf157
--- /dev/null
+++ b/js/tablesorter/tests/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ Love Peace and Nukes
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/tablesorter/tests/large.html b/js/tablesorter/tests/large.html
new file mode 100644
index 0000000..64a81c2
--- /dev/null
+++ b/js/tablesorter/tests/large.html
@@ -0,0 +1,30 @@
+
+
+
+
+tablesorter: 296 rows
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/metadata.html b/js/tablesorter/tests/metadata.html
new file mode 100644
index 0000000..738d1ef
--- /dev/null
+++ b/js/tablesorter/tests/metadata.html
@@ -0,0 +1,320 @@
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+
+
+
+
+
+
+
+
+
+tablesorter 2.0-dev demo, multi column sorting
+
+To select more then one column to sort by, hold down your shift key and press the "headers".
+Pressing a all ready sorted column while holding down shift will reverse the order.
+
+
+Releasing the shift key and pressing a column will result in a one column sort.
+
+
+Not big enough? Add 500 random rows of data (can be clicked many times, more then a 1000 rows can be slow)
+
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+ Name
+
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+
+
+
+
+
+
diff --git a/js/tablesorter/tests/pager.html b/js/tablesorter/tests/pager.html
new file mode 100644
index 0000000..7494026
--- /dev/null
+++ b/js/tablesorter/tests/pager.html
@@ -0,0 +1,309 @@
+
+
+
+
+tablesorter: 296 rows
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Name
+ Major
+ Sex
+ English
+ Japanese
+ Calculus
+ Geometry
+
+
+
+
+
+ Student01
+ Languages
+ male
+
+ 80
+ 70
+ 75
+ 80
+
+
+ Student02
+
+ Mathematics
+ male
+ 90
+ 88
+ 100
+ 90
+
+
+
+ Student03
+ Languages
+ female
+ 85
+ 95
+
+ 80
+ 85
+
+
+ Student04
+ Languages
+ male
+
+ 60
+ 55
+ 100
+ 100
+
+
+ Student05
+
+ Languages
+ female
+ 68
+ 80
+ 95
+ 80
+
+
+
+ Student06
+ Mathematics
+ male
+ 100
+ 99
+
+ 100
+ 90
+
+
+ Student07
+ Mathematics
+ male
+
+ 85
+ 68
+ 90
+ 90
+
+
+ Student08
+
+ Languages
+ male
+ 100
+ 90
+ 90
+ 85
+
+
+
+ Student09
+ Mathematics
+ male
+ 80
+ 50
+
+ 65
+ 75
+
+
+ Student10
+ Languages
+ male
+
+ 85
+ 100
+ 100
+ 90
+
+
+ Student11
+
+ Languages
+ male
+ 86
+ 85
+ 100
+ 100
+
+
+
+ Student12
+ Mathematics
+ female
+ 100
+ 75
+
+ 70
+ 85
+
+
+ Student13
+ Languages
+ female
+
+ 100
+ 80
+ 100
+ 90
+
+
+ Student14
+
+ Languages
+ female
+ 50
+ 45
+ 55
+ 90
+
+
+
+ Student15
+ Languages
+ male
+ 95
+ 35
+
+ 100
+ 90
+
+
+ Student16
+ Languages
+ female
+
+ 100
+ 50
+ 30
+ 70
+
+
+ Student17
+
+ Languages
+ female
+ 80
+ 100
+ 55
+ 65
+
+
+
+ Student18
+ Mathematics
+ male
+ 30
+ 49
+
+ 55
+ 75
+
+
+ Student19
+ Languages
+ male
+
+ 68
+ 90
+ 88
+ 70
+
+
+ Student20
+
+ Mathematics
+ male
+ 40
+ 45
+ 40
+ 80
+
+
+
+ Student21
+ Languages
+ male
+ 50
+ 45
+
+ 100
+ 100
+
+
+ Student22
+ Mathematics
+ male
+
+ 100
+ 99
+ 100
+ 90
+
+
+ Student23
+
+ Languages
+ female
+ 85
+ 80
+ 80
+ 80
+
+
+ student23 Mathematics male 82 77 0 79 student24 Languages female 100 91 13 82 student25 Mathematics male 22 96 82 53 student26 Languages female 37 29 56 59 student27 Mathematics male 86 82 69 23 student28 Languages female 44 25 43 1 student29 Mathematics male 77 47 22 38 student30 Languages female 19 35 23 10 student31 Mathematics male 90 27 17 50 student32 Languages female 60 75 33 38 student33 Mathematics male 4 31 37 15 student34 Languages female 77 97 81 44 student35 Mathematics male 5 81 51 95 student36 Languages female 70 61 70 94 student37 Mathematics male 60 3 61 84 student38 Languages female 63 39 0 11 student39 Mathematics male 50 46 32 38 student40 Languages female 51 75 25 3 student41 Mathematics male 43 34 28 78 student42 Languages female 11 89 60 95 student43 Mathematics male 48 92 18 88 student44 Languages female 82 2 59 73 student45 Mathematics male 91 73 37 39 student46 Languages female 4 8 12 10 student47 Mathematics male 89 10 6 11 student48 Languages female 90 32 21 18 student49 Mathematics male 42 49 49 72 student50 Languages female 56 37 67 54 student51 Mathematics male 48 31 55 63 student52 Languages female 38 91 71 74 student53 Mathematics male 2 63 85 100 student54 Languages female 75 81 16 23 student55 Mathematics male 65 52 15 53 student56 Languages female 23 52 79 94 student57 Mathematics male 80 22 61 12 student58 Languages female 53 5 79 79 student59 Mathematics male 96 32 35 17 student60 Languages female 16 76 65 27 student61 Mathematics male 20 57 22 23 student62 Languages female 19 83 87 78 student63 Mathematics male 2 5 83 30 student64 Languages female 0 21 9 93 student65 Mathematics male 20 86 13 96 student66 Languages female 28 35 87 57 student67 Mathematics male 36 50 29 10 student68 Languages female 60 90 96 6 student69 Mathematics male 34 61 43 98 student70 Languages female 13 37 91 83 student71 Mathematics male 47 80 57 82 student72 Languages female 69 43 37 37 student73 Mathematics male 54 60 94 21 student74 Languages female 71 14 34 46 student75 Mathematics male 89 96 31 17 student76 Languages female 28 48 29 94 student77 Mathematics male 100 65 20 24 student78 Languages female 11 96 90 33 student79 Mathematics male 53 55 93 39 student80 Languages female 1 100 84 44 student81 Mathematics male 63 78 96 43 student82 Languages female 41 69 82 35 student83 Mathematics male 94 98 13 9 student84 Languages female 94 72 91 77 student85 Mathematics male 71 32 45 25 student86 Languages female 9 89 64 37 student87 Mathematics male 89 1 73 67 student88 Languages female 43 41 68 79 student89 Mathematics male 7 38 22 37 student90 Languages female 94 83 93 37 student91 Mathematics male 82 84 2 61 student92 Languages female 46 41 30 69 student93 Mathematics male 47 19 85 83 student94 Languages female 39 14 64 62 student95 Mathematics male 71 31 46 28 student96 Languages female 90 94 45 40 student97 Mathematics male 46 89 2 5 student98 Languages female 41 43 47 99 student99 Mathematics male 71 90 89 73 student100 Languages female 31 64 18 56 student101 Mathematics male 52 13 69 99 student102 Languages female 86 39 83 18 student103 Mathematics male 23 65 98 80 student104 Languages female 78 100 57 66 student105 Mathematics male 69 21 43 97 student106 Languages female 27 2 78 38 student107 Mathematics male 86 96 46 34 student108 Languages female 13 84 66 64 student109 Mathematics male 35 95 98 81 student110 Languages female 30 28 62 54 student111 Mathematics male 60 31 35 85 student112 Languages female 19 81 19 69 student113 Mathematics male 66 5 98 54 student114 Languages female 38 80 40 16 student115 Mathematics male 5 84 96 97 student116 Languages female 59 97 69 54 student117 Mathematics male 0 34 79 49 student118 Languages female 18 7 12 85 student119 Mathematics male 93 87 7 59 student120 Languages female 42 23 26 90 student121 Mathematics male 17 39 66 89 student122 Languages female 26 75 90 18 student123 Mathematics male 34 23 77 80 student124 Languages female 52 6 77 42 student125 Mathematics male 56 2 85 81 student126 Languages female 51 35 67 44 student127 Mathematics male 64 64 44 34 student128 Languages female 67 91 79 82 student129 Mathematics male 4 26 15 79 student130 Languages female 72 10 3 69 student131 Mathematics male 94 77 51 1 student132 Languages female 27 95 85 48 student133 Mathematics male 92 11 40 61 student134 Languages female 4 18 56 60 student135 Mathematics male 8 42 26 52 student136 Languages female 7 60 47 21 student137 Mathematics male 51 81 30 90 student138 Languages female 58 6 16 73 student139 Mathematics male 48 38 37 31 student140 Languages female 33 26 56 60 student141 Mathematics male 84 84 29 75 student142 Languages female 72 35 6 54 student143 Mathematics male 31 42 70 82 student144 Languages female 94 87 50 35 student145 Mathematics male 91 52 80 26 student146 Languages female 78 65 79 79 student147 Mathematics male 50 90 59 71 student148 Languages female 15 68 66 33 student149 Mathematics male 17 36 34 13 student150 Languages female 30 95 69 73 student151 Mathematics male 20 53 49 58 student152 Languages female 19 89 60 60 student153 Mathematics male 52 82 20 3 student154 Languages female 66 98 53 66 student155 Mathematics male 5 85 22 58 student156 Languages female 34 43 68 8 student157 Mathematics male 43 0 91 14 student158 Languages female 34 18 67 31 student159 Mathematics male 79 73 34 52 student160 Languages female 15 61 37 27 student161 Mathematics male 74 77 15 45 student162 Languages female 52 62 19 58 student163 Mathematics male 77 60 27 95 student164 Languages female 96 1 93 57 student165 Mathematics male 51 63 75 19 student166 Languages female 32 44 72 99 student167 Mathematics male 82 84 57 63 student168 Languages female 53 12 85 67 student169 Mathematics male 49 16 84 6 student170 Languages female 39 34 16 65 student171 Mathematics male 100 68 88 4 student172 Languages female 14 25 63 52 student173 Mathematics male 74 26 15 60 student174 Languages female 11 58 8 92 student175 Mathematics male 62 47 2 31 student176 Languages female 65 26 32 42 student177 Mathematics male 83 78 69 24 student178 Languages female 14 100 7 43 student179 Mathematics male 28 35 89 7 student180 Languages female 1 48 39 62 student181 Mathematics male 14 4 24 69 student182 Languages female 64 52 72 2 student183 Mathematics male 15 26 27 85 student184 Languages female 91 49 40 7 student185 Mathematics male 87 89 42 87 student186 Languages female 75 76 61 88 student187 Mathematics male 11 48 66 30 student188 Languages female 73 7 92 72 student189 Mathematics male 98 36 58 15 student190 Languages female 80 2 86 56 student191 Mathematics male 36 33 97 4 student192 Languages female 59 2 33 90 student193 Mathematics male 94 6 19 33 student194 Languages female 82 49 72 42 student195 Mathematics male 80 59 8 30 student196 Languages female 89 17 90 27 student197 Mathematics male 46 22 6 67 student198 Languages female 65 75 73 77 student199 Mathematics male 77 97 54 13 student200 Languages female 78 19 57 96 student201 Mathematics male 92 21 11 80 student202 Languages female 45 49 93 40 student203 Mathematics male 74 25 87 53 student204 Languages female 15 71 23 4 student205 Mathematics male 82 97 95 73 student206 Languages female 82 60 58 98 student207 Mathematics male 26 64 11 100 student208 Languages female 64 9 60 45 student209 Mathematics male 96 81 96 63 student210 Languages female 24 39 0 69 student211 Mathematics male 86 64 7 10 student212 Languages female 7 64 50 7 student213 Mathematics male 59 12 26 77 student214 Languages female 21 25 93 82 student215 Mathematics male 22 18 64 51 student216 Languages female 92 41 98 28 student217 Mathematics male 32 48 14 17 student218 Languages female 62 36 85 56 student219 Mathematics male 33 37 90 87 student220 Languages female 24 43 60 84 student221 Mathematics male 6 59 37 51 student222 Languages female 91 97 5 76 student223 Mathematics male 86 29 32 27 student224 Languages female 63 59 68 91 student225 Mathematics male 57 73 95 68 student226 Languages female 38 54 59 87 student227 Mathematics male 53 62 72 64 student228 Languages female 62 84 72 73 student229 Mathematics male 13 0 83 58 student230 Languages female 35 65 80 87 student231 Mathematics male 76 20 28 50 student232 Languages female 9 17 66 33 student233 Mathematics male 92 2 99 61 student234 Languages female 47 69 98 39 student235 Mathematics male 21 44 38 82 student236 Languages female 19 86 51 78 student237 Mathematics male 28 45 49 36 student238 Languages female 78 19 49 81 student239 Mathematics male 72 69 47 20 student240 Languages female 17 43 66 56 student241 Mathematics male 90 1 94 4 student242 Languages female 6 18 2 51 student243 Mathematics male 1 37 72 13 student244 Languages female 80 0 58 54 student245 Mathematics male 83 31 85 9 student246 Languages female 90 99 29 12 student247 Mathematics male 89 23 81 59 student248 Languages female 72 26 28 3 student249 Mathematics male 28 10 50 47 student250 Languages female 89 14 89 4 student251 Mathematics male 15 23 37 69 student252 Languages female 27 82 10 36 student253 Mathematics male 49 45 64 23 student254 Languages female 79 75 63 74 student255 Mathematics male 2 56 64 75 student256 Languages female 36 26 29 58 student257 Mathematics male 17 22 66 73 student258 Languages female 70 91 97 45 student259 Mathematics male 34 30 78 30 student260 Languages female 77 57 86 77 student261 Mathematics male 12 59 68 7 student262 Languages female 11 60 97 71 student263 Mathematics male 12 30 35 58 student264 Languages female 46 15 23 40 student265 Mathematics male 44 81 9 26 student266 Languages female 15 68 32 15 student267 Mathematics male 5 58 50 98 student268 Languages female 42 30 32 24 student269 Mathematics male 78 100 99 57 student270 Languages female 55 33 87 25 student271 Mathematics male 25 97 29 93 student272 Languages female 39 35 18 43 student273 Mathematics male 35 17 99 58 student274 Languages female 86 52 27 24 student275 Mathematics male 97 38 73 76 student276 Languages female 20 6 19 8 student277 Mathematics male 93 36 9 47 student278 Languages female 42 3 15 2 student279 Mathematics male 61 18 96 2 student280 Languages female 99 89 87 94 student281 Mathematics male 48 95 90 0 student282 Languages female 60 47 31 30 student283 Mathematics male 64 24 10 76 student284 Languages female 99 37 4 68 student285 Mathematics male 0 98 68 69 student286 Languages female 66 82 49 59 student287 Mathematics male 86 14 37 17 student288 Languages female 27 48 93 27 student289 Mathematics male 84 89 6 68 student290 Languages female 99 0 20 57 student291 Mathematics male 50 96 72 42 student292 Languages female 98 2 27 92 student293 Mathematics male 19 9 42 87 student294 Languages female 98 97 9 22 student295 Mathematics male 75 30 77 64 student296 Languages female 51 98 55 3 student297 Mathematics male 25 95 86 72 student298 Languages female 20 75 37 35 student299 Mathematics male 4 92 41 11 student300 Languages female 28 3 28 91 student301 Mathematics male 41 63 4 25 student302 Languages female 29 16 77 90 student303 Mathematics male 89 41 51 82 student304 Languages female 40 91 24 34 student305 Mathematics male 7 47 49 78 student306 Languages female 6 37 55 62 student307 Mathematics male 30 73 34 90 student308 Languages female 82 91 95 93 student309 Mathematics male 62 4 73 82 student310 Languages female 39 10 12 57 student311 Mathematics male 89 64 20 67 student312 Languages female 56 36 92 41 student313 Mathematics male 99 80 99 74 student314 Languages female 31 79 64 93 student315 Mathematics male 53 2 70 55 student316 Languages female 35 15 29 60 student317 Mathematics male 31 47 69 60 student318 Languages female 88 28 13 66 student319 Mathematics male 65 12 16 40 student320 Languages female 28 17 19 40 student321 Mathematics male 24 100 44 70 student322 Languages female 20 59 83 52 student323 Mathematics male 17 60 82 91 student324 Languages female 95 99 43 37 student325 Mathematics male 30 18 99 31 student326 Languages female 34 7 83 86 student327 Mathematics male 98 63 4 35 student328 Languages female 54 23 98 46 student329 Mathematics male 97 93 45 18 student330 Languages female 27 74 0 77 student331 Mathematics male 9 70 41 37 student332 Languages female 52 37 76 20 student333 Mathematics male 74 18 68 19 student334 Languages female 77 100 33 9 student335 Mathematics male 38 53 77 18 student336 Languages female 18 13 26 10 student337 Mathematics male 90 47 87 70 student338 Languages female 38 49 36 74 student339 Mathematics male 100 64 13 72 student340 Languages female 74 25 41 52 student341 Mathematics male 37 13 16 13 student342 Languages female 24 34 15 83 student343 Mathematics male 20 5 67 28 student344 Languages female 45 2 25 72 student345 Mathematics male 19 11 75 35 student346 Languages female 6 58 31 15 student347 Mathematics male 16 66 36 11 student348 Languages female 12 3 95 40 student349 Mathematics male 7 52 74 2 student350 Languages female 88 92 60 55 student351 Mathematics male 92 70 91 45 student352 Languages female 74 76 59 44 student353 Mathematics male 63 69 60 94 student354 Languages female 3 68 55 48 student355 Mathematics male 39 96 21 48 student356 Languages female 41 34 27 5 student357 Mathematics male 64 3 47 33 student358 Languages female 95 14 63 55 student359 Mathematics male 70 100 13 82 student360 Languages female 52 24 100 21 student361 Mathematics male 0 40 86 9 student362 Languages female 0 2 49 32 student363 Mathematics male 23 10 86 94 student364 Languages female 15 3 86 49 student365 Mathematics male 76 23 31 0 student366 Languages female 35 35 78 94 student367 Mathematics male 29 42 43 100 student368 Languages female 66 8 5 10 student369 Mathematics male 74 15 56 83 student370 Languages female 75 43 90 8 student371 Mathematics male 40 60 4 70 student372 Languages female 62 42 17 49 student373 Mathematics male 31 46 44 54 student374 Languages female 30 34 47 87 student375 Mathematics male 9 69 41 52 student376 Languages female 85 43 29 92 student377 Mathematics male 79 0 40 25 student378 Languages female 36 40 72 85 student379 Mathematics male 53 68 88 2 student380 Languages female 87 78 38 79 student381 Mathematics male 89 97 83 38 student382 Languages female 21 19 49 10 student383 Mathematics male 47 12 68 50 student384 Languages female 37 12 49 95 student385 Mathematics male 84 0 88 51 student386 Languages female 89 61 27 48 student387 Mathematics male 10 47 87 61 student388 Languages female 16 9 26 56 student389 Mathematics male 57 33 13 47 student390 Languages female 90 35 77 75 student391 Mathematics male 31 47 47 53 student392 Languages female 9 4 24 12 student393 Mathematics male 61 19 81 7 student394 Languages female 4 57 57 7 student395 Mathematics male 67 29 21 2 student396 Languages female 51 6 45 6 student397 Mathematics male 93 14 77 14 student398 Languages female 1 89 34 27 student399 Mathematics male 93 77 57 91 student400 Languages female 67 77 80 32 student401 Mathematics male 58 89 4 17 student402 Languages female 30 56 0 53 student403 Mathematics male 28 25 32 59 student404 Languages female 62 34 81 64 student405 Mathematics male 29 84 26 23 student406 Languages female 70 8 63 77 student407 Mathematics male 8 65 47 99 student408 Languages female 9 38 10 89 student409 Mathematics male 84 21 46 58 student410 Languages female 21 84 18 49 student411 Mathematics male 27 9 63 40 student412 Languages female 93 0 19 91 student413 Mathematics male 31 92 87 43 student414 Languages female 53 25 98 43 student415 Mathematics male 36 75 80 89 student416 Languages female 37 68 12 54 student417 Mathematics male 25 89 12 53 student418 Languages female 92 2 8 46 student419 Mathematics male 11 28 60 58 student420 Languages female 1 37 35 17 student421 Mathematics male 67 30 38 85 student422 Languages female 68 79 34 41 student423 Mathematics male 72 45 93 41 student424 Languages female 56 46 45 38 student425 Mathematics male 86 21 84 0 student426 Languages female 99 85 41 19 student427 Mathematics male 71 35 3 89 student428 Languages female 22 91 12 16 student429 Mathematics male 15 3 26 93 student430 Languages female 35 46 34 74 student431 Mathematics male 33 83 97 20 student432 Languages female 99 20 3 26 student433 Mathematics male 48 42 83 18 student434 Languages female 44 4 25 30 student435 Mathematics male 78 48 60 45 student436 Languages female 47 57 89 0 student437 Mathematics male 88 12 100 53 student438 Languages female 48 0 51 60 student439 Mathematics male 70 89 85 16 student440 Languages female 71 94 34 33 student441 Mathematics male 68 13 72 18 student442 Languages female 7 53 97 21 student443 Mathematics male 65 36 60 87 student444 Languages female 43 21 24 34 student445 Mathematics male 85 77 65 28 student446 Languages female 61 90 78 91 student447 Mathematics male 92 0 78 12 student448 Languages female 33 30 62 90 student449 Mathematics male 86 16 74 5 student450 Languages female 100 86 24 23 student451 Mathematics male 14 25 6 45 student452 Languages female 86 39 98 88 student453 Mathematics male 72 68 77 19 student454 Languages female 9 45 23 100 student455 Mathematics male 34 67 89 79 student456 Languages female 92 0 47 45 student457 Mathematics male 64 58 26 98 student458 Languages female 43 93 59 100 student459 Mathematics male 82 35 97 81 student460 Languages female 18 35 24 100 student461 Mathematics male 79 80 43 51 student462 Languages female 56 10 17 67 student463 Mathematics male 36 44 14 85 student464 Languages female 26 40 69 2 student465 Mathematics male 59 93 43 78 student466 Languages female 78 84 88 3 student467 Mathematics male 41 37 80 60 student468 Languages female 44 27 97 77 student469 Mathematics male 29 19 64 82 student470 Languages female 50 96 27 46 student471 Mathematics male 49 15 51 45 student472 Languages female 38 35 31 78 student473 Mathematics male 1 80 23 65 student474 Languages female 91 17 23 76 student475 Mathematics male 57 39 35 63 student476 Languages female 33 73 62 14 student477 Mathematics male 96 16 88 40 student478 Languages female 30 63 16 13 student479 Mathematics male 74 39 37 87 student480 Languages female 26 36 94 79 student481 Mathematics male 19 58 65 12 student482 Languages female 73 36 22 48 student483 Mathematics male 78 94 75 7 student484 Languages female 59 51 9 35 student485 Mathematics male 67 71 100 85 student486 Languages female 33 30 15 46 student487 Mathematics male 12 19 16 37 student488 Languages female 80 98 29 14 student489 Mathematics male 70 51 14 31 student490 Languages female 95 38 15 92 student491 Mathematics male 60 31 74 12 student492 Languages female 62 56 90 68 student493 Mathematics male 63 11 29 91 student494 Languages female 41 1 25 20 student495 Mathematics male 60 5 31 44 student496 Languages female 11 35 5 28 student497 Mathematics male 11 96 42 37 student498 Languages female 16 72 79 74 student499 Mathematics male 9 21 22 66 student500 Languages female 34 22 64 34 student501 Mathematics male 50 93 86 61 student502 Languages female 50 22 40 44 student503 Mathematics male 3 8 39 17 student504 Languages female 98 16 93 55 student505 Mathematics male 86 89 36 28 student506 Languages female 16 53 13 50 student507 Mathematics male 57 57 3 38 student508 Languages female 34 79 69 77 student509 Mathematics male 2 4 16 59 student510 Languages female 60 62 99 100 student511 Mathematics male 65 52 52 95 student512 Languages female 58 73 94 1 student513 Mathematics male 39 75 28 76 student514 Languages female 46 6 64 78 student515 Mathematics male 51 60 99 8 student516 Languages female 17 20 12 97 student517 Mathematics male 72 17 96 73 student518 Languages female 92 21 62 27 student519 Mathematics male 50 42 4 33 student520 Languages female 52 37 1 57 student521 Mathematics male 58 40 35 54 student522 Languages female 9 38 57 53 student523 Mathematics male 79 20 18 18 student524 Languages female 1 4 94 27 student525 Mathematics male 95 41 29 98 student526 Languages female 34 59 9 21 student527 Mathematics male 39 66 41 29 student528 Languages female 3 2 81 25 student529 Mathematics male 33 44 37 85 student530 Languages female 69 25 59 79 student531 Mathematics male 13 50 49 52 student532 Languages female 54 83 45 31 student533 Mathematics male 15 24 97 51 student534 Languages female 7 51 69 63 student535 Mathematics male 91 8 38 56 student536 Languages female 50 13 74 80 student537 Mathematics male 54 75 74 10 student538 Languages female 76 39 70 46 student539 Mathematics male 84 72 39 40 student540 Languages female 100 47 2 14 student541 Mathematics male 42 61 1 1 student542 Languages female 57 71 65 61 student543 Mathematics male 78 5 41 34 student544 Languages female 14 76 36 47 student545 Mathematics male 15 19 63 96 student546 Languages female 27 82 33 56 student547 Mathematics male 70 23 96 90 student548 Languages female 61 2 2 78 student549 Mathematics male 22 37 64 36 student550 Languages female 75 96 94 40 student551 Mathematics male 43 8 29 21 student552 Languages female 7 96 87 18 student553 Mathematics male 65 76 52 44 student554 Languages female 41 62 73 54 student555 Mathematics male 25 98 21 40 student556 Languages female 17 70 96 82 student557 Mathematics male 43 91 27 43 student558 Languages female 33 37 24 33 student559 Mathematics male 87 87 10 31 student560 Languages female 48 40 97 74 student561 Mathematics male 63 75 91 55 student562 Languages female 66 82 59 95 student563 Mathematics male 21 95 58 38 student564 Languages female 92 9 97 45 student565 Mathematics male 59 7 94 20 student566 Languages female 64 95 24 12 student567 Mathematics male 70 46 36 74 student568 Languages female 16 25 91 49 student569 Mathematics male 73 33 24 88 student570 Languages female 9 61 95 27 student571 Mathematics male 18 12 76 46 student572 Languages female 61 71 49 63 student573 Mathematics male 46 32 85 17 student574 Languages female 42 42 11 37 student575 Mathematics male 49 76 41 20 student576 Languages female 22 27 80 12 student577 Mathematics male 76 34 18 66 student578 Languages female 96 77 29 17 student579 Mathematics male 62 51 67 72 student580 Languages female 96 67 22 54 student581 Mathematics male 77 11 23 88 student582 Languages female 6 28 24 33 student583 Mathematics male 39 23 12 100 student584 Languages female 10 21 20 71 student585 Mathematics male 11 27 7 100 student586 Languages female 40 34 97 78 student587 Mathematics male 2 51 83 19 student588 Languages female 18 76 30 25 student589 Mathematics male 24 57 46 81 student590 Languages female 2 10 31 94 student591 Mathematics male 91 84 75 13 student592 Languages female 79 44 97 10 student593 Mathematics male 42 60 67 30 student594 Languages female 61 57 75 35 student595 Mathematics male 42 46 81 71 student596 Languages female 92 63 75 74 student597 Mathematics male 86 37 40 51 student598 Languages female 52 10 47 3 student599 Mathematics male 100 28 14 76 student600 Languages female 31 76 20 43 student601 Mathematics male 40 27 6 6 student602 Languages female 5 8 79 21 student603 Mathematics male 7 54 6 91 student604 Languages female 28 30 15 3 student605 Mathematics male 38 93 98 92 student606 Languages female 43 96 89 91 student607 Mathematics male 43 49 14 83 student608 Languages female 50 61 72 98 student609 Mathematics male 4 49 99 83 student610 Languages female 5 36 73 82 student611 Mathematics male 40 84 99 54 student612 Languages female 29 96 65 69 student613 Mathematics male 12 76 5 99 student614 Languages female 47 83 49 4 student615 Mathematics male 37 27 22 4 student616 Languages female 94 39 49 24 student617 Mathematics male 0 75 21 41 student618 Languages female 59 36 4 18 student619 Mathematics male 22 66 13 3 student620 Languages female 43 87 4 48 student621 Mathematics male 100 15 51 52 student622 Languages female 63 71 99 17 student623 Mathematics male 14 34 44 100 student624 Languages female 23 8 57 27 student625 Mathematics male 23 14 32 40 student626 Languages female 34 49 72 54 student627 Mathematics male 21 16 81 26 student628 Languages female 54 69 34 34 student629 Mathematics male 72 11 63 31 student630 Languages female 87 98 9 47 student631 Mathematics male 43 52 53 58 student632 Languages female 50 14 4 20 student633 Mathematics male 89 83 67 87 student634 Languages female 0 79 9 16 student635 Mathematics male 59 17 84 58 student636 Languages female 94 95 36 60 student637 Mathematics male 39 42 63 46 student638 Languages female 0 19 6 10 student639 Mathematics male 50 16 41 71 student640 Languages female 8 60 46 13 student641 Mathematics male 45 85 59 36 student642 Languages female 83 35 0 57 student643 Mathematics male 8 30 60 14 student644 Languages female 76 80 73 38 student645 Mathematics male 26 14 58 2 student646 Languages female 93 16 42 2 student647 Mathematics male 85 94 76 16 student648 Languages female 57 45 32 16 student649 Mathematics male 16 16 90 13 student650 Languages female 43 3 18 87 student651 Mathematics male 16 24 32 44 student652 Languages female 59 98 3 34 student653 Mathematics male 73 18 47 83 student654 Languages female 99 25 100 93 student655 Mathematics male 0 73 97 84 student656 Languages female 0 28 94 75 student657 Mathematics male 65 90 58 63 student658 Languages female 84 35 86 41 student659 Mathematics male 45 39 59 9 student660 Languages female 32 10 31 62 student661 Mathematics male 61 28 54 61 student662 Languages female 70 96 14 54 student663 Mathematics male 63 92 29 8 student664 Languages female 41 10 46 23 student665 Mathematics male 81 91 80 21 student666 Languages female 79 71 65 68 student667 Mathematics male 47 69 18 90 student668 Languages female 26 16 70 0 student669 Mathematics male 66 10 93 35 student670 Languages female 66 68 27 13 student671 Mathematics male 86 79 26 45 student672 Languages female 50 53 25 74 student673 Mathematics male 97 53 9 14 student674 Languages female 28 79 69 42 student675 Mathematics male 60 72 5 9 student676 Languages female 53 21 39 43 student677 Mathematics male 37 65 45 91 student678 Languages female 76 80 60 27 student679 Mathematics male 85 27 34 55 student680 Languages female 66 11 41 17 student681 Mathematics male 27 61 89 82 student682 Languages female 40 26 1 3 student683 Mathematics male 25 1 66 95 student684 Languages female 63 44 85 63 student685 Mathematics male 97 95 78 83 student686 Languages female 51 2 13 87 student687 Mathematics male 63 92 87 23 student688 Languages female 22 96 59 59 student689 Mathematics male 33 80 15 23 student690 Languages female 34 75 19 24 student691 Mathematics male 36 68 48 54 student692 Languages female 32 36 20 12 student693 Mathematics male 68 91 74 50 student694 Languages female 87 91 96 37 student695 Mathematics male 23 9 14 4 student696 Languages female 94 62 9 77 student697 Mathematics male 14 7 45 75 student698 Languages female 73 92 19 90 student699 Mathematics male 8 20 79 78 student700 Languages female 76 35 100 39 student701 Mathematics male 27 51 89 49 student702 Languages female 0 64 72 37 student703 Mathematics male 93 46 94 87 student704 Languages female 69 22 17 2 student705 Mathematics male 17 52 11 3 student706 Languages female 13 2 52 19 student707 Mathematics male 75 61 72 73 student708 Languages female 84 37 7 36 student709 Mathematics male 81 19 45 14 student710 Languages female 62 17 39 27 student711 Mathematics male 88 69 6 81 student712 Languages female 53 82 59 29 student713 Mathematics male 83 34 71 34 student714 Languages female 95 52 61 4 student715 Mathematics male 6 71 53 13 student716 Languages female 82 97 82 5 student717 Mathematics male 65 50 31 46 student718 Languages female 27 46 25 37 student719 Mathematics male 98 42 35 44 student720 Languages female 90 1 44 44 student721 Mathematics male 3 16 82 93 student722 Languages female 34 3 43 70 student723 Mathematics male 59 77 14 21 student724 Languages female 16 53 57 59 student725 Mathematics male 79 1 44 16 student726 Languages female 10 8 19 9 student727 Mathematics male 89 48 79 16 student728 Languages female 8 87 23 87 student729 Mathematics male 17 53 95 84 student730 Languages female 65 52 39 61 student731 Mathematics male 44 30 96 72 student732 Languages female 70 79 32 33 student733 Mathematics male 30 47 46 11 student734 Languages female 76 100 16 49 student735 Mathematics male 39 36 90 89 student736 Languages female 1 94 19 29 student737 Mathematics male 23 73 78 87 student738 Languages female 87 71 44 64 student739 Mathematics male 22 19 82 20 student740 Languages female 94 52 67 39 student741 Mathematics male 14 17 51 87 student742 Languages female 56 63 98 3 student743 Mathematics male 99 92 46 98 student744 Languages female 19 76 83 88 student745 Mathematics male 15 77 68 81 student746 Languages female 48 81 48 38 student747 Mathematics male 29 1 38 61 student748 Languages female 71 63 0 30 student749 Mathematics male 19 68 30 53 student750 Languages female 91 18 27 62 student751 Mathematics male 73 33 38 36 student752 Languages female 99 38 75 50 student753 Mathematics male 55 71 34 90 student754 Languages female 52 40 98 83 student755 Mathematics male 14 63 61 1 student756 Languages female 1 31 94 96 student757 Mathematics male 49 66 55 92 student758 Languages female 0 19 80 82 student759 Mathematics male 26 35 87 3 student760 Languages female 8 28 76 39 student761 Mathematics male 52 11 83 57 student762 Languages female 83 68 84 25 student763 Mathematics male 17 2 56 70 student764 Languages female 17 58 0 84 student765 Mathematics male 75 6 47 85 student766 Languages female 76 32 93 39 student767 Mathematics male 20 75 84 65 student768 Languages female 25 47 12 89 student769 Mathematics male 86 94 79 45 student770 Languages female 65 81 55 35 student771 Mathematics male 62 41 41 43 student772 Languages female 14 4 62 43 student773 Mathematics male 17 55 72 78 student774 Languages female 95 46 35 6 student775 Mathematics male 72 0 56 48 student776 Languages female 30 88 19 56 student777 Mathematics male 42 44 88 56 student778 Languages female 42 69 56 63 student779 Mathematics male 78 57 78 3 student780 Languages female 15 86 24 98 student781 Mathematics male 46 8 43 69 student782 Languages female 67 98 15 52 student783 Mathematics male 33 32 63 57 student784 Languages female 35 95 16 53 student785 Mathematics male 78 54 54 82 student786 Languages female 81 85 91 4 student787 Mathematics male 42 41 23 14 student788 Languages female 59 100 86 36 student789 Mathematics male 1 92 60 12 student790 Languages female 100 34 5 70 student791 Mathematics male 3 81 2 17 student792 Languages female 31 55 19 3 student793 Mathematics male 11 33 98 77 student794 Languages female 4 61 7 86 student795 Mathematics male 57 86 7 27 student796 Languages female 5 74 62 36 student797 Mathematics male 57 67 66 61 student798 Languages female 93 88 87 25 student799 Mathematics male 59 96 64 41 student800 Languages female 62 7 69 23 student801 Mathematics male 35 83 32 55 student802 Languages female 42 58 15 83 student803 Mathematics male 41 90 40 12 student804 Languages female 81 43 83 7 student805 Mathematics male 87 77 33 20 student806 Languages female 53 87 30 37 student807 Mathematics male 13 35 85 16 student808 Languages female 20 82 90 34 student809 Mathematics male 58 2 16 14 student810 Languages female 14 28 23 56 student811 Mathematics male 49 97 36 8 student812 Languages female 31 46 11 63 student813 Mathematics male 74 9 76 43 student814 Languages female 42 83 95 75 student815 Mathematics male 2 65 45 29 student816 Languages female 79 59 69 88 student817 Mathematics male 68 18 26 84 student818 Languages female 39 13 99 15 student819 Mathematics male 22 48 71 6 student820 Languages female 12 53 88 11 student821 Mathematics male 33 90 80 29 student822 Languages female 37 9 54 86 student823 Mathematics male 91 78 85 1 student824 Languages female 31 58 67 31 student825 Mathematics male 22 30 50 98 student826 Languages female 55 58 56 10 student827 Mathematics male 56 76 57 53 student828 Languages female 1 12 98 81 student829 Mathematics male 67 92 66 71 student830 Languages female 30 61 44 49 student831 Mathematics male 0 41 44 61 student832 Languages female 72 52 45 85 student833 Mathematics male 60 99 12 94 student834 Languages female 83 58 75 42 student835 Mathematics male 95 0 53 77 student836 Languages female 33 28 70 62 student837 Mathematics male 39 82 75 5 student838 Languages female 41 100 45 47 student839 Mathematics male 81 69 27 29 student840 Languages female 90 1 26 49 student841 Mathematics male 45 38 20 34 student842 Languages female 3 25 31 1 student843 Mathematics male 55 77 86 49 student844 Languages female 61 60 91 76 student845 Mathematics male 80 85 74 9 student846 Languages female 63 89 73 71 student847 Mathematics male 79 15 97 42 student848 Languages female 99 18 73 43 student849 Mathematics male 30 52 38 56 student850 Languages female 65 86 67 34 student851 Mathematics male 73 43 6 55 student852 Languages female 42 43 51 73 student853 Mathematics male 8 70 98 0 student854 Languages female 29 41 12 45 student855 Mathematics male 57 3 90 90 student856 Languages female 80 52 96 54 student857 Mathematics male 43 83 82 46 student858 Languages female 7 91 71 31 student859 Mathematics male 68 13 70 7 student860 Languages female 51 44 15 52 student861 Mathematics male 91 70 1 78 student862 Languages female 4 11 65 78 student863 Mathematics male 20 63 55 85 student864 Languages female 59 3 87 26 student865 Mathematics male 4 89 44 32 student866 Languages female 26 67 98 39 student867 Mathematics male 48 79 38 66 student868 Languages female 16 32 15 3 student869 Mathematics male 13 20 50 85 student870 Languages female 4 92 20 39 student871 Mathematics male 82 6 23 53 student872 Languages female 6 60 74 64 student873 Mathematics male 66 48 39 14 student874 Languages female 43 83 3 100 student875 Mathematics male 21 49 9 0 student876 Languages female 79 80 71 80 student877 Mathematics male 84 25 26 88 student878 Languages female 38 46 66 60 student879 Mathematics male 35 27 98 51 student880 Languages female 57 59 2 67 student881 Mathematics male 76 87 78 8 student882 Languages female 21 40 8 17 student883 Mathematics male 50 4 68 66 student884 Languages female 83 86 30 92 student885 Mathematics male 63 46 66 94 student886 Languages female 76 71 2 62 student887 Mathematics male 74 18 68 6 student888 Languages female 65 77 44 88 student889 Mathematics male 67 32 61 19 student890 Languages female 85 96 85 41 student891 Mathematics male 14 87 70 5 student892 Languages female 81 28 45 28 student893 Mathematics male 9 19 18 83 student894 Languages female 40 70 2 4 student895 Mathematics male 18 19 51 89 student896 Languages female 70 35 25 12 student897 Mathematics male 72 90 7 41 student898 Languages female 84 1 71 86 student899 Mathematics male 14 2 38 86 student900 Languages female 78 37 60 1 student901 Mathematics male 66 95 31 68 student902 Languages female 23 60 80 65 student903 Mathematics male 76 89 63 96 student904 Languages female 3 46 90 70 student905 Mathematics male 65 44 96 79 student906 Languages female 68 77 8 65 student907 Mathematics male 86 61 99 43 student908 Languages female 88 95 32 13 student909 Mathematics male 53 100 59 82 student910 Languages female 35 7 95 35 student911 Mathematics male 23 0 1 77 student912 Languages female 9 68 72 63 student913 Mathematics male 23 92 39 96 student914 Languages female 94 97 6 58 student915 Mathematics male 49 31 29 71 student916 Languages female 21 57 79 57 student917 Mathematics male 0 35 100 89 student918 Languages female 64 82 75 52 student919 Mathematics male 16 66 69 68 student920 Languages female 92 95 11 27 student921 Mathematics male 16 88 85 90 student922 Languages female 56 15 26 98 student923 Mathematics male 78 27 40 17 student924 Languages female 95 10 44 32 student925 Mathematics male 99 85 52 18 student926 Languages female 73 31 71 49 student927 Mathematics male 21 79 10 63 student928 Languages female 92 71 80 12 student929 Mathematics male 23 29 33 88 student930 Languages female 41 8 98 84 student931 Mathematics male 97 17 79 21 student932 Languages female 72 40 93 92 student933 Mathematics male 75 58 3 26 student934 Languages female 15 98 27 28 student935 Mathematics male 76 88 80 6 student936 Languages female 84 23 42 92 student937 Mathematics male 71 56 86 71 student938 Languages female 7 39 58 22 student939 Mathematics male 1 55 54 60 student940 Languages female 20 31 30 8 student941 Mathematics male 97 54 41 81 student942 Languages female 83 41 86 64 student943 Mathematics male 71 95 32 7 student944 Languages female 0 27 30 91 student945 Mathematics male 99 75 17 22 student946 Languages female 92 53 10 90 student947 Mathematics male 4 44 94 32 student948 Languages female 0 97 48 79 student949 Mathematics male 97 55 79 74 student950 Languages female 65 98 9 32 student951 Mathematics male 56 73 38 81 student952 Languages female 84 94 61 50 student953 Mathematics male 48 20 77 0 student954 Languages female 39 98 14 20 student955 Mathematics male 4 15 24 65 student956 Languages female 78 22 92 31 student957 Mathematics male 28 38 26 54 student958 Languages female 49 61 35 54 student959 Mathematics male 81 15 28 17 student960 Languages female 54 80 58 2 student961 Mathematics male 75 23 5 37 student962 Languages female 55 65 1 20 student963 Mathematics male 86 42 70 36 student964 Languages female 54 45 54 80 student965 Mathematics male 38 18 69 92 student966 Languages female 33 89 46 83 student967 Mathematics male 43 9 55 76 student968 Languages female 13 26 12 86 student969 Mathematics male 94 22 85 59 student970 Languages female 93 58 6 10 student971 Mathematics male 35 72 85 36 student972 Languages female 37 51 96 93 student973 Mathematics male 71 10 79 59 student974 Languages female 71 31 73 93 student975 Mathematics male 80 26 86 97 student976 Languages female 69 21 67 69 student977 Mathematics male 38 86 10 39 student978 Languages female 48 90 39 81 student979 Mathematics male 90 83 3 42 student980 Languages female 19 1 91 84 student981 Mathematics male 98 25 50 46 student982 Languages female 38 88 21 16 student983 Mathematics male 71 48 18 43 student984 Languages female 79 85 18 16 student985 Mathematics male 51 66 90 68 student986 Languages female 100 95 65 91 student987 Mathematics male 6 74 24 24 student988 Languages female 93 80 94 35 student989 Mathematics male 65 78 57 94 student990 Languages female 27 92 21 91 student991 Mathematics male 77 15 26 76 student992 Languages female 28 84 51 67 student993 Mathematics male 3 78 62 50 student994 Languages female 59 77 20 74 student995 Mathematics male 62 66 8 75 student996 Languages female 88 70 33 43 student997 Mathematics male 73 33 42 53 student998 Languages female 64 10 2 31 student999 Mathematics male 91 93 16 35 student1000 Languages female 30 68 95 40 student1001 Mathematics male 25 2 48 32 student1002 Languages female 50 77 53 81 student1003 Mathematics male 67 44 10 65 student1004 Languages female 29 53 34 86 student1005 Mathematics male 77 69 22 75 student1006 Languages female 48 82 95 40 student1007 Mathematics male 30 71 29 63 student1008 Languages female 45 31 4 71 student1009 Mathematics male 81 12 20 44 student1010 Languages female 17 66 82 42 student1011 Mathematics male 15 11 32 18 student1012 Languages female 27 34 59 19 student1013 Mathematics male 18 67 25 14 student1014 Languages female 24 64 52 24 student1015 Mathematics male 36 87 48 46 student1016 Languages female 33 1 70 68 student1017 Mathematics male 48 26 3 80 student1018 Languages female 53 63 85 57 student1019 Mathematics male 58 73 0 24 student1020 Languages female 85 90 81 0 student1021 Mathematics male 69 28 52 76 student1022 Languages female 75 22 7 52
+
+
+
+
+
+
diff --git a/js/tablesorter/themes/blue/asc.gif b/js/tablesorter/themes/blue/asc.gif
new file mode 100644
index 0000000..7415786
Binary files /dev/null and b/js/tablesorter/themes/blue/asc.gif differ
diff --git a/js/tablesorter/themes/blue/bg.gif b/js/tablesorter/themes/blue/bg.gif
new file mode 100644
index 0000000..fac668f
Binary files /dev/null and b/js/tablesorter/themes/blue/bg.gif differ
diff --git a/js/tablesorter/themes/blue/blue.zip b/js/tablesorter/themes/blue/blue.zip
new file mode 100644
index 0000000..9945a92
Binary files /dev/null and b/js/tablesorter/themes/blue/blue.zip differ
diff --git a/js/tablesorter/themes/blue/desc.gif b/js/tablesorter/themes/blue/desc.gif
new file mode 100644
index 0000000..3b30b3c
Binary files /dev/null and b/js/tablesorter/themes/blue/desc.gif differ
diff --git a/js/tablesorter/themes/blue/style.css b/js/tablesorter/themes/blue/style.css
new file mode 100644
index 0000000..eb41f70
--- /dev/null
+++ b/js/tablesorter/themes/blue/style.css
@@ -0,0 +1,39 @@
+/* tables */
+table.tablesorter {
+ font-family:arial;
+ background-color: #CDCDCD;
+ margin:10px 0pt 15px;
+ font-size: 8pt;
+ width: 100%;
+ text-align: left;
+}
+table.tablesorter thead tr th, table.tablesorter tfoot tr th {
+ background-color: #e6EEEE;
+ border: 1px solid #FFF;
+ font-size: 8pt;
+ padding: 4px;
+}
+table.tablesorter thead tr .header {
+ background-image: url(bg.gif);
+ background-repeat: no-repeat;
+ background-position: center right;
+ cursor: pointer;
+}
+table.tablesorter tbody td {
+ color: #3D3D3D;
+ padding: 4px;
+ background-color: #FFF;
+ vertical-align: top;
+}
+table.tablesorter tbody tr.odd td {
+ background-color:#F0F0F6;
+}
+table.tablesorter thead tr .headerSortUp {
+ background-image: url(asc.gif);
+}
+table.tablesorter thead tr .headerSortDown {
+ background-image: url(desc.gif);
+}
+table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
+background-color: #8dbdd8;
+}
diff --git a/js/tablesorter/themes/green/asc.png b/js/tablesorter/themes/green/asc.png
new file mode 100644
index 0000000..66e39ca
Binary files /dev/null and b/js/tablesorter/themes/green/asc.png differ
diff --git a/js/tablesorter/themes/green/bg.png b/js/tablesorter/themes/green/bg.png
new file mode 100644
index 0000000..ca83716
Binary files /dev/null and b/js/tablesorter/themes/green/bg.png differ
diff --git a/js/tablesorter/themes/green/desc.png b/js/tablesorter/themes/green/desc.png
new file mode 100644
index 0000000..431f63a
Binary files /dev/null and b/js/tablesorter/themes/green/desc.png differ
diff --git a/js/tablesorter/themes/green/green.zip b/js/tablesorter/themes/green/green.zip
new file mode 100644
index 0000000..6a14d24
Binary files /dev/null and b/js/tablesorter/themes/green/green.zip differ
diff --git a/js/tablesorter/themes/green/style.css b/js/tablesorter/themes/green/style.css
new file mode 100644
index 0000000..4a54589
--- /dev/null
+++ b/js/tablesorter/themes/green/style.css
@@ -0,0 +1,39 @@
+table.tablesorter {
+ font-size: 12px;
+ background-color: #4D4D4D;
+ width: 1024px;
+ border: 1px solid #000;
+}
+table.tablesorter th {
+ text-align: left;
+ padding: 5px;
+ background-color: #6E6E6E;
+}
+table.tablesorter td {
+ color: #FFF;
+ padding: 5px;
+}
+table.tablesorter .even {
+ background-color: #3D3D3D;
+}
+table.tablesorter .odd {
+ background-color: #6E6E6E;
+}
+table.tablesorter .header {
+ background-image: url(bg.png);
+ background-repeat: no-repeat;
+ border-left: 1px solid #FFF;
+ border-right: 1px solid #000;
+ border-top: 1px solid #FFF;
+ padding-left: 30px;
+ padding-top: 8px;
+ height: auto;
+}
+table.tablesorter .headerSortUp {
+ background-image: url(asc.png);
+ background-repeat: no-repeat;
+}
+table.tablesorter .headerSortDown {
+ background-image: url(desc.png);
+ background-repeat: no-repeat;
+}
\ No newline at end of file