jquery-tablesorter 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- Copyright 2011 YOURNAME
1
+ Copyright 2013 Jun Lin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -4,7 +4,7 @@
4
4
 
5
5
  Simple integration of jquery-tablesorter into the asset pipeline.
6
6
 
7
- Current tablesorter version: 2.7.3 (1/10/2013), [documentation]
7
+ Current tablesorter version: 2.7.5 (2/5/2013), [documentation]
8
8
 
9
9
  Any issue associate with the js/css files, please report to [Mottie's fork].
10
10
 
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ namespace :jquery_tablesorter do
10
10
  #
11
11
  javascript_dir = 'vendor/assets/javascripts/jquery-tablesorter'
12
12
  FileUtils.mkdir_p(javascript_dir)
13
- Dir.glob('tablesorter/js/*.js').each do |file|
13
+ Dir.glob('tablesorter/js/*.js').reject{ |file| file =~ /.min.js\Z/}.each do |file|
14
14
  FileUtils.cp file, javascript_dir, :verbose => true
15
15
  end
16
16
 
@@ -1,3 +1,3 @@
1
1
  module JqueryTablesorter
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * tablesorter pager plugin
3
- * updated 1/4/2013
3
+ * updated 1/29/2013
4
4
  */
5
5
  /*jshint browser:true, jquery:true, unused:false */
6
6
  ;(function($) {
@@ -138,7 +138,7 @@
138
138
  if (h) {
139
139
  d = h - $b.height();
140
140
  if ( d > 5 && $.data(table, 'pagerLastSize') === c.size && $b.children('tr:visible').length < c.size ) {
141
- $b.append('<tr class="pagerSavedHeightSpacer ' + table.config.selectorRemove.replace('.','') + '" style="height:' + d + 'px;"></tr>');
141
+ $b.append('<tr class="pagerSavedHeightSpacer ' + table.config.selectorRemove.replace(/(tr)?\./g,'') + '" style="height:' + d + 'px;"></tr>');
142
142
  }
143
143
  }
144
144
  }
@@ -188,9 +188,8 @@
188
188
  var i, j, hsh, $f, $sh,
189
189
  $t = $(table),
190
190
  tc = table.config,
191
- $b = c.$tbodies,
192
191
  hl = $t.find('thead th').length, tds = '',
193
- err = '<tr class="' + c.cssErrorRow + ' ' + tc.selectorRemove.replace('.','') + '"><td style="text-align: center;" colspan="' + hl + '">' +
192
+ err = '<tr class="' + c.cssErrorRow + ' ' + tc.selectorRemove.replace(/(tr)?\./g,'') + '"><td style="text-align: center;" colspan="' + hl + '">' +
194
193
  (exception ? exception.message + ' (' + exception.name + ')' : 'No rows found') + '</td></tr>',
195
194
  result = c.ajaxProcessing(data) || [ 0, [] ],
196
195
  d = result[1] || [],
@@ -234,7 +233,7 @@
234
233
  // add error row to thead instead of tbody, or clicking on the header will result in a parser error
235
234
  $t.find('thead').append(err);
236
235
  } else {
237
- $b.html( tds ); // add tbody
236
+ $(table.tBodies[0]).html( tds ); // add rows to first tbody
238
237
  }
239
238
  if (tc.showProcessing) {
240
239
  $.tablesorter.isProcessing(table); // remove loading icon
@@ -453,7 +452,7 @@
453
452
  config.appender = $this.appender;
454
453
 
455
454
  $t
456
- .unbind('filterStart.pager filterEnd.pager sortEnd.pager disable.pager enable.pager destroy.pager update.pager')
455
+ .unbind('filterStart.pager filterEnd.pager sortEnd.pager disable.pager enable.pager destroy.pager update.pager pageSize.pager')
457
456
  .bind('filterStart.pager', function(e, filters) {
458
457
  $.data(table, 'pagerUpdateTriggered', false);
459
458
  c.currentFilters = filters;
@@ -481,6 +480,11 @@
481
480
  })
482
481
  .bind('update.pager', function(){
483
482
  hideRows(table, c);
483
+ })
484
+ .bind('pageSize.pager', function(e,v){
485
+ c.size = parseInt(v, 10) || 10;
486
+ hideRows(table, c);
487
+ updatePageDisplay(table, c);
484
488
  });
485
489
 
486
490
  // clicked controls
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * TableSorter 2.7.3 - Client-side table sorting with ease!
2
+ * TableSorter 2.7.5 - Client-side table sorting with ease!
3
3
  * @requires jQuery v1.2.6+
4
4
  *
5
5
  * Copyright (c) 2007 Christian Bach
@@ -24,7 +24,7 @@
24
24
 
25
25
  var ts = this;
26
26
 
27
- ts.version = "2.7.3";
27
+ ts.version = "2.7.5";
28
28
 
29
29
  ts.parsers = [];
30
30
  ts.widgets = [];
@@ -160,7 +160,7 @@
160
160
  }
161
161
  }
162
162
  for (i = 1; i < l; i++) {
163
- if (ts.parsers[i].is(nodeValue, table, node)) {
163
+ if (ts.parsers[i].is && ts.parsers[i].is(nodeValue, table, node)) {
164
164
  return ts.parsers[i];
165
165
  }
166
166
  }
@@ -170,7 +170,8 @@
170
170
 
171
171
  function buildParserCache(table) {
172
172
  var c = table.config,
173
- tb = c.$tbodies,
173
+ // update table bodies in case we start with an empty table
174
+ tb = c.$tbodies = c.$table.children('tbody:not(.' + c.cssInfoBlock + ')'),
174
175
  rows, list, l, i, h, ch, p, parsersDebug = "";
175
176
  if ( tb.length === 0) {
176
177
  return c.debug ? log('*Empty table!* Not building a parser cache') : '';
@@ -322,6 +323,7 @@
322
323
  function computeThIndexes(t) {
323
324
  var matrix = [],
324
325
  lookup = {},
326
+ cols = 0, // determine the number of columns
325
327
  trs = $(t).find('thead:eq(0), tfoot').children('tr'), // children tr in tfoot - see issue #196
326
328
  i, j, k, l, c, cells, rowIndex, cellId, rowSpan, colSpan, firstAvailCol, matrixrow;
327
329
  for (i = 0; i < trs.length; i++) {
@@ -343,6 +345,7 @@
343
345
  }
344
346
  }
345
347
  lookup[cellId] = firstAvailCol;
348
+ cols = Math.max(firstAvailCol, cols);
346
349
  // add data-column
347
350
  $(c).attr({ 'data-column' : firstAvailCol }); // 'data-row' : rowIndex
348
351
  for (k = rowIndex; k < rowIndex + rowSpan; k++) {
@@ -356,6 +359,7 @@
356
359
  }
357
360
  }
358
361
  }
362
+ t.config.columns = cols; // may not be accurate if # header columns !== # tbody columns
359
363
  return lookup;
360
364
  }
361
365
 
@@ -443,14 +447,25 @@
443
447
  }
444
448
  }
445
449
 
450
+ // automatically add col group, and column sizes if set
446
451
  function fixColumnWidth(table) {
447
- if (table.config.widthFixed && $(table).find('colgroup').length === 0) {
448
- var colgroup = $('<colgroup>'),
449
- overallWidth = $(table).width();
450
- $("tr:first td", table.tBodies[0]).each(function() {
451
- colgroup.append($('<col>').css('width', parseInt(($(this).width()/overallWidth)*1000, 10)/10 + '%'));
452
- });
453
- $(table).prepend(colgroup);
452
+ var $c, c = table.config,
453
+ $cg = $('<colgroup>'),
454
+ $cgo = c.$table.find('colgroup'),
455
+ n = c.columns.length,
456
+ overallWidth = c.$table.width();
457
+ $("tr:first td", table.tBodies[0]).each(function(i) {
458
+ $c = $('<col>');
459
+ if (c.widthFixed) {
460
+ $c.css('width', parseInt(($(this).width()/overallWidth)*1000, 10)/10 + '%');
461
+ }
462
+ $cg.append($c);
463
+ });
464
+ // replace colgroup contents
465
+ if ($cgo.length) {
466
+ $cgo.html( $cg.html() );
467
+ } else {
468
+ c.$table.prepend( $cg );
454
469
  }
455
470
  }
456
471
 
@@ -564,6 +579,9 @@
564
579
  c.$tbodies = $this.children('tbody:not(.' + c.cssInfoBlock + ')');
565
580
  // build headers
566
581
  c.$headers = buildHeaders($t0);
582
+ // fixate columns if the users supplies the fixedWidth option
583
+ // do this after theme has been applied
584
+ fixColumnWidth($t0);
567
585
  // try to auto detect column type, and store in tables config
568
586
  c.parsers = buildParserCache($t0);
569
587
  // build the cache for the tbody cells
@@ -703,7 +721,7 @@
703
721
  multisort($t0);
704
722
  appendToTable($t0);
705
723
  })
706
- .bind("update", function(e, resort, callback) {
724
+ .bind("update updateRows", function(e, resort, callback) {
707
725
  // remove rows/elements before update
708
726
  $(c.selectorRemove, $t0).remove();
709
727
  // rebuild parsers
@@ -805,10 +823,6 @@
805
823
  ts.applyWidget($t0);
806
824
  }
807
825
 
808
- // fixate columns if the users supplies the fixedWidth option
809
- // do this after theme has been applied
810
- fixColumnWidth($t0);
811
-
812
826
  // show processesing icon
813
827
  if (c.showProcessing) {
814
828
  $this
@@ -1238,7 +1252,7 @@
1238
1252
  ts.addParser({
1239
1253
  id: "isoDate",
1240
1254
  is: function(s) {
1241
- return (/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/).test(s);
1255
+ return (/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/).test(s);
1242
1256
  },
1243
1257
  format: function(s, table) {
1244
1258
  return ts.formatFloat((s !== "") ? (new Date(s.replace(/-/g, "/")).getTime() || "") : "", table);
@@ -1261,7 +1275,8 @@
1261
1275
  id: "usLongDate",
1262
1276
  is: function(s) {
1263
1277
  // two digit years are not allowed cross-browser
1264
- return (/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i).test(s);
1278
+ // Jan 01, 2013 12:34:56 PM or 01 Jan 2013
1279
+ return (/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i).test(s) || (/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i).test(s);
1265
1280
  },
1266
1281
  format: function(s, table) {
1267
1282
  return ts.formatFloat( (new Date(s.replace(/(\S)([AP]M)$/i, "$1 $2")).getTime() || ''), table);
@@ -1,4 +1,4 @@
1
- /*! tableSorter 2.4+ widgets - updated 1/10/2013
1
+ /*! tableSorter 2.4+ widgets - updated 1/29/2013
2
2
  *
3
3
  * Column Styles
4
4
  * Column Filters
@@ -810,14 +810,24 @@ $.tablesorter.addWidget({
810
810
  format: function(table){
811
811
  if ($(table).hasClass('hasResizable')) { return; }
812
812
  $(table).addClass('hasResizable');
813
- var t, j, s, $c, $cols,
813
+ var $t, t, i, j, s, $c, $cols, w, tw,
814
814
  $tbl = $(table),
815
815
  c = table.config,
816
816
  wo = c.widgetOptions,
817
817
  position = 0,
818
818
  $target = null,
819
819
  $next = null,
820
+ fullWidth = Math.abs($tbl.parent().width() - $tbl.width()) < 20,
820
821
  stopResize = function(){
822
+ if ($.tablesorter.storage && $target){
823
+ s[$target.index()] = $target.width();
824
+ s[$next.index()] = $next.width();
825
+ $target.width( s[$target.index()] );
826
+ $next.width( s[$next.index()] );
827
+ if (wo.resizable !== false){
828
+ $.tablesorter.storage(table, 'tablesorter-resizable', s);
829
+ }
830
+ }
821
831
  position = 0;
822
832
  $target = $next = null;
823
833
  $(window).trigger('resize'); // will update stickyHeaders, just in case
@@ -831,8 +841,17 @@ $.tablesorter.addWidget({
831
841
  }
832
842
  }
833
843
  }
834
- $tbl.children('thead:first').find('tr').each(function(){
835
- $c = $(this).children();
844
+ $t = $tbl.children('thead:first').children('tr');
845
+ // add resizable-false class name to headers (across rows as needed)
846
+ $t.children().each(function(){
847
+ t = $(this);
848
+ i = t.attr('data-column');
849
+ j = $.tablesorter.getData( t, c.headers[i], 'resizable') === "false";
850
+ $t.children().filter('[data-column="' + i + '"]').toggleClass('resizable-false', j);
851
+ });
852
+ // add wrapper inside each cell to allow for positioning of the resizable target block
853
+ $t.each(function(){
854
+ $c = $(this).children(':not(.resizable-false)');
836
855
  if (!$(this).find('.tablesorter-wrapper').length) {
837
856
  // Firefox needs this inner div to position the resizer correctly
838
857
  $c.wrapInner('<div class="tablesorter-wrapper" style="position:relative;height:100%;width:100%"></div>');
@@ -842,36 +861,37 @@ $.tablesorter.addWidget({
842
861
  });
843
862
  $cols
844
863
  .each(function(){
845
- t = $(this);
846
- j = parseInt(t.css('padding-right'), 10) + 8; // 8 is 1/2 of the 16px wide resizer
847
- t
864
+ $t = $(this);
865
+ j = parseInt($t.css('padding-right'), 10) + 10; // 8 is 1/2 of the 16px wide resizer grip
866
+ t = '<div class="tablesorter-resizer" style="cursor:w-resize;position:absolute;z-index:1;right:-' + j +
867
+ 'px;top:0;height:100%;width:20px;"></div>';
868
+ $t
848
869
  .find('.tablesorter-wrapper')
849
- .append('<div class="tablesorter-resizer" style="cursor:w-resize;position:absolute;height:100%;width:16px;right:-' + j + 'px;top:0;z-index:1;"></div>');
870
+ .append(t);
850
871
  })
851
872
  .bind('mousemove.tsresize', function(e){
852
873
  // ignore mousemove if no mousedown
853
874
  if (position === 0 || !$target) { return; }
854
875
  // resize columns
855
- var w = e.pageX - position;
856
- $target.width( $target.width() + w );
857
- $next.width( $next.width() - w );
876
+ w = e.pageX - position;
877
+ tw = $target.width();
878
+ $target.width( tw + w );
879
+ if ($target.width() !== tw && fullWidth){
880
+ $next.width( $next.width() - w );
881
+ }
858
882
  position = e.pageX;
859
883
  })
860
884
  .bind('mouseup.tsresize', function(){
861
- if ($.tablesorter.storage && $target){
862
- s[$target.index()] = $target.width();
863
- s[$next.index()] = $next.width();
864
- if (wo.resizable !== false){
865
- $.tablesorter.storage(table, 'tablesorter-resizable', s);
866
- }
867
- }
868
885
  stopResize();
869
886
  })
870
- .find('.tablesorter-resizer')
887
+ .find('.tablesorter-resizer,.tablesorter-resizer-grip')
871
888
  .bind('mousedown', function(e){
872
889
  // save header cell and mouse position; closest() not supported by jQuery v1.2.6
873
- $target = $(e.target).parents('th:last');
874
- $next = $target.next();
890
+ $target = $(e.target).closest('th');
891
+ t = c.$headers.filter('[data-column="' + $target.attr('data-column') + '"]');
892
+ if (t.length > 1) { $target = $target.add(t); }
893
+ // if table is not as wide as it's parent, then resize the table
894
+ $next = e.shiftKey ? $target.parent().find('th:not(.resizable-false)').filter(':last') : $target.nextAll(':not(.resizable-false)').eq(0);
875
895
  position = e.pageX;
876
896
  });
877
897
  $tbl.find('thead:first')
@@ -894,16 +914,14 @@ $.tablesorter.addWidget({
894
914
  .unbind('mouseup.tsresize mouseleave.tsresize contextmenu.tsresize')
895
915
  .find('tr').children()
896
916
  .unbind('mousemove.tsresize mouseup.tsresize')
897
- .find('.tablesorter-wrapper').each(function(){
898
- $(this).find('.tablesorter-resizer').remove();
899
- $(this).replaceWith( $(this).contents() );
900
- });
917
+ // don't remove "tablesorter-wrapper" as uitheme uses it too
918
+ .find('.tablesorter-resizer,.tablesorter-resizer-grip').remove();
901
919
  $.tablesorter.resizableReset(table);
902
920
  }
903
921
  });
904
922
  $.tablesorter.resizableReset = function(table){
905
- $(table.config.headerList).width('auto');
906
- $.tablesorter.storage(table, 'tablesorter-resizable', {});
923
+ $(table.config.headerList).filter(':not(.resizable-false)').css('width','');
924
+ if ($.tablesorter.storage) { $.tablesorter.storage(table, 'tablesorter-resizable', {}); }
907
925
  };
908
926
 
909
927
  // Save table sort widget
@@ -956,7 +974,7 @@ $.tablesorter.addWidget({
956
974
  },
957
975
  remove: function(table, c, wo){
958
976
  // clear storage
959
- $.tablesorter.storage( table, 'tablesorter-savesort', '' );
977
+ if ($.tablesorter.storage) { $.tablesorter.storage( table, 'tablesorter-savesort', '' ); }
960
978
  }
961
979
  });
962
980
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-tablesorter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-14 00:00:00.000000000 Z
12
+ date: 2013-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -67,9 +67,7 @@ files:
67
67
  - vendor/assets/javascripts/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js
68
68
  - vendor/assets/javascripts/jquery-tablesorter/jquery.metadata.js
69
69
  - vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js
70
- - vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.min.js
71
70
  - vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js
72
- - vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.min.js
73
71
  - vendor/assets/javascripts/jquery-tablesorter.js
74
72
  - vendor/assets/stylesheets/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css
75
73
  - vendor/assets/stylesheets/jquery-tablesorter/theme.black-ice.css
@@ -102,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
100
  version: '0'
103
101
  segments:
104
102
  - 0
105
- hash: -4475428360458463170
103
+ hash: 957812890531486619
106
104
  required_rubygems_version: !ruby/object:Gem::Requirement
107
105
  none: false
108
106
  requirements:
@@ -111,10 +109,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
109
  version: '0'
112
110
  segments:
113
111
  - 0
114
- hash: -4475428360458463170
112
+ hash: 957812890531486619
115
113
  requirements: []
116
114
  rubyforge_project:
117
- rubygems_version: 1.8.23
115
+ rubygems_version: 1.8.25
118
116
  signing_key:
119
117
  specification_version: 3
120
118
  summary: Simple integration of jquery-tablesorter into the asset pipeline.
@@ -1,5 +0,0 @@
1
- /*!
2
- * TableSorter 2.7.3 min - Client-side table sorting with ease!
3
- * Copyright (c) 2007 Christian Bach
4
- */
5
- !function(j){j.extend({tablesorter:new function(){function e(c){"undefined"!==typeof console&&"undefined"!==typeof console.log?console.log(c):alert(c)}function u(c,d){e(c+" ("+((new Date).getTime()-d.getTime())+"ms)")}function p(c,d,a){if(!d)return"";var b=c.config,g=b.textExtraction,f="",f="simple"===g?b.supportsTextContent?d.textContent:j(d).text():"function"===typeof g?g(d,c,a):"object"===typeof g&&g.hasOwnProperty(a)?g[a](d,c,a):b.supportsTextContent?d.textContent:j(d).text();return j.trim(f)} function h(c){var d=c.config,a=d.$tbodies,b,q,f,l,j,n,k="";if(0===a.length)return d.debug?e("*Empty table!* Not building a parser cache"):"";a=a[0].rows;if(a[0]){b=[];q=a[0].cells.length;for(f=0;f<q;f++){l=d.$headers.filter(":not([colspan])");l=l.add(d.$headers.filter('[colspan="1"]')).filter('[data-column="'+f+'"]:last');j=d.headers[f];n=g.getParserById(g.getData(l,j,"sorter"));d.empties[f]=g.getData(l,j,"empty")||d.emptyTo||(d.emptyToBottom?"bottom":"top");d.strings[f]=g.getData(l,j,"string")|| d.stringTo||"max";if(!n)a:{l=c;j=a;n=-1;for(var u=f,x=void 0,t=g.parsers.length,y=!1,m="",x=!0;""===m&&x;)n++,j[n]?(y=j[n].cells[u],m=p(l,y,u),l.config.debug&&e("Checking if value was empty on row "+n+", column: "+u+": "+m)):x=!1;for(x=1;x<t;x++)if(g.parsers[x].is(m,l,y)){n=g.parsers[x];break a}n=g.parsers[0]}d.debug&&(k+="column:"+f+"; parser:"+n.id+"; string:"+d.strings[f]+"; empty: "+d.empties[f]+"\n");b.push(n)}}d.debug&&e(k);return b}function s(c){var d=c.tBodies,a=c.config,b,q,f=a.parsers,l, v,n,k,h,x,t,m=[];a.cache={};if(!f)return a.debug?e("*Empty table!* Not building a cache"):"";a.debug&&(t=new Date);a.showProcessing&&g.isProcessing(c,!0);for(k=0;k<d.length;k++)if(a.cache[k]={row:[],normalized:[]},!j(d[k]).hasClass(a.cssInfoBlock)){b=d[k]&&d[k].rows.length||0;q=d[k].rows[0]&&d[k].rows[0].cells.length||0;for(v=0;v<b;++v)if(h=j(d[k].rows[v]),x=[],h.hasClass(a.cssChildRow))a.cache[k].row[a.cache[k].row.length-1]=a.cache[k].row[a.cache[k].row.length-1].add(h);else{a.cache[k].row.push(h); for(n=0;n<q;++n)if(l=p(c,h[0].cells[n],n),l=f[n].format(l,c,h[0].cells[n],n),x.push(l),"numeric"===(f[n].type||"").toLowerCase())m[n]=Math.max(Math.abs(l),m[n]||0);x.push(a.cache[k].normalized.length);a.cache[k].normalized.push(x)}a.cache[k].colMax=m}a.showProcessing&&g.isProcessing(c);a.debug&&u("Building cache for "+b+" rows",t)}function m(c,d){var a=c.config,b=c.tBodies,q=[],f=a.cache,e,v,n,k,h,p,m,y,s,r,E;if(f[0]){a.debug&&(E=new Date);for(y=0;y<b.length;y++)if(e=j(b[y]),!e.hasClass(a.cssInfoBlock)){h= g.processTbody(c,e,!0);e=f[y].row;v=f[y].normalized;k=(n=v.length)?v[0].length-1:0;for(p=0;p<n;p++)if(r=v[p][k],q.push(e[r]),!a.appender||!a.removeRows){s=e[r].length;for(m=0;m<s;m++)h.append(e[r][m])}g.processTbody(c,h,!1)}a.appender&&a.appender(c,q);a.debug&&u("Rebuilt table",E);d||g.applyWidget(c);j(c).trigger("sortEnd",c)}}function F(c){var d,a,b,g=c.config,f=g.sortList,e=[g.cssAsc,g.cssDesc],h=j(c).find("tfoot tr").children().removeClass(e.join(" "));g.$headers.removeClass(e.join(" "));b=f.length; for(d=0;d<b;d++)if(2!==f[d][1]&&(c=g.$headers.not(".sorter-false").filter('[data-column="'+f[d][0]+'"]'+(1===b?":last":"")),c.length))for(a=0;a<c.length;a++)c[a].sortDisabled||(c.eq(a).addClass(e[f[d][1]]),h.length&&h.filter('[data-column="'+f[d][0]+'"]').eq(a).addClass(e[f[d][1]]))}function G(c){var d=0,a=c.config,b=a.sortList,g=b.length,f=c.tBodies.length,e,h,n,k,p,m,t,r,s;if(!a.serverSideSorting&&a.cache[0]){a.debug&&(e=new Date);for(n=0;n<f;n++)p=a.cache[n].colMax,s=(m=a.cache[n].normalized)&& m[0]?m[0].length-1:0,m.sort(function(f,e){for(h=0;h<g;h++){k=b[h][0];r=b[h][1];t=/n/i.test(a.parsers&&a.parsers[k]?a.parsers[k].type||"":"")?"Numeric":"Text";t+=0===r?"":"Desc";/Numeric/.test(t)&&a.strings[k]&&(d="boolean"===typeof a.string[a.strings[k]]?(0===r?1:-1)*(a.string[a.strings[k]]?-1:1):a.strings[k]?a.string[a.strings[k]]||0:0);var l=j.tablesorter["sort"+t](c,f[k],e[k],k,p[k],d);if(l)return l}return f[s]-e[s]});a.debug&&u("Sorting on "+b.toString()+" and dir "+r+" time",e)}}function C(c, d){c.trigger("updateComplete");"function"===typeof d&&d(c[0])}function H(c,d,a){!1!==d?c.trigger("sorton",[c[0].config.sortList,function(){C(c,a)}]):C(c,a)}var g=this;g.version="2.7.3";g.parsers=[];g.widgets=[];g.defaults={theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,headers:{},ignoreCase:!0, sortForce:null,sortList:[],sortAppend:null,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",textExtraction:"simple",textSorter:null,widgets:[],widgetOptions:{zebra:["even","odd"]},initWidgets:!0,initialized:null,tableClass:"tablesorter",cssAsc:"tablesorter-headerAsc",cssChildRow:"tablesorter-childRow",cssDesc:"tablesorter-headerDesc",cssHeader:"tablesorter-header",cssHeaderRow:"tablesorter-headerRow",cssIcon:"tablesorter-icon",cssInfoBlock:"tablesorter-infoOnly", cssProcessing:"tablesorter-processing",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]};g.benchmark=u;g.construct=function(c){return this.each(function(){if(!this.tHead||0===this.tBodies.length||!0===this.hasInitialized)return this.config.debug?e("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var d=j(this),a=this,b,q,f,l="",v,n,k,C,x=j.metadata;a.hasInitialized= !1;a.config={};b=j.extend(!0,a.config,g.defaults,c);j.data(a,"tablesorter",b);b.debug&&j.data(a,"startoveralltimer",new Date);b.supportsTextContent="x"===j("<span>x</span>")[0].textContent;b.supportsDataObject=1.4<=parseFloat(j.fn.jquery);b.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(d.attr("class"))||(l=""!==b.theme?" tablesorter-"+b.theme:"");b.$table=d.addClass(b.tableClass+l);b.$tbodies=d.children("tbody:not(."+b.cssInfoBlock+")");var t= [],y={},Q=j(a).find("thead:eq(0), tfoot").children("tr"),K,E,z,A,O,D,L,R,S,I;for(K=0;K<Q.length;K++){O=Q[K].cells;for(E=0;E<O.length;E++){A=O[E];D=A.parentNode.rowIndex;L=D+"-"+A.cellIndex;R=A.rowSpan||1;S=A.colSpan||1;"undefined"===typeof t[D]&&(t[D]=[]);for(z=0;z<t[D].length+1;z++)if("undefined"===typeof t[D][z]){I=z;break}y[L]=I;j(A).attr({"data-column":I});for(z=D;z<D+R;z++){"undefined"===typeof t[z]&&(t[z]=[]);L=t[z];for(A=I;A<I+S;A++)L[A]="x"}}}var M,B,P,T,N,J,U,w=a.config;w.headerList=[];w.headerContent= [];w.debug&&(U=new Date);T=w.cssIcon?'<i class="'+w.cssIcon+'"></i>':"";t=j(a).find(w.selectorHeaders).each(function(a){B=j(this);M=w.headers[a];w.headerContent[a]=this.innerHTML;N=w.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,T);w.onRenderTemplate&&(P=w.onRenderTemplate.apply(B,[a,N]))&&"string"===typeof P&&(N=P);this.innerHTML='<div class="tablesorter-header-inner">'+N+"</div>";w.onRenderHeader&&w.onRenderHeader.apply(B,[a]);this.column=y[this.parentNode.rowIndex+"-"+ this.cellIndex];var b=g.getData(B,M,"sortInitialOrder")||w.sortInitialOrder;this.order=/^d/i.test(b)||1===b?[1,0,2]:[0,1,2];this.count=-1;"false"===g.getData(B,M,"sorter")?(this.sortDisabled=!0,B.addClass("sorter-false")):B.removeClass("sorter-false");this.lockedOrder=!1;J=g.getData(B,M,"lockedOrder")||!1;"undefined"!==typeof J&&!1!==J&&(this.order=this.lockedOrder=/^d/i.test(J)||1===J?[1,1,1]:[0,0,0]);B.addClass((this.sortDisabled?"sorter-false ":" ")+w.cssHeader);w.headerList[a]=this;B.parent().addClass(w.cssHeaderRow)}); a.config.debug&&(u("Built headers:",U),e(t));b.$headers=t;b.parsers=h(a);b.delayInit||s(a);b.$headers.find("*").andSelf().filter(b.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter").bind("mousedown.tablesorter mouseup.tablesorter",function(c,e){var h=(this.tagName.match("TH|TD")?j(this):j(this).parents("th, td").filter(":last"))[0];if(1!==(c.which||c.button))return!1;if("mousedown"===c.type)return C=(new Date).getTime(),"INPUT"===c.target.tagName?"":!b.cancelSelection;if(!0!==e&&250< (new Date).getTime()-C)return!1;b.delayInit&&!b.cache&&s(a);if(!h.sortDisabled){d.trigger("sortStart",a);l=!c[b.sortMultiSortKey];h.count=c[b.sortResetKey]?2:(h.count+1)%(b.sortReset?3:2);b.sortRestart&&(q=h,b.$headers.each(function(){if(this!==q&&(l||!j(this).is("."+b.cssDesc+",."+b.cssAsc)))this.count=-1}));q=h.column;if(l){b.sortList=[];if(null!==b.sortForce){v=b.sortForce;for(f=0;f<v.length;f++)v[f][0]!==q&&b.sortList.push(v[f])}k=h.order[h.count];if(2>k&&(b.sortList.push([q,k]),1<h.colSpan))for(f= 1;f<h.colSpan;f++)b.sortList.push([q+f,k])}else if(b.sortAppend&&1<b.sortList.length&&g.isValueInArray(b.sortAppend[0][0],b.sortList)&&b.sortList.pop(),g.isValueInArray(q,b.sortList))for(f=0;f<b.sortList.length;f++)n=b.sortList[f],k=b.headerList[n[0]],n[0]===q&&(n[1]=k.order[k.count],2===n[1]&&(b.sortList.splice(f,1),k.count=-1));else if(k=h.order[h.count],2>k&&(b.sortList.push([q,k]),1<h.colSpan))for(f=1;f<h.colSpan;f++)b.sortList.push([q+f,k]);if(null!==b.sortAppend){v=b.sortAppend;for(f=0;f<v.length;f++)v[f][0]!== q&&b.sortList.push(v[f])}d.trigger("sortBegin",a);setTimeout(function(){F(a);G(a);m(a)},1)}});b.cancelSelection&&b.$headers.each(function(){this.onselectstart=function(){return!1}});d.unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave").bind("sortReset",function(){b.sortList=[];F(a);G(a);m(a)}).bind("update",function(c,f,g){j(b.selectorRemove,a).remove();b.parsers=h(a);s(a);H(d,f,g)}).bind("updateCell",function(c,f,g, e){var q,h,l;q=d.find("tbody");c=q.index(j(f).parents("tbody").filter(":last"));var k=j(f).parents("tr").filter(":last");f=j(f)[0];q.length&&0<=c&&(h=q.eq(c).find("tr").index(k),l=f.cellIndex,q=a.config.cache[c].normalized[h].length-1,a.config.cache[c].row[a.config.cache[c].normalized[h][q]]=k,a.config.cache[c].normalized[h][l]=b.parsers[l].format(p(a,f,l),a,f,l),H(d,g,e))}).bind("addRows",function(c,g,e,q){var j=g.filter("tr").length,l=[],k=g[0].cells.length,n=d.find("tbody").index(g.closest("tbody")); b.parsers||(b.parsers=h(a));for(c=0;c<j;c++){for(f=0;f<k;f++)l[f]=b.parsers[f].format(p(a,g[c].cells[f],f),a,g[c].cells[f],f);l.push(b.cache[n].row.length);b.cache[n].row.push([g[c]]);b.cache[n].normalized.push(l);l=[]}H(d,e,q)}).bind("sorton",function(b,c,f,g){d.trigger("sortStart",this);var e,q,l,h=a.config;b=c||h.sortList;h.sortList=[];j.each(b,function(a,b){e=[parseInt(b[0],10),parseInt(b[1],10)];if(l=h.headerList[e[0]])h.sortList.push(e),q=j.inArray(e[1],l.order),l.count=0<=q?q:e[1]%(h.sortReset? 3:2)});F(a);G(a);m(a,g);"function"===typeof f&&f(a)}).bind("appendCache",function(b,c,d){m(a,d);"function"===typeof c&&c(a)}).bind("applyWidgetId",function(c,d){g.getWidgetById(d).format(a,b,b.widgetOptions)}).bind("applyWidgets",function(b,c){g.applyWidget(a,c)}).bind("refreshWidgets",function(b,c,d){g.refreshWidgets(a,c,d)}).bind("destroy",function(b,c,d){g.destroy(a,c,d)});b.supportsDataObject&&"undefined"!==typeof d.data().sortlist?b.sortList=d.data().sortlist:x&&(d.metadata()&&d.metadata().sortlist)&& (b.sortList=d.metadata().sortlist);g.applyWidget(a,!0);0<b.sortList.length?d.trigger("sorton",[b.sortList,{},!b.initWidgets]):b.initWidgets&&g.applyWidget(a);if(a.config.widthFixed&&0===j(a).find("colgroup").length){var V=j("<colgroup>"),W=j(a).width();j("tr:first td",a.tBodies[0]).each(function(){V.append(j("<col>").css("width",parseInt(1E3*(j(this).width()/W),10)/10+"%"))});j(a).prepend(V)}b.showProcessing&&d.unbind("sortBegin sortEnd").bind("sortBegin sortEnd",function(b){g.isProcessing(a,"sortBegin"=== b.type)});a.hasInitialized=!0;b.debug&&g.benchmark("Overall initialization time",j.data(a,"startoveralltimer"));d.trigger("tablesorter-initialized",a);"function"===typeof b.initialized&&b.initialized(a)})};g.isProcessing=function(c,d,a){var b=c.config;c=a||j(c).find("."+b.cssHeader);d?(0<b.sortList.length&&(c=c.filter(function(){return this.sortDisabled?!1:g.isValueInArray(parseFloat(j(this).attr("data-column")),b.sortList)})),c.addClass(b.cssProcessing)):c.removeClass(b.cssProcessing)};g.processTbody= function(c,d,a){if(a)return d.before('<span class="tablesorter-savemyplace"/>'),c=j.fn.detach?d.detach():d.remove();c=j(c).find("span.tablesorter-savemyplace");d.insertAfter(c);c.remove()};g.clearTableBody=function(c){c.config.$tbodies.empty()};g.destroy=function(c,d,a){if(c.hasInitialized){g.refreshWidgets(c,!0,!0);var b=j(c),e=c.config,f=b.find("thead:first"),h=f.find("tr."+e.cssHeaderRow).removeClass(e.cssHeaderRow),u=b.find("tfoot:first > tr").children("th, td");f.find("tr").not(h).remove();b.removeData("tablesorter").unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave"); e.$headers.add(u).removeClass(e.cssHeader+" "+e.cssAsc+" "+e.cssDesc).removeAttr("data-column");h.find(e.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter");h.children().each(function(a){j(this).html(e.headerContent[a])});!1!==d&&b.removeClass(e.tableClass+" tablesorter-"+e.theme);c.hasInitialized=!1;"function"===typeof a&&a(c)}};g.regex=[/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, /^0x[0-9a-f]+$/i];g.sortText=function(c,d,a,b){if(d===a)return 0;var e=c.config,f=e.string[e.empties[b]||e.emptyTo],h=g.regex;if(""===d&&0!==f)return"boolean"===typeof f?f?-1:1:-f||-1;if(""===a&&0!==f)return"boolean"===typeof f?f?1:-1:f||1;if("function"===typeof e.textSorter)return e.textSorter(d,a,c,b);c=d.replace(h[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");b=a.replace(h[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");d=parseInt(d.match(h[2]),16)||1!==c.length&& d.match(h[1])&&Date.parse(d);if(a=parseInt(a.match(h[2]),16)||d&&a.match(h[1])&&Date.parse(a)||null){if(d<a)return-1;if(d>a)return 1}e=Math.max(c.length,b.length);for(d=0;d<e;d++){a=isNaN(c[d])?c[d]||0:parseFloat(c[d])||0;h=isNaN(b[d])?b[d]||0:parseFloat(b[d])||0;if(isNaN(a)!==isNaN(h))return isNaN(a)?1:-1;typeof a!==typeof h&&(a+="",h+="");if(a<h)return-1;if(a>h)return 1}return 0};g.sortTextDesc=function(c,d,a,b){if(d===a)return 0;var e=c.config,f=e.string[e.empties[b]||e.emptyTo];return""===d&& 0!==f?"boolean"===typeof f?f?-1:1:f||1:""===a&&0!==f?"boolean"===typeof f?f?1:-1:-f||-1:"function"===typeof e.textSorter?e.textSorter(a,d,c,b):g.sortText(c,a,d)};g.getTextValue=function(c,d,a){if(d){var b=c.length,e=d+a;for(d=0;d<b;d++)e+=c.charCodeAt(d);return a*e}return 0};g.sortNumeric=function(c,d,a,b,e,f){if(d===a)return 0;c=c.config;b=c.string[c.empties[b]||c.emptyTo];if(""===d&&0!==b)return"boolean"===typeof b?b?-1:1:-b||-1;if(""===a&&0!==b)return"boolean"===typeof b?b?1:-1:b||1;isNaN(d)&& (d=g.getTextValue(d,e,f));isNaN(a)&&(a=g.getTextValue(a,e,f));return d-a};g.sortNumericDesc=function(c,d,a,b,e,f){if(d===a)return 0;c=c.config;b=c.string[c.empties[b]||c.emptyTo];if(""===d&&0!==b)return"boolean"===typeof b?b?-1:1:b||1;if(""===a&&0!==b)return"boolean"===typeof b?b?1:-1:-b||-1;isNaN(d)&&(d=g.getTextValue(d,e,f));isNaN(a)&&(a=g.getTextValue(a,e,f));return a-d};g.characterEquivalents={a:"\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5",A:"\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5",c:"\u00e7\u0107\u010d", C:"\u00c7\u0106\u010c",e:"\u00e9\u00e8\u00ea\u00eb\u011b\u0119",E:"\u00c9\u00c8\u00ca\u00cb\u011a\u0118",i:"\u00ed\u00ec\u0130\u00ee\u00ef\u0131",I:"\u00cd\u00cc\u0130\u00ce\u00cf",o:"\u00f3\u00f2\u00f4\u00f5\u00f6",O:"\u00d3\u00d2\u00d4\u00d5\u00d6",ss:"\u00df",SS:"\u1e9e",u:"\u00fa\u00f9\u00fb\u00fc\u016f",U:"\u00da\u00d9\u00db\u00dc\u016e"};g.replaceAccents=function(c){var d,a="[",b=g.characterEquivalents;if(!g.characterRegex){g.characterRegexArray={};for(d in b)"string"===typeof d&&(a+=b[d],g.characterRegexArray[d]= RegExp("["+b[d]+"]","g"));g.characterRegex=RegExp(a+"]")}if(g.characterRegex.test(c))for(d in b)"string"===typeof d&&(c=c.replace(g.characterRegexArray[d],d));return c};g.isValueInArray=function(c,d){var a,b=d.length;for(a=0;a<b;a++)if(d[a][0]===c)return!0;return!1};g.addParser=function(c){var d,a=g.parsers.length,b=!0;for(d=0;d<a;d++)g.parsers[d].id.toLowerCase()===c.id.toLowerCase()&&(b=!1);b&&g.parsers.push(c)};g.getParserById=function(c){var d,a=g.parsers.length;for(d=0;d<a;d++)if(g.parsers[d].id.toLowerCase()=== c.toString().toLowerCase())return g.parsers[d];return!1};g.addWidget=function(c){g.widgets.push(c)};g.getWidgetById=function(c){var d,a,b=g.widgets.length;for(d=0;d<b;d++)if((a=g.widgets[d])&&a.hasOwnProperty("id")&&a.id.toLowerCase()===c.toLowerCase())return a};g.applyWidget=function(c,d){var a=c.config,b=a.widgetOptions,e=a.widgets.sort().reverse(),f,h,m,n=e.length;h=j.inArray("zebra",a.widgets);0<=h&&(a.widgets.splice(h,1),a.widgets.push("zebra"));a.debug&&(f=new Date);for(h=0;h<n;h++)(m=g.getWidgetById(e[h]))&& (!0===d&&m.hasOwnProperty("init")?m.init(c,m,a,b):!d&&m.hasOwnProperty("format")&&m.format(c,a,b));a.debug&&u("Completed "+(!0===d?"initializing":"applying")+" widgets",f)};g.refreshWidgets=function(c,d,a){var b,h=c.config,f=h.widgets,l=g.widgets,m=l.length;for(b=0;b<m;b++)if(l[b]&&l[b].id&&(d||0>j.inArray(l[b].id,f)))h.debug&&e("Refeshing widgets: Removing "+l[b].id),l[b].hasOwnProperty("remove")&&l[b].remove(c,h,h.widgetOptions);!0!==a&&g.applyWidget(c,d)};g.getData=function(c,d,a){var b="";c=j(c); var e,f;if(!c.length)return"";e=j.metadata?c.metadata():!1;f=" "+(c.attr("class")||"");"undefined"!==typeof c.data(a)||"undefined"!==typeof c.data(a.toLowerCase())?b+=c.data(a)||c.data(a.toLowerCase()):e&&"undefined"!==typeof e[a]?b+=e[a]:d&&"undefined"!==typeof d[a]?b+=d[a]:" "!==f&&f.match(" "+a+"-")&&(b=f.match(RegExp(" "+a+"-(\\w+)"))[1]||"");return j.trim(b)};g.formatFloat=function(c,d){if("string"!==typeof c||""===c)return c;var a;c=(d&&d.config?!1!==d.config.usNumberFormat:"undefined"!==typeof d? d:1)?c.replace(/,/g,""):c.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(c)&&(c=c.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(c);return isNaN(a)?j.trim(c):a};g.isDigit=function(c){return isNaN(c)?/^[\-+(]?\d+[)]?$/.test(c.toString().replace(/[,.'"\s]/g,"")):!0}}});var h=j.tablesorter;j.fn.extend({tablesorter:h.construct});h.addParser({id:"text",is:function(){return!0},format:function(e,u){var p=u.config;e=j.trim(p.ignoreCase?e.toLocaleLowerCase():e);return p.sortLocaleCompare? h.replaceAccents(e):e},type:"text"});h.addParser({id:"currency",is:function(e){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test(e)},format:function(e,j){return h.formatFloat(e.replace(/[^\w,. \-()]/g,""),j)},type:"numeric"});h.addParser({id:"ipAddress",is:function(e){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(e)},format:function(e,j){var p,r=e.split("."),s="",m=r.length;for(p=0;p<m;p++)s+=("00"+r[p]).slice(-3);return h.formatFloat(s,j)}, type:"numeric"});h.addParser({id:"url",is:function(e){return/^(https?|ftp|file):\/\//.test(e)},format:function(e){return j.trim(e.replace(/(https?|ftp|file):\/\//,""))},type:"text"});h.addParser({id:"isoDate",is:function(e){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(e)},format:function(e,j){return h.formatFloat(""!==e?(new Date(e.replace(/-/g,"/"))).getTime()||"":"",j)},type:"numeric"});h.addParser({id:"percent",is:function(e){return/(\d\s?%|%\s?\d)/.test(e)},format:function(e,j){return h.formatFloat(e.replace(/%/g, ""),j)},type:"numeric"});h.addParser({id:"usLongDate",is:function(e){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(e)},format:function(e,j){return h.formatFloat((new Date(e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",j)},type:"numeric"});h.addParser({id:"shortDate",is:function(e){return/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/.test(e)},format:function(e,j,p,r){p=j.config;var s=p.headerList[r],m=s.shortDateFormat;"undefined"=== typeof m&&(m=s.shortDateFormat=h.getData(s,p.headers[r],"dateFormat")||p.dateFormat);e=e.replace(/\s+/g," ").replace(/[\-|\.|\,]/g,"/");"mmddyyyy"===m?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2"):"ddmmyyyy"===m?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1"):"yyyymmdd"===m&&(e=e.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3"));return h.formatFloat((new Date(e)).getTime()||"",j)},type:"numeric"});h.addParser({id:"time",is:function(e){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(e)}, format:function(e,j){return h.formatFloat((new Date("2000/01/01 "+e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",j)},type:"numeric"});h.addParser({id:"digit",is:function(e){return h.isDigit(e)},format:function(e,j){return h.formatFloat(e.replace(/[^\w,. \-()]/g,""),j)},type:"numeric"});h.addParser({id:"metadata",is:function(){return!1},format:function(e,h,p){e=h.config;e=!e.parserMetadataName?"sortValue":e.parserMetadataName;return j(p).metadata()[e]},type:"numeric"});h.addWidget({id:"zebra", format:function(e,u,p){var r,s,m,F,G,C,H=RegExp(u.cssChildRow,"i"),g=u.$tbodies;u.debug&&(G=new Date);for(e=0;e<g.length;e++)r=g.eq(e),C=r.children("tr").length,1<C&&(m=0,r=r.children("tr:visible"),r.each(function(){s=j(this);H.test(this.className)||m++;F=0===m%2;s.removeClass(p.zebra[F?1:0]).addClass(p.zebra[F?0:1])}));u.debug&&h.benchmark("Applying Zebra widget",G)},remove:function(e,h){var p,r,s=h.$tbodies,m=(h.widgetOptions.zebra||["even","odd"]).join(" ");for(p=0;p<s.length;p++)r=j.tablesorter.processTbody(e, s.eq(p),!0),r.children().removeClass(m),j.tablesorter.processTbody(e,r,!1)}})}(jQuery);
@@ -1,12 +0,0 @@
1
- /*! tableSorter 2.4+ widgets - updated 1/10/2013 */
2
- ;(function(b){
3
- b.tablesorter=b.tablesorter||{};
4
- b.tablesorter.themes={bootstrap:{table:"table table-bordered table-striped",header:"bootstrap-header",footerRow:"",footerCells:"",icons:"",sortNone:"bootstrap-icon-unsorted",sortAsc:"icon-chevron-up",sortDesc:"icon-chevron-down",active:"",hover:"",filterRow:"",even:"",odd:""},jui:{table:"ui-widget ui-widget-content ui-corner-all",header:"ui-widget-header ui-corner-all ui-state-default",footerRow:"",footerCells:"",icons:"ui-icon",sortNone:"ui-icon-carat-2-n-s", sortAsc:"ui-icon-carat-1-n",sortDesc:"ui-icon-carat-1-s",active:"ui-state-active",hover:"ui-state-hover",filterRow:"",even:"ui-widget-content",odd:"ui-state-default"}};
5
- b.tablesorter.storage=function(d,a,e){var c,j=!1;c={};var f=d.id||b(".tablesorter").index(b(d)),h=window.location.pathname;try{j=!!localStorage.getItem}catch(n){}b.parseJSON&&(j?c=b.parseJSON(localStorage[a])||{}:(c=document.cookie.split(/[;\s|=]/),d=b.inArray(a,c)+1,c=0!==d?b.parseJSON(c[d])||{}:{}));if((e||""===e)&&window.JSON&&JSON.hasOwnProperty("stringify"))c[h]|| (c[h]={}),c[h][f]=e,j?localStorage[a]=JSON.stringify(c):(d=new Date,d.setTime(d.getTime()+31536E6),document.cookie=a+"="+JSON.stringify(c).replace(/\"/g,'"')+"; expires="+d.toGMTString()+"; path=/");else return c&&c[h]?c[h][f]:{}};
6
- b.tablesorter.addWidget({id:"uitheme",format:function(d){var a,e,c,j,f=b.tablesorter.themes,h=b(d),n=d.config,p=n.widgetOptions,q="default"!==n.theme?n.theme:p.uitheme||"jui",g=f[f[q]?q:f[p.uitheme]?p.uitheme:"jui"],m=b(n.headerList),r="tr."+(p.stickyHeaders||"tablesorter-stickyHeader"), s=g.sortNone+" "+g.sortDesc+" "+g.sortAsc;n.debug&&(a=new Date);if(!h.hasClass("tablesorter-"+q)||n.theme===q||!d.hasInitialized)""!==g.even&&(p.zebra[0]+=" "+g.even),""!==g.odd&&(p.zebra[1]+=" "+g.odd),f=h.removeClass(""===n.theme?"":"tablesorter-"+n.theme).addClass("tablesorter-"+q+" "+g.table).find("tfoot"),f.length&&f.find("tr").addClass(g.footerRow).children("th, td").addClass(g.footerCells),m.addClass(g.header).filter(":not(.sorter-false)").hover(function(){b(this).addClass(g.hover)},function(){b(this).removeClass(g.hover)}), m.find(".tablesorter-wrapper").length||m.wrapInner('<div class="tablesorter-wrapper" style="position:relative;height:100%;width:100%"></div>'),n.cssIcon&&m.find("."+n.cssIcon).addClass(g.icons),h.hasClass("hasFilters")&&m.find(".tablesorter-filter-row").addClass(g.filterRow);b.each(m,function(a){c=b(this);j=n.cssIcon?c.find("."+n.cssIcon):c;this.sortDisabled?(c.removeClass(s),j.removeClass(s+" tablesorter-icon "+g.icons)):(f=h.hasClass("hasStickyHeaders")?h.find(r).find("th").eq(a).add(c):c,e=c.hasClass(n.cssAsc)? g.sortAsc:c.hasClass(n.cssDesc)?g.sortDesc:c.hasClass(n.cssHeader)?g.sortNone:"",c[e===g.sortNone?"removeClass":"addClass"](g.active),j.removeClass(s).addClass(e))});n.debug&&b.tablesorter.benchmark("Applying "+q+" theme",a)},remove:function(d,a,e){d=b(d);var c="object"===typeof e.uitheme?"jui":e.uitheme||"jui";e="object"===typeof e.uitheme?e.uitheme:b.tablesorter.themes[b.tablesorter.themes.hasOwnProperty(c)?c:"jui"];var j=d.children("thead").children(),f=e.sortNone+" "+e.sortDesc+" "+e.sortAsc; d.removeClass("tablesorter-"+c+" "+e.table).find(a.cssHeader).removeClass(e.header);j.unbind("mouseenter mouseleave").removeClass(e.hover+" "+f+" "+e.active).find(".tablesorter-filter-row").removeClass(e.filterRow);j.find(".tablesorter-icon").removeClass(e.icons)}});
7
- b.tablesorter.addWidget({id:"columns",format:function(d){var a,e,c,j,f,h,n,p,q,g=b(d),m=d.config,r=m.widgetOptions,s=m.$tbodies,u=m.sortList,w=u.length,l=["primary","secondary","tertiary"],l=m.widgetColumns&&m.widgetColumns.hasOwnProperty("css")? m.widgetColumns.css||l:r&&r.hasOwnProperty("columns")?r.columns||l:l;h=l.length-1;n=l.join(" ");m.debug&&(f=new Date);for(q=0;q<s.length;q++)a=b.tablesorter.processTbody(d,s.eq(q),!0),e=a.children("tr"),e.each(function(){j=b(this);if("none"!==this.style.display&&(c=j.children().removeClass(n),u&&u[0]&&(c.eq(u[0][0]).addClass(l[0]),1<w)))for(p=1;p<w;p++)c.eq(u[p][0]).addClass(l[p]||l[h])}),b.tablesorter.processTbody(d,a,!1);e=!1!==r.columns_thead?"thead tr":"";!1!==r.columns_tfoot&&(e+=(""===e?"": ",")+"tfoot tr");if(e.length&&(j=g.find(e).children().removeClass(n),u&&u[0]&&(j.filter('[data-column="'+u[0][0]+'"]').addClass(l[0]),1<w)))for(p=1;p<w;p++)j.filter('[data-column="'+u[p][0]+'"]').addClass(l[p]||l[h]);m.debug&&b.tablesorter.benchmark("Applying Columns widget",f)},remove:function(d,a){var e,c,j=a.$tbodies,f=(a.widgetOptions.columns||["primary","secondary","tertiary"]).join(" ");a.$headers.removeClass(f);b(d).children("tfoot").children("tr").children("th, td").removeClass(f);for(e=0;e< j.length;e++)c=b.tablesorter.processTbody(d,j.eq(e),!0),c.children("tr").each(function(){b(this).children().removeClass(f)}),b.tablesorter.processTbody(d,c,!1)}});
8
- b.tablesorter.addWidget({id:"filter",format:function(d){if(d.config.parsers&&!b(d).hasClass("hasFilters")){var a,e,c,j,f,h,n,p,q,g,m,r,s,u,w,l,y,G="",A=b.tablesorter,t=d.config,B=b(t.headerList),k=t.widgetOptions,z=k.filter_cssFilter||"tablesorter-filter",v=b(d).addClass("hasFilters"),E=t.$tbodies,F=t.parsers.length,C=[/^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/, RegExp(t.cssChildRow),/undefined|number/,/(^[\"|\'|=])|([\"|\'|=]$)/,/[\"\'=]/g,/[^\w,. \-()]/g,/[<>=]/g],M=B.map(function(a){return A.getData?"parsed"===A.getData(B.filter('[data-column="'+a+'"]:last'),t.headers[a],"filter"):b(this).hasClass("filter-parsed")}).get(),H,I,D=function(a){var c=b.isArray(a),e=v.find("thead").eq(0).children("tr").find("select."+z+", input."+z),d=c?a:e.map(function(){return b(this).val()||""}).get(),f=(d||[]).join("");c&&e.each(function(c,d){b(d).val(a[c]||"")});!0===k.filter_hideFilters&& v.find(".tablesorter-filter-row").trigger(""===f?"mouseleave":"mouseenter");if(!(G===f&&!1!==a))if(v.trigger("filterStart",[d]),t.showProcessing)setTimeout(function(){J(a,d,f);return!1},30);else return J(a,d,f),!1},J=function(j,g,h){var m,q,s,r,y,x,z;t.debug&&(z=new Date);for(c=0;c<E.length;c++){j=b.tablesorter.processTbody(d,E.eq(c),!0);m=j.children("tr");y=m.length;if(""===h||k.filter_serversideFiltering)m.show().removeClass("filtered");else for(e=0;e<y;e++)if(!C[1].test(m[e].className)){r=!0;s= m.eq(e).nextUntil("tr:not(."+t.cssChildRow+")");l=s.length&&(k&&k.hasOwnProperty("filter_childRows")&&"undefined"!==typeof k.filter_childRows?k.filter_childRows:1)?s.text():"";l=k.filter_ignoreCase?l.toLocaleLowerCase():l;q=m.eq(e).children("td");for(a=0;a<F;a++)if(g[a]){n=k.filter_useParsedData||M[a]?t.cache[c].normalized[e][a]:b.trim(q.eq(a).text());p=!C[2].test(typeof n)&&k.filter_ignoreCase?n.toLocaleLowerCase():n;x=r;f=k.filter_ignoreCase?g[a].toLocaleLowerCase():g[a];if(k.filter_functions&& k.filter_functions[a])!0===k.filter_functions[a]?x=B.filter('[data-column="'+a+'"]:last').hasClass("filter-match")?0<=p.search(f):g[a]===n:"function"===typeof k.filter_functions[a]?x=k.filter_functions[a](n,t.cache[c].normalized[e][a],g[a],a):"function"===typeof k.filter_functions[a][g[a]]&&(x=k.filter_functions[a][g[a]](n,t.cache[c].normalized[e][a],g[a],a));else if(C[0].test(f)){u=C[0].exec(f);try{x=RegExp(u[1],u[2]).test(p)}catch(D){x=!1}}else C[3].test(f)&&p===f.replace(C[4],"")?x=!0:/^\!/.test(f)? (f=f.replace("!",""),w=p.search(b.trim(f)),x=""===f?!0:!(k.filter_startsWith?0===w:0<=w)):/^[<>]=?/.test(f)?(u=isNaN(p)?b.tablesorter.formatFloat(p.replace(C[5],""),d):b.tablesorter.formatFloat(p,d),w=b.tablesorter.formatFloat(f.replace(C[5],"").replace(C[6],""),d),/>/.test(f)&&(x=/>=/.test(f)?u>=w:u>w),/</.test(f)&&(x=/<=/.test(f)?u<=w:u<w)):/[\?|\*]/.test(f)?x=RegExp(f.replace(/\?/g,"\\S{1}").replace(/\*/g,"\\S*")).test(p):(n=(p+l).indexOf(f),x=!k.filter_startsWith&&0<=n||k.filter_startsWith&&0=== n);r=x?r?!0:!1:!1}m[e].style.display=r?"":"none";m.eq(e)[r?"removeClass":"addClass"]("filtered");if(s.length)s[r?"show":"hide"]()}b.tablesorter.processTbody(d,j,!1)}G=h;t.debug&&A.benchmark("Completed filter widget search",z);v.trigger("applyWidgets");v.trigger("filterEnd")},K=function(a,f){var g,h=[];a=parseInt(a,10);g='<option value="">'+(B.filter('[data-column="'+a+'"]:last').attr("data-placeholder")||"")+"</option>";for(c=0;c<E.length;c++){j=t.cache[c].row.length;for(e=0;e<j;e++)k.filter_useParsedData? h.push(""+t.cache[c].normalized[e][a]):(l=t.cache[c].row[e][0].cells[a])&&h.push(b.trim(t.supportsTextContent?l.textContent:b(l).text()))}h=b.grep(h,function(a,c){return b.inArray(a,h)===c});h=A.sortText?h.sort(function(b,c){return A.sortText(d,b,c,a)}):h.sort(!0);for(c=0;c<h.length;c++)g+='<option value="'+h[c]+'">'+h[c]+"</option>";v.find("thead").find("select."+z+'[data-column="'+a+'"]')[f?"html":"append"](g)},L=function(b){for(a=0;a<F;a++)if(l=B.filter('[data-column="'+a+'"]:last'),(l.hasClass("filter-select")|| k.filter_functions&&!0===k.filter_functions[a])&&!l.hasClass("filter-false"))k.filter_functions||(k.filter_functions={}),k.filter_functions[a]=!0,K(a,b)};t.debug&&(H=new Date);k.filter_ignoreCase=!1!==k.filter_ignoreCase;k.filter_useParsedData=!0===k.filter_useParsedData;if(!1!==k.filter_columnFilters&&B.filter(".filter-false").length!==B.length){l='<tr class="tablesorter-filter-row">';for(a=0;a<F;a++)s=!1,s=B.filter('[data-column="'+a+'"]:last'),h=k.filter_functions&&k.filter_functions[a]&&"function"!== typeof k.filter_functions[a]||s.hasClass("filter-select"),l+="<td>",l=h?l+('<select data-column="'+a+'" class="'+z):l+('<input type="search" placeholder="'+(s.attr("data-placeholder")||"")+'" data-column="'+a+'" class="'+z),s=A.getData?"false"===A.getData(s[0],t.headers[a],"filter"):t.headers[a]&&t.headers[a].hasOwnProperty("filter")&&!1===t.headers[a].filter||s.hasClass("filter-false"),l+=s?' disabled" disabled':'"',l+=(h?"></select>":">")+"</td>";v.find("thead").eq(0).append(l+="</tr>")}v.bind(["addRows", "updateCell","update","appendCache","search"].join(".tsfilter "),function(b,a){"search"!==b.type&&L(!0);D("search"===b.type?a:"");return!1}).find("input."+z).bind("keyup search",function(b,a){if(!(32>b.which&&8!==b.which||37<=b.which&&40>=b.which)){if("undefined"!==typeof a)return D(a),!1;clearTimeout(I);I=setTimeout(function(){D()},k.filter_searchDelay||300)}});k.filter_reset&&b(k.filter_reset).length&&b(k.filter_reset).bind("click",function(){v.find("."+z).val("");D();return!1});if(k.filter_functions)for(y in k.filter_functions)if(k.filter_functions.hasOwnProperty(y)&& "string"===typeof y)if(l=B.filter('[data-column="'+y+'"]:last'),h="",!0===k.filter_functions[y]&&!l.hasClass("filter-false"))K(y);else if("string"===typeof y&&!l.hasClass("filter-false")){for(g in k.filter_functions[y])"string"===typeof g&&(h+=""===h?'<option value="">'+(l.attr("data-placeholder")||"")+"</option>":"",h+='<option value="'+g+'">'+g+"</option>");v.find("thead").find("select."+z+'[data-column="'+y+'"]').append(h)}L(!0);v.find("select."+z).bind("change search",function(){D()});!0===k.filter_hideFilters&& v.find(".tablesorter-filter-row").addClass("hideme").bind("mouseenter mouseleave",function(a){var c;m=b(this);clearTimeout(q);q=setTimeout(function(){/enter|over/.test(a.type)?m.removeClass("hideme"):b(document.activeElement).closest("tr")[0]!==m[0]&&(c=v.find("."+(k.filter_cssFilter||"tablesorter-filter")).map(function(){return b(this).val()||""}).get().join(""),""===c&&m.addClass("hideme"))},200)}).find("input, select").bind("focus blur",function(a){r=b(this).closest("tr");clearTimeout(q);q=setTimeout(function(){if(""=== v.find("."+(k.filter_cssFilter||"tablesorter-filter")).map(function(){return b(this).val()||""}).get().join(""))r["focus"===a.type?"removeClass":"addClass"]("hideme")},200)});t.showProcessing&&v.bind("filterStart filterEnd",function(a,c){var d=c?v.find("."+t.cssHeader).filter("[data-column]").filter(function(){return""!==c[b(this).data("column")]}):"";A.isProcessing(v[0],"filterStart"===a.type,c?d:"")});t.debug&&A.benchmark("Applying Filter widget",H);v.trigger("filterInit")}},remove:function(d,a, e){var c,j;c=b(d);a=a.$tbodies;c.removeClass("hasFilters").unbind(["addRows","updateCell","update","appendCache","search"].join(".tsfilter")).find(".tablesorter-filter-row").remove();for(c=0;c<a.length;c++)j=b.tablesorter.processTbody(d,a.eq(c),!0),j.children().removeClass("filtered").show(),b.tablesorter.processTbody(d,j,!1);e.filterreset&&b(e.filter_reset).unbind("click")}});
9
- b.tablesorter.addWidget({id:"stickyHeaders",format:function(d){if(!b(d).hasClass("hasStickyHeaders")){var a=b(d).addClass("hasStickyHeaders"), e=d.config,c=e.widgetOptions,j=b(window),f=b(d).children("thead:first"),h=f.children("tr:not(.sticky-false)").children();d=c.stickyHeaders||"tablesorter-stickyHeader";var n=h.eq(0).parent(),p=a.find("tfoot"),c=c.$sticky=a.clone(),q=c.children("thead:first").addClass(d).css({width:f.outerWidth(!0),position:"fixed",margin:0,top:0,visibility:"hidden",zIndex:1}),g=q.children("tr:not(.sticky-false)").children(),m="",r=0,s=function(){var c=navigator.userAgent;r=0;"collapse"!==a.css("border-collapse")&& !/(webkit|msie)/i.test(c)&&(r=2*parseInt(h.eq(0).css("border-left-width"),10));q.css({left:f.offset().left-j.scrollLeft()-r,width:f.outerWidth()});g.each(function(a){a=h.eq(a);b(this).css({width:a.width()-r,height:a.height()})}).find(".tablesorter-header-inner").each(function(a){a=h.eq(a).find(".tablesorter-header-inner").width();b(this).width(a)})};c.find("thead:gt(0),tr.sticky-false,tbody,tfoot,caption").remove();c.css({height:0,width:0,padding:0,margin:0,border:0});q.find("tr.sticky-false").remove(); g.find(".tablesorter-resizer").remove();a.bind("sortEnd.tsSticky",function(){h.each(function(a){a=g.eq(a);a.attr("class",b(this).attr("class"));e.cssIcon&&a.find("."+e.cssIcon).attr("class",b(this).find("."+e.cssIcon).attr("class"))})}).bind("pagerComplete.tsSticky",function(){s()});h.find("*").andSelf().filter(e.selectorSort).each(function(a){var c=b(this);g.eq(a).bind("mouseup",function(a){c.trigger(a,!0)}).bind("mousedown",function(){this.onselectstart=function(){return!1};return!1})});a.after(c); j.bind("scroll.tsSticky",function(){var b=n.offset(),c=j.scrollTop(),d=a.height()-(q.height()+(p.height()||0)),b=c>b.top&&c<b.top+d?"visible":"hidden";q.css({left:f.offset().left-j.scrollLeft()-r,visibility:b});b!==m&&(s(),m=b)}).bind("resize.tsSticky",function(){s()})}},remove:function(d,a,e){d=b(d);a=e.stickyHeaders||"tablesorter-stickyHeader";d.removeClass("hasStickyHeaders").unbind("sortEnd.tsSticky pagerComplete.tsSticky").find("."+a).remove();e.$sticky&&e.$sticky.remove();b(window).unbind("scroll.tsSticky resize.tsSticky")}});
10
- b.tablesorter.addWidget({id:"resizable",format:function(d){if(!b(d).hasClass("hasResizable")){b(d).addClass("hasResizable");var a,e,c,j,f,h=b(d),n=d.config,p=n.widgetOptions,q=0,g=null,m=null,r=function(){q=0;g=m=null;b(window).trigger("resize")};if(c=b.tablesorter.storage&&!1!==p.resizable?b.tablesorter.storage(d,"tablesorter-resizable"):{})for(e in c)!isNaN(e)&&e<n.headerList.length&&b(n.headerList[e]).width(c[e]);h.children("thead:first").find("tr").each(function(){j=b(this).children();b(this).find(".tablesorter-wrapper").length|| j.wrapInner('<div class="tablesorter-wrapper" style="position:relative;height:100%;width:100%"></div>');j=j.slice(0,-1);f=f?f.add(j):j});f.each(function(){a=b(this);e=parseInt(a.css("padding-right"),10)+8;a.find(".tablesorter-wrapper").append('<div class="tablesorter-resizer" style="cursor:w-resize;position:absolute;height:100%;width:16px;right:-'+e+'px;top:0;z-index:1;"></div>')}).bind("mousemove.tsresize",function(a){if(0!==q&&g){var b=a.pageX-q;g.width(g.width()+b);m.width(m.width()-b);q=a.pageX}}).bind("mouseup.tsresize", function(){b.tablesorter.storage&&g&&(c[g.index()]=g.width(),c[m.index()]=m.width(),!1!==p.resizable&&b.tablesorter.storage(d,"tablesorter-resizable",c));r()}).find(".tablesorter-resizer").bind("mousedown",function(a){g=b(a.target).parents("th:last");m=g.next();q=a.pageX});h.find("thead:first").bind("mouseup.tsresize mouseleave.tsresize",function(){r()}).bind("contextmenu.tsresize",function(){b.tablesorter.resizableReset(d);var a=b.isEmptyObject?b.isEmptyObject(c):c==={};c={};return a})}},remove:function(d){b(d).removeClass("hasResizable").find("thead").unbind("mouseup.tsresize mouseleave.tsresize contextmenu.tsresize").find("tr").children().unbind("mousemove.tsresize mouseup.tsresize").find(".tablesorter-wrapper").each(function(){b(this).find(".tablesorter-resizer").remove(); b(this).replaceWith(b(this).contents())});b.tablesorter.resizableReset(d)}});b.tablesorter.resizableReset=function(d){b(d.config.headerList).width("auto");b.tablesorter.storage(d,"tablesorter-resizable",{})};
11
- b.tablesorter.addWidget({id:"saveSort",init:function(b,a){a.format(b,!0)},format:function(d,a){var e,c,j=d.config;e=!1!==j.widgetOptions.saveSort;var f={sortList:j.sortList};j.debug&&(c=new Date);b(d).hasClass("hasSaveSort")?e&&(d.hasInitialized&&b.tablesorter.storage)&&(b.tablesorter.storage(d, "tablesorter-savesort",f),j.debug&&b.tablesorter.benchmark("saveSort widget: Saving last sort: "+j.sortList,c)):(b(d).addClass("hasSaveSort"),f="",b.tablesorter.storage&&(f=(e=b.tablesorter.storage(d,"tablesorter-savesort"))&&e.hasOwnProperty("sortList")&&b.isArray(e.sortList)?e.sortList:"",j.debug&&b.tablesorter.benchmark('saveSort: Last sort loaded: "'+f+'"',c)),a&&f&&0<f.length?j.sortList=f:d.hasInitialized&&(f&&0<f.length)&&b(d).trigger("sorton",[f]))},remove:function(d){b.tablesorter.storage(d, "tablesorter-savesort","")}})
12
- })(jQuery);