jquery-tablesorter 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Simple integration of jquery-tablesorter into the asset pipeline.
6
6
 
7
- Current tablesorter version: 2.6.2 (12/20/2012), [documentation]
7
+ Current tablesorter version: 2.7.3 (1/10/2013), [documentation]
8
8
 
9
9
  Any issue associate with the js/css files, please report to [Mottie's fork].
10
10
 
@@ -1,3 +1,3 @@
1
1
  module JqueryTablesorter
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * tablesorter pager plugin
3
- * updated 12/20/2012
3
+ * updated 1/4/2013
4
4
  */
5
5
  /*jshint browser:true, jquery:true, unused:false */
6
6
  ;(function($) {
@@ -94,7 +94,7 @@
94
94
 
95
95
  updatePageDisplay = function(table, c) {
96
96
  var i, p, s, t, out, f = $(table).hasClass('hasFilters') && !c.ajaxUrl;
97
- c.filteredRows = (f) ? $(table).find('tbody tr:not(.filtered)').length : c.totalRows;
97
+ c.filteredRows = (f) ? table.config.$tbodies.children('tr:not(.filtered,.remove-me)').length : c.totalRows;
98
98
  c.filteredPages = (f) ? Math.ceil( c.filteredRows / c.size ) : c.totalPages;
99
99
  if ( Math.min( c.totalPages, c.filteredPages ) > 0 ) {
100
100
  t = (c.size * c.page > c.filteredRows);
@@ -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 remove-me" style="height:' + d + 'px;"></tr>');
141
+ $b.append('<tr class="pagerSavedHeightSpacer ' + table.config.selectorRemove.replace('.','') + '" style="height:' + d + 'px;"></tr>');
142
142
  }
143
143
  }
144
144
  }
@@ -188,9 +188,9 @@
188
188
  var i, j, hsh, $f, $sh,
189
189
  $t = $(table),
190
190
  tc = table.config,
191
- $b = $(table.tBodies).filter(':not(.' + tc.cssInfoBlock + ')'),
191
+ $b = c.$tbodies,
192
192
  hl = $t.find('thead th').length, tds = '',
193
- err = '<tr class="' + c.cssErrorRow + ' ' + tc.selectorRemove + '"><td style="text-align: center;" colspan="' + hl + '">' +
193
+ err = '<tr class="' + c.cssErrorRow + ' ' + tc.selectorRemove.replace('.','') + '"><td style="text-align: center;" colspan="' + hl + '">' +
194
194
  (exception ? exception.message + ' (' + exception.name + ')' : 'No rows found') + '</td></tr>',
195
195
  result = c.ajaxProcessing(data) || [ 0, [] ],
196
196
  d = result[1] || [],
@@ -302,6 +302,7 @@
302
302
  },
303
303
 
304
304
  renderTable = function(table, rows, c) {
305
+ c.isDisabled = false; // needed because sorting will change the page and re-enable the pager
305
306
  var i, j, o,
306
307
  f = document.createDocumentFragment(),
307
308
  l = rows.length,
@@ -454,19 +455,20 @@
454
455
  $t
455
456
  .unbind('filterStart.pager filterEnd.pager sortEnd.pager disable.pager enable.pager destroy.pager update.pager')
456
457
  .bind('filterStart.pager', function(e, filters) {
458
+ $.data(table, 'pagerUpdateTriggered', false);
457
459
  c.currentFilters = filters;
458
460
  })
459
461
  // update pager after filter widget completes
460
- .bind('filterEnd.pager sortEnd.pager', function() {
462
+ .bind('filterEnd.pager sortEnd.pager', function(e) {
461
463
  //Prevent infinite event loops from occuring by setting this in all moveToPage calls and catching it here.
462
464
  if ($.data(table, 'pagerUpdateTriggered')) {
463
465
  $.data(table, 'pagerUpdateTriggered', false);
464
466
  return;
465
467
  }
466
- c.page = 0;
468
+ if (e.type === 'filterEnd') { c.page = 0; }
467
469
  updatePageDisplay(table, c);
468
470
  moveToPage(table, c);
469
- changeHeight(table, c);
471
+ fixHeight(table, c);
470
472
  })
471
473
  .bind('disable.pager', function(){
472
474
  showAllRows(table, c);
@@ -544,6 +546,8 @@
544
546
  hideRowsSetup(table, c);
545
547
  }
546
548
 
549
+ changeHeight(table, c);
550
+
547
551
  // pager initialized
548
552
  if (!c.ajax) {
549
553
  c.initialized = true;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * TableSorter 2.6.2 - Client-side table sorting with ease!
2
+ * TableSorter 2.7.3 - Client-side table sorting with ease!
3
3
  * @requires jQuery v1.2.6+
4
4
  *
5
5
  * Copyright (c) 2007 Christian Bach
@@ -24,18 +24,22 @@
24
24
 
25
25
  var ts = this;
26
26
 
27
- ts.version = "2.6.2";
27
+ ts.version = "2.7.3";
28
28
 
29
29
  ts.parsers = [];
30
30
  ts.widgets = [];
31
31
  ts.defaults = {
32
32
 
33
- // appearance
33
+ // *** appearance
34
34
  theme : 'default', // adds tablesorter-{theme} to the table for styling
35
35
  widthFixed : false, // adds colgroup to fix widths of columns
36
36
  showProcessing : false, // show an indeterminate timer icon in the header when the table is sorted or filtered.
37
37
 
38
- // functionality
38
+ headerTemplate : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> (class from cssIcon)
39
+ onRenderTemplate : null, // function(index, template){ return template; }, (template is a string)
40
+ onRenderHeader : null, // function(index){}, (nothing to return)
41
+
42
+ // *** functionality
39
43
  cancelSelection : true, // prevent text selection in the header
40
44
  dateFormat : 'mmddyyyy', // other options: "ddmmyyy" or "yyyymmdd"
41
45
  sortMultiSortKey : 'shiftKey', // key used to select additional columns
@@ -44,7 +48,7 @@
44
48
  delayInit : false, // if false, the parsed table contents will not update until the first sort
45
49
  serverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used.
46
50
 
47
- // sort options
51
+ // *** sort options
48
52
  headers : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.
49
53
  ignoreCase : true, // ignore case while sorting
50
54
  sortForce : null, // column(s) first sorted; always applied
@@ -61,18 +65,17 @@
61
65
  textExtraction : 'simple', // text extraction method/function - function(node, table, cellIndex){}
62
66
  textSorter : null, // use custom text sorter - function(a,b){ return a.sort(b); } // basic sort
63
67
 
64
- // widget options
68
+ // *** widget options
65
69
  widgets: [], // method to add widgets, e.g. widgets: ['zebra']
66
70
  widgetOptions : {
67
71
  zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
68
72
  },
69
73
  initWidgets : true, // apply widgets on tablesorter initialization
70
74
 
71
- // callbacks
75
+ // *** callbacks
72
76
  initialized : null, // function(table){},
73
- onRenderHeader : null, // function(index){},
74
77
 
75
- // css class names
78
+ // *** css class names
76
79
  tableClass : 'tablesorter',
77
80
  cssAsc : 'tablesorter-headerAsc',
78
81
  cssChildRow : 'tablesorter-childRow', // previously "expand-child"
@@ -83,15 +86,15 @@
83
86
  cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name
84
87
  cssProcessing : 'tablesorter-processing', // processing icon applied to header during sort/filter
85
88
 
86
- // selectors
89
+ // *** selectors
87
90
  selectorHeaders : '> thead th, > thead td',
88
91
  selectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort
89
92
  selectorRemove : '.remove-me',
90
93
 
91
- // advanced
94
+ // *** advanced
92
95
  debug : false,
93
96
 
94
- // Internal variables
97
+ // *** Internal variables
95
98
  headerList: [],
96
99
  empties: {},
97
100
  strings: {},
@@ -167,7 +170,7 @@
167
170
 
168
171
  function buildParserCache(table) {
169
172
  var c = table.config,
170
- tb = $(table.tBodies).filter(':not(.' + c.cssInfoBlock + ')'),
173
+ tb = c.$tbodies,
171
174
  rows, list, l, i, h, ch, p, parsersDebug = "";
172
175
  if ( tb.length === 0) {
173
176
  return c.debug ? log('*Empty table!* Not building a parser cache') : '';
@@ -273,6 +276,7 @@
273
276
  c2 = c.cache,
274
277
  r, n, totalRows, checkCell, $bk, $tb,
275
278
  i, j, k, l, pos, appendTime;
279
+ if (!c2[0]) { return; } // empty table - fixes #206
276
280
  if (c.debug) {
277
281
  appendTime = new Date();
278
282
  }
@@ -362,17 +366,26 @@
362
366
 
363
367
  function buildHeaders(table) {
364
368
  var header_index = computeThIndexes(table), ch, $t,
365
- t, lock, time, $tableHeaders, c = table.config;
366
- c.headerList = [];
369
+ h, i, t, lock, time, $tableHeaders, c = table.config;
370
+ c.headerList = [], c.headerContent = [];
367
371
  if (c.debug) {
368
372
  time = new Date();
369
373
  }
374
+ i = c.cssIcon ? '<i class="' + c.cssIcon + '"></i>' : ''; // add icon if cssIcon option exists
370
375
  $tableHeaders = $(table).find(c.selectorHeaders).each(function(index) {
371
376
  $t = $(this);
372
377
  ch = c.headers[index];
373
- t = c.cssIcon ? '<i class="' + c.cssIcon + '"></i>' : ''; // add icon if cssIcon option exists
374
- this.innerHTML = '<div class="tablesorter-header-inner">' + this.innerHTML + t + '</div>'; // faster than wrapInner
378
+ c.headerContent[index] = this.innerHTML; // save original header content
379
+ // set up header template
380
+ t = c.headerTemplate.replace(/\{content\}/g, this.innerHTML).replace(/\{icon\}/g, i);
381
+ if (c.onRenderTemplate) {
382
+ h = c.onRenderTemplate.apply($t, [index, t]);
383
+ if (h && typeof h === 'string') { t = h; } // only change t if something is returned
384
+ }
385
+ this.innerHTML = '<div class="tablesorter-header-inner">' + t + '</div>'; // faster than wrapInner
386
+
375
387
  if (c.onRenderHeader) { c.onRenderHeader.apply($t, [index]); }
388
+
376
389
  this.column = header_index[this.parentNode.rowIndex + "-" + this.cellIndex];
377
390
  this.order = formatSortingOrder( ts.getData($t, ch, 'sortInitialOrder') || c.sortInitialOrder ) ? [1,0,2] : [0,1,2];
378
391
  this.count = -1; // set to -1 because clicking on the header automatically adds one
@@ -442,8 +455,7 @@
442
455
  }
443
456
 
444
457
  function updateHeaderSortCount(table, list) {
445
- var s, o, c = table.config,
446
- l = c.headerList.length,
458
+ var s, t, o, c = table.config,
447
459
  sl = list || c.sortList;
448
460
  c.sortList = [];
449
461
  $.each(sl, function(i,v){
@@ -453,7 +465,8 @@
453
465
  o = c.headerList[s[0]];
454
466
  if (o) { // prevents error if sorton array is wrong
455
467
  c.sortList.push(s);
456
- o.count = s[1] % (c.sortReset ? 3 : 2);
468
+ t = $.inArray(s[1], o.order); // fixes issue #167
469
+ o.count = t >= 0 ? t : s[1] % (c.sortReset ? 3 : 2);
457
470
  }
458
471
  });
459
472
  }
@@ -467,7 +480,7 @@
467
480
  var dynamicExp, sortWrapper, col, mx = 0, dir = 0, tc = table.config,
468
481
  sortList = tc.sortList, l = sortList.length, bl = table.tBodies.length,
469
482
  sortTime, i, j, k, c, colMax, cache, lc, s, e, order, orgOrderCol;
470
- if (tc.serverSideSorting) {
483
+ if (tc.serverSideSorting || !tc.cache[0]) { // empty table - fixes #206
471
484
  return;
472
485
  }
473
486
  if (tc.debug) { sortTime = new Date(); }
@@ -526,18 +539,18 @@
526
539
  return (this.config.debug) ? log('stopping initialization! No thead, tbody or tablesorter has already been initialized') : '';
527
540
  }
528
541
  // declare
529
- var $cell, $this = $(this),
542
+ var $cell, $this = $(this), $t0 = this,
530
543
  c, i, j, k = '', a, s, o, downTime,
531
544
  m = $.metadata;
532
545
  // initialization flag
533
- this.hasInitialized = false;
546
+ $t0.hasInitialized = false;
534
547
  // new blank config object
535
- this.config = {};
548
+ $t0.config = {};
536
549
  // merge and extend
537
- c = $.extend(true, this.config, ts.defaults, settings);
550
+ c = $.extend(true, $t0.config, ts.defaults, settings);
538
551
  // save the settings where they read
539
- $.data(this, "tablesorter", c);
540
- if (c.debug) { $.data( this, 'startoveralltimer', new Date()); }
552
+ $.data($t0, "tablesorter", c);
553
+ if (c.debug) { $.data( $t0, 'startoveralltimer', new Date()); }
541
554
  // constants
542
555
  c.supportsTextContent = $('<span>x</span>')[0].textContent === 'x';
543
556
  c.supportsDataObject = parseFloat($.fn.jquery) >= 1.4;
@@ -547,14 +560,15 @@
547
560
  if (!/tablesorter\-/.test($this.attr('class'))) {
548
561
  k = (c.theme !== '' ? ' tablesorter-' + c.theme : '');
549
562
  }
550
- $this.addClass(c.tableClass + k);
563
+ c.$table = $this.addClass(c.tableClass + k);
564
+ c.$tbodies = $this.children('tbody:not(.' + c.cssInfoBlock + ')');
551
565
  // build headers
552
- c.$headers = buildHeaders(this);
566
+ c.$headers = buildHeaders($t0);
553
567
  // try to auto detect column type, and store in tables config
554
- c.parsers = buildParserCache(this);
568
+ c.parsers = buildParserCache($t0);
555
569
  // build the cache for the tbody cells
556
570
  // delayInit will delay building the cache until the user starts a sort
557
- if (!c.delayInit) { buildCache(this); }
571
+ if (!c.delayInit) { buildCache($t0); }
558
572
  // apply event handling to headers
559
573
  // this is to big, perhaps break it out?
560
574
  c.$headers
@@ -573,10 +587,10 @@
573
587
  }
574
588
  // ignore long clicks (prevents resizable widget from initializing a sort)
575
589
  if (external !== true && (new Date().getTime() - downTime > 250)) { return false; }
576
- if (c.delayInit && !c.cache) { buildCache($this[0]); }
590
+ if (c.delayInit && !c.cache) { buildCache($t0); }
577
591
  if (!cell.sortDisabled) {
578
592
  // Only call sortStart if sorting is enabled
579
- $this.trigger("sortStart", $this[0]);
593
+ $this.trigger("sortStart", $t0);
580
594
  // store exp, for speed
581
595
  // $cell = $(this);
582
596
  k = !e[c.sortMultiSortKey];
@@ -662,13 +676,13 @@
662
676
  }
663
677
  }
664
678
  // sortBegin event triggered immediately before the sort
665
- $this.trigger("sortBegin", $this[0]);
679
+ $this.trigger("sortBegin", $t0);
666
680
  // setTimeout needed so the processing icon shows up
667
681
  setTimeout(function(){
668
682
  // set css for headers
669
- setHeadersCss($this[0]);
670
- multisort($this[0]);
671
- appendToTable($this[0]);
683
+ setHeadersCss($t0);
684
+ multisort($t0);
685
+ appendToTable($t0);
672
686
  }, 1);
673
687
  }
674
688
  });
@@ -685,23 +699,23 @@
685
699
  .unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave')
686
700
  .bind("sortReset", function(){
687
701
  c.sortList = [];
688
- setHeadersCss(this);
689
- multisort(this);
690
- appendToTable(this);
702
+ setHeadersCss($t0);
703
+ multisort($t0);
704
+ appendToTable($t0);
691
705
  })
692
706
  .bind("update", function(e, resort, callback) {
693
707
  // remove rows/elements before update
694
- $(c.selectorRemove, this).remove();
708
+ $(c.selectorRemove, $t0).remove();
695
709
  // rebuild parsers
696
- c.parsers = buildParserCache(this);
710
+ c.parsers = buildParserCache($t0);
697
711
  // rebuild the cache map
698
- buildCache(this);
712
+ buildCache($t0);
699
713
  checkResort($this, resort, callback);
700
714
  })
701
715
  .bind("updateCell", function(e, cell, resort, callback) {
702
716
  // get position from the dom
703
717
  var l, row, icell,
704
- t = this, $tb = $(this).find('tbody'),
718
+ $tb = $this.find('tbody'),
705
719
  // update cache - format: function(s, table, cell, cellIndex)
706
720
  // no closest in jQuery v1.2.6 - tbdy = $tb.index( $(cell).closest('tbody') ),$row = $(cell).closest('tr');
707
721
  tbdy = $tb.index( $(cell).parents('tbody').filter(':last') ),
@@ -711,25 +725,25 @@
711
725
  if ($tb.length && tbdy >= 0) {
712
726
  row = $tb.eq(tbdy).find('tr').index( $row );
713
727
  icell = cell.cellIndex;
714
- l = t.config.cache[tbdy].normalized[row].length - 1;
715
- t.config.cache[tbdy].row[t.config.cache[tbdy].normalized[row][l]] = $row;
716
- t.config.cache[tbdy].normalized[row][icell] = c.parsers[icell].format( getElementText(t, cell, icell), t, cell, icell );
728
+ l = $t0.config.cache[tbdy].normalized[row].length - 1;
729
+ $t0.config.cache[tbdy].row[$t0.config.cache[tbdy].normalized[row][l]] = $row;
730
+ $t0.config.cache[tbdy].normalized[row][icell] = c.parsers[icell].format( getElementText($t0, cell, icell), $t0, cell, icell );
717
731
  checkResort($this, resort, callback);
718
732
  }
719
733
  })
720
734
  .bind("addRows", function(e, $row, resort, callback) {
721
735
  var i, rows = $row.filter('tr').length,
722
- dat = [], l = $row[0].cells.length, t = this,
723
- tbdy = $(this).find('tbody').index( $row.closest('tbody') );
736
+ dat = [], l = $row[0].cells.length,
737
+ tbdy = $this.find('tbody').index( $row.closest('tbody') );
724
738
  // fixes adding rows to an empty table - see issue #179
725
739
  if (!c.parsers) {
726
- c.parsers = buildParserCache(t);
740
+ c.parsers = buildParserCache($t0);
727
741
  }
728
742
  // add each row
729
743
  for (i = 0; i < rows; i++) {
730
744
  // add each cell
731
745
  for (j = 0; j < l; j++) {
732
- dat[j] = c.parsers[j].format( getElementText(t, $row[i].cells[j], j), t, $row[i].cells[j], j );
746
+ dat[j] = c.parsers[j].format( getElementText($t0, $row[i].cells[j], j), $t0, $row[i].cells[j], j );
733
747
  }
734
748
  // add the row index to the end
735
749
  dat.push(c.cache[tbdy].row.length);
@@ -742,36 +756,36 @@
742
756
  checkResort($this, resort, callback);
743
757
  })
744
758
  .bind("sorton", function(e, list, callback, init) {
745
- $(this).trigger("sortStart", this);
759
+ $this.trigger("sortStart", this);
746
760
  // update header count index
747
- updateHeaderSortCount(this, list);
761
+ updateHeaderSortCount($t0, list);
748
762
  // set css for headers
749
- setHeadersCss(this);
763
+ setHeadersCss($t0);
750
764
  // sort the table and append it to the dom
751
- multisort(this);
752
- appendToTable(this, init);
765
+ multisort($t0);
766
+ appendToTable($t0, init);
753
767
  if (typeof callback === "function") {
754
- callback(this);
768
+ callback($t0);
755
769
  }
756
770
  })
757
771
  .bind("appendCache", function(e, callback, init) {
758
- appendToTable(this, init);
772
+ appendToTable($t0, init);
759
773
  if (typeof callback === "function") {
760
- callback(this);
774
+ callback($t0);
761
775
  }
762
776
  })
763
777
  .bind("applyWidgetId", function(e, id) {
764
- ts.getWidgetById(id).format(this, c, c.widgetOptions);
778
+ ts.getWidgetById(id).format($t0, c, c.widgetOptions);
765
779
  })
766
780
  .bind("applyWidgets", function(e, init) {
767
781
  // apply widgets
768
- ts.applyWidget(this, init);
782
+ ts.applyWidget($t0, init);
769
783
  })
770
784
  .bind("refreshWidgets", function(e, all, dontapply){
771
- ts.refreshWidgets(this, all, dontapply);
785
+ ts.refreshWidgets($t0, all, dontapply);
772
786
  })
773
787
  .bind("destroy", function(e, c, cb){
774
- ts.destroy(this, c, cb);
788
+ ts.destroy($t0, c, cb);
775
789
  });
776
790
 
777
791
  // get sort list from jQuery data or metadata
@@ -782,35 +796,35 @@
782
796
  c.sortList = $this.metadata().sortlist;
783
797
  }
784
798
  // apply widget init code
785
- ts.applyWidget(this, true);
799
+ ts.applyWidget($t0, true);
786
800
  // if user has supplied a sort list to constructor
787
801
  if (c.sortList.length > 0) {
788
802
  $this.trigger("sorton", [c.sortList, {}, !c.initWidgets]);
789
803
  } else if (c.initWidgets) {
790
804
  // apply widget format
791
- ts.applyWidget(this);
805
+ ts.applyWidget($t0);
792
806
  }
793
807
 
794
808
  // fixate columns if the users supplies the fixedWidth option
795
809
  // do this after theme has been applied
796
- fixColumnWidth(this);
810
+ fixColumnWidth($t0);
797
811
 
798
812
  // show processesing icon
799
813
  if (c.showProcessing) {
800
814
  $this
801
815
  .unbind('sortBegin sortEnd')
802
816
  .bind('sortBegin sortEnd', function(e) {
803
- ts.isProcessing($this[0], e.type === 'sortBegin');
817
+ ts.isProcessing($t0, e.type === 'sortBegin');
804
818
  });
805
819
  }
806
820
 
807
821
  // initialized
808
- this.hasInitialized = true;
822
+ $t0.hasInitialized = true;
809
823
  if (c.debug) {
810
- ts.benchmark("Overall initialization time", $.data( this, 'startoveralltimer'));
824
+ ts.benchmark("Overall initialization time", $.data( $t0, 'startoveralltimer'));
811
825
  }
812
- $this.trigger('tablesorter-initialized', this);
813
- if (typeof c.initialized === 'function') { c.initialized(this); }
826
+ $this.trigger('tablesorter-initialized', $t0);
827
+ if (typeof c.initialized === 'function') { c.initialized($t0); }
814
828
  });
815
829
  };
816
830
 
@@ -849,34 +863,36 @@
849
863
  };
850
864
 
851
865
  ts.clearTableBody = function(table) {
852
- $(table.tBodies).filter(':not(.' + table.config.cssInfoBlock + ')').empty();
866
+ table.config.$tbodies.empty();
853
867
  };
854
868
 
855
869
  ts.destroy = function(table, removeClasses, callback){
856
- var $t = $(table), c = table.config,
857
- $h = $t.find('thead:first');
858
- // clear flag in case the plugin is initialized again
859
- table.hasInitialized = false;
860
- // remove widget added rows
861
- $h.find('tr:not(.' + c.cssHeaderRow + ')').remove();
862
- // remove resizer widget stuff
863
- $h.find('.tablesorter-resizer').remove();
870
+ if (!table.hasInitialized) { return; }
864
871
  // remove all widgets
865
872
  ts.refreshWidgets(table, true, true);
873
+ var $t = $(table), c = table.config,
874
+ $h = $t.find('thead:first'),
875
+ $r = $h.find('tr.' + c.cssHeaderRow).removeClass(c.cssHeaderRow),
876
+ $f = $t.find('tfoot:first > tr').children('th, td');
877
+ // remove widget added rows, just in case
878
+ $h.find('tr').not($r).remove();
866
879
  // disable tablesorter
867
880
  $t
868
881
  .removeData('tablesorter')
869
- .unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave')
870
- .find('.' + c.cssHeader)
871
- .unbind('click mousedown mousemove mouseup')
882
+ .unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave');
883
+ c.$headers.add($f)
872
884
  .removeClass(c.cssHeader + ' ' + c.cssAsc + ' ' + c.cssDesc)
873
- .find('.tablesorter-header-inner').each(function(){
874
- if (c.cssIcon !== '') { $(this).find('.' + c.cssIcon).remove(); }
875
- $(this).replaceWith( $(this).contents() );
876
- });
885
+ .removeAttr('data-column');
886
+ $r.find(c.selectorSort).unbind('mousedown.tablesorter mouseup.tablesorter');
887
+ // restore headers
888
+ $r.children().each(function(i){
889
+ $(this).html( c.headerContent[i] );
890
+ });
877
891
  if (removeClasses !== false) {
878
- $t.removeClass(c.tableClass);
892
+ $t.removeClass(c.tableClass + ' tablesorter-' + c.theme);
879
893
  }
894
+ // clear flag in case the plugin is initialized again
895
+ table.hasInitialized = false;
880
896
  if (typeof callback === 'function') {
881
897
  callback(table);
882
898
  }
@@ -1320,13 +1336,13 @@
1320
1336
  format: function(table, c, wo) {
1321
1337
  var $tb, $tv, $tr, row, even, time, k, l,
1322
1338
  child = new RegExp(c.cssChildRow, 'i'),
1323
- b = $(table).children('tbody:not(.' + c.cssInfoBlock + ')');
1339
+ b = c.$tbodies;
1324
1340
  if (c.debug) {
1325
1341
  time = new Date();
1326
1342
  }
1327
1343
  for (k = 0; k < b.length; k++ ) {
1328
1344
  // loop through the visible rows
1329
- $tb = $(b[k]);
1345
+ $tb = b.eq(k);
1330
1346
  l = $tb.children('tr').length;
1331
1347
  if (l > 1) {
1332
1348
  row = 0;
@@ -1348,10 +1364,10 @@
1348
1364
  },
1349
1365
  remove: function(table, c, wo){
1350
1366
  var k, $tb,
1351
- b = $(table).children('tbody:not(.' + c.cssInfoBlock + ')'),
1367
+ b = c.$tbodies,
1352
1368
  rmv = (c.widgetOptions.zebra || [ "even", "odd" ]).join(' ');
1353
1369
  for (k = 0; k < b.length; k++ ){
1354
- $tb = $.tablesorter.processTbody(table, $(b[k]), true); // remove tbody
1370
+ $tb = $.tablesorter.processTbody(table, b.eq(k), true); // remove tbody
1355
1371
  $tb.children().removeClass(rmv);
1356
1372
  $.tablesorter.processTbody(table, $tb, false); // restore tbody
1357
1373
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * TableSorter 2.6.2 min - Client-side table sorting with ease!
2
+ * TableSorter 2.7.3 min - Client-side table sorting with ease!
3
3
  * Copyright (c) 2007 Christian Bach
4
4
  */
5
- !function(g){g.extend({tablesorter:new function(){function d(c){"undefined"!==typeof console&&"undefined"!==typeof console.log?console.log(c):alert(c)}function v(c,b){d(c+" ("+((new Date).getTime()-b.getTime())+"ms)")}function p(c,b,a){if(!b)return"";var f=c.config,h=f.textExtraction,e="",e="simple"===h?f.supportsTextContent?b.textContent:g(b).text():"function"===typeof h?h(b,c,a):"object"===typeof h&&h.hasOwnProperty(a)?h[a](b,c,a):f.supportsTextContent?b.textContent:g(b).text();return g.trim(e)} function j(c){var b=c.config,a=g(c.tBodies).filter(":not(."+b.cssInfoBlock+")"),f,h,s,k,m,l,n="";if(0===a.length)return b.debug?d("*Empty table!* Not building a parser cache"):"";a=a[0].rows;if(a[0]){f=[];h=a[0].cells.length;for(s=0;s<h;s++){k=b.$headers.filter(":not([colspan])");k=k.add(b.$headers.filter('[colspan="1"]')).filter('[data-column="'+s+'"]:last');m=b.headers[s];l=e.getParserById(e.getData(k,m,"sorter"));b.empties[s]=e.getData(k,m,"empty")||b.emptyTo||(b.emptyToBottom?"bottom":"top"); b.strings[s]=e.getData(k,m,"string")||b.stringTo||"max";if(!l)a:{k=c;m=a;l=-1;for(var v=s,r=void 0,t=e.parsers.length,y=!1,q="",r=!0;""===q&&r;)l++,m[l]?(y=m[l].cells[v],q=p(k,y,v),k.config.debug&&d("Checking if value was empty on row "+l+", column: "+v+": "+q)):r=!1;for(r=1;r<t;r++)if(e.parsers[r].is(q,k,y)){l=e.parsers[r];break a}l=e.parsers[0]}b.debug&&(n+="column:"+s+"; parser:"+l.id+"; string:"+b.strings[s]+"; empty: "+b.empties[s]+"\n");f.push(l)}}b.debug&&d(n);return f}function q(c){var b= c.tBodies,a=c.config,f,h,s=a.parsers,k,m,l,n,j,r,q,y=[];a.cache={};if(!s)return a.debug?d("*Empty table!* Not building a cache"):"";a.debug&&(q=new Date);a.showProcessing&&e.isProcessing(c,!0);for(n=0;n<b.length;n++)if(a.cache[n]={row:[],normalized:[]},!g(b[n]).hasClass(a.cssInfoBlock)){f=b[n]&&b[n].rows.length||0;h=b[n].rows[0]&&b[n].rows[0].cells.length||0;for(m=0;m<f;++m)if(j=g(b[n].rows[m]),r=[],j.hasClass(a.cssChildRow))a.cache[n].row[a.cache[n].row.length-1]=a.cache[n].row[a.cache[n].row.length- 1].add(j);else{a.cache[n].row.push(j);for(l=0;l<h;++l)if(k=p(c,j[0].cells[l],l),k=s[l].format(k,c,j[0].cells[l],l),r.push(k),"numeric"===(s[l].type||"").toLowerCase())y[l]=Math.max(Math.abs(k),y[l]||0);r.push(a.cache[n].normalized.length);a.cache[n].normalized.push(r)}a.cache[n].colMax=y}a.showProcessing&&e.isProcessing(c);a.debug&&v("Building cache for "+f+" rows",q)}function t(c,b){var a=c.config,f=c.tBodies,h=[],d=a.cache,k,m,l,n,j,r,p,q,t,u,w;a.debug&&(w=new Date);for(q=0;q<f.length;q++)if(k= g(f[q]),!k.hasClass(a.cssInfoBlock)){j=e.processTbody(c,k,!0);k=d[q].row;m=d[q].normalized;n=(l=m.length)?m[0].length-1:0;for(r=0;r<l;r++)if(u=m[r][n],h.push(k[u]),!a.appender||!a.removeRows){t=k[u].length;for(p=0;p<t;p++)j.append(k[u][p])}e.processTbody(c,j,!1)}a.appender&&a.appender(c,h);a.debug&&v("Rebuilt table",w);b||e.applyWidget(c);g(c).trigger("sortEnd",c)}function C(c){var b,a,f,h=c.config,e=h.sortList,d=[h.cssAsc,h.cssDesc],m=g(c).find("tfoot tr").children().removeClass(d.join(" "));h.$headers.removeClass(d.join(" ")); f=e.length;for(b=0;b<f;b++)if(2!==e[b][1]&&(c=h.$headers.not(".sorter-false").filter('[data-column="'+e[b][0]+'"]'+(1===f?":last":"")),c.length))for(a=0;a<c.length;a++)c[a].sortDisabled||(c.eq(a).addClass(d[e[b][1]]),m.length&&m.filter('[data-column="'+e[b][0]+'"]').eq(a).addClass(d[e[b][1]]))}function E(c){var b=0,a=c.config,f=a.sortList,h=f.length,e=c.tBodies.length,d,m,l,n,j,r,p,q,t;if(!a.serverSideSorting){a.debug&&(d=new Date);for(l=0;l<e;l++)j=a.cache[l].colMax,t=(r=a.cache[l].normalized)&& r[0]?r[0].length-1:0,r.sort(function(e,d){for(m=0;m<h;m++){n=f[m][0];q=f[m][1];p=/n/i.test(a.parsers&&a.parsers[n]?a.parsers[n].type||"":"")?"Numeric":"Text";p+=0===q?"":"Desc";/Numeric/.test(p)&&a.strings[n]&&(b="boolean"===typeof a.string[a.strings[n]]?(0===q?1:-1)*(a.string[a.strings[n]]?-1:1):a.strings[n]?a.string[a.strings[n]]||0:0);var k=g.tablesorter["sort"+p](c,e[n],d[n],n,j[n],b);if(k)return k}return e[t]-d[t]});a.debug&&v("Sorting on "+f.toString()+" and dir "+q+" time",d)}}function D(c, b){c.trigger("updateComplete");"function"===typeof b&&b(c[0])}function F(c,b,a){!1!==b?c.trigger("sorton",[c[0].config.sortList,function(){D(c,a)}]):D(c,a)}var e=this;e.version="2.6.2";e.parsers=[];e.widgets=[];e.defaults={theme:"default",widthFixed:!1,showProcessing:!1,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,onRenderHeader: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:[]};e.benchmark=v;e.construct=function(c){return this.each(function(){if(!this.tHead||0===this.tBodies.length||!0===this.hasInitialized)return this.config.debug?d("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var b=g(this),a,f,h,s="",k,m,l,n,D=g.metadata;this.hasInitialized=!1;this.config={};a=g.extend(!0,this.config, e.defaults,c);g.data(this,"tablesorter",a);a.debug&&g.data(this,"startoveralltimer",new Date);a.supportsTextContent="x"===g("<span>x</span>")[0].textContent;a.supportsDataObject=1.4<=parseFloat(g.fn.jquery);a.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(b.attr("class"))||(s=""!==a.theme?" tablesorter-"+a.theme:"");b.addClass(a.tableClass+s);var r=[],N={},y=g(this).find("thead:eq(0), tfoot").children("tr"),I,J,w,z,M,B,K,O,P,G;for(I=0;I<y.length;I++){M= y[I].cells;for(J=0;J<M.length;J++){z=M[J];B=z.parentNode.rowIndex;K=B+"-"+z.cellIndex;O=z.rowSpan||1;P=z.colSpan||1;"undefined"===typeof r[B]&&(r[B]=[]);for(w=0;w<r[B].length+1;w++)if("undefined"===typeof r[B][w]){G=w;break}N[K]=G;g(z).attr({"data-column":G});for(w=B;w<B+O;w++){"undefined"===typeof r[w]&&(r[w]=[]);K=r[w];for(z=G;z<G+P;z++)K[z]="x"}}}var L,A,Q,H,R,x=this.config;x.headerList=[];x.debug&&(R=new Date);r=g(this).find(x.selectorHeaders).each(function(a){A=g(this);L=x.headers[a];Q=x.cssIcon? '<i class="'+x.cssIcon+'"></i>':"";this.innerHTML='<div class="tablesorter-header-inner">'+this.innerHTML+Q+"</div>";x.onRenderHeader&&x.onRenderHeader.apply(A,[a]);this.column=N[this.parentNode.rowIndex+"-"+this.cellIndex];var b=e.getData(A,L,"sortInitialOrder")||x.sortInitialOrder;this.order=/^d/i.test(b)||1===b?[1,0,2]:[0,1,2];this.count=-1;"false"===e.getData(A,L,"sorter")?(this.sortDisabled=!0,A.addClass("sorter-false")):A.removeClass("sorter-false");this.lockedOrder=!1;H=e.getData(A,L,"lockedOrder")|| !1;"undefined"!==typeof H&&!1!==H&&(this.order=this.lockedOrder=/^d/i.test(H)||1===H?[1,1,1]:[0,0,0]);A.addClass((this.sortDisabled?"sorter-false ":" ")+x.cssHeader);x.headerList[a]=this;A.parent().addClass(x.cssHeaderRow)});this.config.debug&&(v("Built headers:",R),d(r));a.$headers=r;a.parsers=j(this);a.delayInit||q(this);a.$headers.find("*").andSelf().filter(a.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter").bind("mousedown.tablesorter mouseup.tablesorter",function(c,d){var j=(this.tagName.match("TH|TD")? g(this):g(this).parents("th, td").filter(":last"))[0];if(1!==(c.which||c.button))return!1;if("mousedown"===c.type)return n=(new Date).getTime(),"INPUT"===c.target.tagName?"":!a.cancelSelection;if(!0!==d&&250<(new Date).getTime()-n)return!1;a.delayInit&&!a.cache&&q(b[0]);if(!j.sortDisabled){b.trigger("sortStart",b[0]);s=!c[a.sortMultiSortKey];j.count=c[a.sortResetKey]?2:(j.count+1)%(a.sortReset?3:2);a.sortRestart&&(f=j,a.$headers.each(function(){if(this!==f&&(s||!g(this).is("."+a.cssDesc+",."+a.cssAsc)))this.count= -1}));f=j.column;if(s){a.sortList=[];if(null!==a.sortForce){k=a.sortForce;for(h=0;h<k.length;h++)k[h][0]!==f&&a.sortList.push(k[h])}l=j.order[j.count];if(2>l&&(a.sortList.push([f,l]),1<j.colSpan))for(h=1;h<j.colSpan;h++)a.sortList.push([f+h,l])}else if(a.sortAppend&&1<a.sortList.length&&e.isValueInArray(a.sortAppend[0][0],a.sortList)&&a.sortList.pop(),e.isValueInArray(f,a.sortList))for(h=0;h<a.sortList.length;h++)m=a.sortList[h],l=a.headerList[m[0]],m[0]===f&&(m[1]=l.order[l.count],2===m[1]&&(a.sortList.splice(h, 1),l.count=-1));else if(l=j.order[j.count],2>l&&(a.sortList.push([f,l]),1<j.colSpan))for(h=1;h<j.colSpan;h++)a.sortList.push([f+h,l]);if(null!==a.sortAppend){k=a.sortAppend;for(h=0;h<k.length;h++)k[h][0]!==f&&a.sortList.push(k[h])}b.trigger("sortBegin",b[0]);setTimeout(function(){C(b[0]);E(b[0]);t(b[0])},1)}});a.cancelSelection&&a.$headers.each(function(){this.onselectstart=function(){return!1}});b.unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave").bind("sortReset", function(){a.sortList=[];C(this);E(this);t(this)}).bind("update",function(c,f,h){g(a.selectorRemove,this).remove();a.parsers=j(this);q(this);F(b,f,h)}).bind("updateCell",function(c,f,h,e){var d,k,s;d=g(this).find("tbody");c=d.index(g(f).parents("tbody").filter(":last"));var j=g(f).parents("tr").filter(":last");f=g(f)[0];d.length&&0<=c&&(k=d.eq(c).find("tr").index(j),s=f.cellIndex,d=this.config.cache[c].normalized[k].length-1,this.config.cache[c].row[this.config.cache[c].normalized[k][d]]=j,this.config.cache[c].normalized[k][s]= a.parsers[s].format(p(this,f,s),this,f,s),F(b,h,e))}).bind("addRows",function(c,f,e,d){var k=f.filter("tr").length,s=[],l=f[0].cells.length,m=g(this).find("tbody").index(f.closest("tbody"));a.parsers||(a.parsers=j(this));for(c=0;c<k;c++){for(h=0;h<l;h++)s[h]=a.parsers[h].format(p(this,f[c].cells[h],h),this,f[c].cells[h],h);s.push(a.cache[m].row.length);a.cache[m].row.push([f[c]]);a.cache[m].normalized.push(s);s=[]}F(b,e,d)}).bind("sorton",function(a,b,c,f){g(this).trigger("sortStart",this);var h, e,d=this.config;a=b||d.sortList;d.sortList=[];g.each(a,function(a,b){h=[parseInt(b[0],10),parseInt(b[1],10)];if(e=d.headerList[h[0]])d.sortList.push(h),e.count=h[1]%(d.sortReset?3:2)});C(this);E(this);t(this,f);"function"===typeof c&&c(this)}).bind("appendCache",function(a,b,c){t(this,c);"function"===typeof b&&b(this)}).bind("applyWidgetId",function(b,c){e.getWidgetById(c).format(this,a,a.widgetOptions)}).bind("applyWidgets",function(a,b){e.applyWidget(this,b)}).bind("refreshWidgets",function(a,b, c){e.refreshWidgets(this,b,c)}).bind("destroy",function(a,b,c){e.destroy(this,b,c)});a.supportsDataObject&&"undefined"!==typeof b.data().sortlist?a.sortList=b.data().sortlist:D&&(b.metadata()&&b.metadata().sortlist)&&(a.sortList=b.metadata().sortlist);e.applyWidget(this,!0);0<a.sortList.length?b.trigger("sorton",[a.sortList,{},!a.initWidgets]):a.initWidgets&&e.applyWidget(this);if(this.config.widthFixed&&0===g(this).find("colgroup").length){var S=g("<colgroup>"),T=g(this).width();g("tr:first td", this.tBodies[0]).each(function(){S.append(g("<col>").css("width",parseInt(1E3*(g(this).width()/T),10)/10+"%"))});g(this).prepend(S)}a.showProcessing&&b.unbind("sortBegin sortEnd").bind("sortBegin sortEnd",function(a){e.isProcessing(b[0],"sortBegin"===a.type)});this.hasInitialized=!0;a.debug&&e.benchmark("Overall initialization time",g.data(this,"startoveralltimer"));b.trigger("tablesorter-initialized",this);"function"===typeof a.initialized&&a.initialized(this)})};e.isProcessing=function(c,b,a){var f= c.config;c=a||g(c).find("."+f.cssHeader);b?(0<f.sortList.length&&(c=c.filter(function(){return this.sortDisabled?!1:e.isValueInArray(parseFloat(g(this).attr("data-column")),f.sortList)})),c.addClass(f.cssProcessing)):c.removeClass(f.cssProcessing)};e.processTbody=function(c,b,a){if(a)return b.before('<span class="tablesorter-savemyplace"/>'),c=g.fn.detach?b.detach():b.remove();c=g(c).find("span.tablesorter-savemyplace");b.insertAfter(c);c.remove()};e.clearTableBody=function(c){g(c.tBodies).filter(":not(."+ c.config.cssInfoBlock+")").empty()};e.destroy=function(c,b,a){var f=g(c),h=c.config,d=f.find("thead:first");c.hasInitialized=!1;d.find("tr:not(."+h.cssHeaderRow+")").remove();d.find(".tablesorter-resizer").remove();e.refreshWidgets(c,!0,!0);f.removeData("tablesorter").unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave").find("."+h.cssHeader).unbind("click mousedown mousemove mouseup").removeClass(h.cssHeader+" "+h.cssAsc+ " "+h.cssDesc).find(".tablesorter-header-inner").each(function(){""!==h.cssIcon&&g(this).find("."+h.cssIcon).remove();g(this).replaceWith(g(this).contents())});!1!==b&&f.removeClass(h.tableClass);"function"===typeof a&&a(c)};e.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];e.sortText=function(c,b,a,f){if(b===a)return 0;var h=c.config,d=h.string[h.empties[f]|| h.emptyTo],k=e.regex;if(""===b&&0!==d)return"boolean"===typeof d?d?-1:1:-d||-1;if(""===a&&0!==d)return"boolean"===typeof d?d?1:-1:d||1;if("function"===typeof h.textSorter)return h.textSorter(b,a,c,f);c=b.replace(k[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");f=a.replace(k[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");b=parseInt(b.match(k[2]),16)||1!==c.length&&b.match(k[1])&&Date.parse(b);if(a=parseInt(a.match(k[2]),16)||b&&a.match(k[1])&&Date.parse(a)||null){if(b< a)return-1;if(b>a)return 1}h=Math.max(c.length,f.length);for(b=0;b<h;b++){a=isNaN(c[b])?c[b]||0:parseFloat(c[b])||0;k=isNaN(f[b])?f[b]||0:parseFloat(f[b])||0;if(isNaN(a)!==isNaN(k))return isNaN(a)?1:-1;typeof a!==typeof k&&(a+="",k+="");if(a<k)return-1;if(a>k)return 1}return 0};e.sortTextDesc=function(c,b,a,f){if(b===a)return 0;var d=c.config,g=d.string[d.empties[f]||d.emptyTo];return""===b&&0!==g?"boolean"===typeof g?g?-1:1:g||1:""===a&&0!==g?"boolean"===typeof g?g?1:-1:-g||-1:"function"===typeof d.textSorter? d.textSorter(a,b,c,f):e.sortText(c,a,b)};e.getTextValue=function(c,b,a){if(b){var f=c.length,d=b+a;for(b=0;b<f;b++)d+=c.charCodeAt(b);return a*d}return 0};e.sortNumeric=function(c,b,a,f,d,g){if(b===a)return 0;c=c.config;f=c.string[c.empties[f]||c.emptyTo];if(""===b&&0!==f)return"boolean"===typeof f?f?-1:1:-f||-1;if(""===a&&0!==f)return"boolean"===typeof f?f?1:-1:f||1;isNaN(b)&&(b=e.getTextValue(b,d,g));isNaN(a)&&(a=e.getTextValue(a,d,g));return b-a};e.sortNumericDesc=function(c,b,a,f,d,g){if(b=== a)return 0;c=c.config;f=c.string[c.empties[f]||c.emptyTo];if(""===b&&0!==f)return"boolean"===typeof f?f?-1:1:f||1;if(""===a&&0!==f)return"boolean"===typeof f?f?1:-1:-f||-1;isNaN(b)&&(b=e.getTextValue(b,d,g));isNaN(a)&&(a=e.getTextValue(a,d,g));return a-b};e.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"};e.replaceAccents=function(c){var b,a="[",d=e.characterEquivalents;if(!e.characterRegex){e.characterRegexArray={};for(b in d)"string"===typeof b&&(a+=d[b],e.characterRegexArray[b]=RegExp("["+d[b]+"]","g"));e.characterRegex=RegExp(a+"]")}if(e.characterRegex.test(c))for(b in d)"string"=== typeof b&&(c=c.replace(e.characterRegexArray[b],b));return c};e.isValueInArray=function(c,b){var a,d=b.length;for(a=0;a<d;a++)if(b[a][0]===c)return!0;return!1};e.addParser=function(c){var b,a=e.parsers.length,d=!0;for(b=0;b<a;b++)e.parsers[b].id.toLowerCase()===c.id.toLowerCase()&&(d=!1);d&&e.parsers.push(c)};e.getParserById=function(c){var b,a=e.parsers.length;for(b=0;b<a;b++)if(e.parsers[b].id.toLowerCase()===c.toString().toLowerCase())return e.parsers[b];return!1};e.addWidget=function(c){e.widgets.push(c)}; e.getWidgetById=function(c){var b,a,d=e.widgets.length;for(b=0;b<d;b++)if((a=e.widgets[b])&&a.hasOwnProperty("id")&&a.id.toLowerCase()===c.toLowerCase())return a};e.applyWidget=function(c,b){var a=c.config,d=a.widgetOptions,h=a.widgets.sort().reverse(),j,k,m,l=h.length;k=g.inArray("zebra",a.widgets);0<=k&&(a.widgets.splice(k,1),a.widgets.push("zebra"));a.debug&&(j=new Date);for(k=0;k<l;k++)(m=e.getWidgetById(h[k]))&&(!0===b&&m.hasOwnProperty("init")?m.init(c,m,a,d):!b&&m.hasOwnProperty("format")&& m.format(c,a,d));a.debug&&v("Completed "+(!0===b?"initializing":"applying")+" widgets",j)};e.refreshWidgets=function(c,b,a){var f,h=c.config,j=h.widgets,k=e.widgets,m=k.length;for(f=0;f<m;f++)if(k[f]&&k[f].id&&(b||0>g.inArray(k[f].id,j)))h.debug&&d("Refeshing widgets: Removing "+k[f].id),k[f].hasOwnProperty("remove")&&k[f].remove(c,h,h.widgetOptions);!0!==a&&e.applyWidget(c,b)};e.getData=function(c,b,a){var d="";c=g(c);var e,j;if(!c.length)return"";e=g.metadata?c.metadata():!1;j=" "+(c.attr("class")|| "");"undefined"!==typeof c.data(a)||"undefined"!==typeof c.data(a.toLowerCase())?d+=c.data(a)||c.data(a.toLowerCase()):e&&"undefined"!==typeof e[a]?d+=e[a]:b&&"undefined"!==typeof b[a]?d+=b[a]:" "!==j&&j.match(" "+a+"-")&&(d=j.match(RegExp(" "+a+"-(\\w+)"))[1]||"");return g.trim(d)};e.formatFloat=function(c,b){if("string"!==typeof c||""===c)return c;var a;c=(b&&b.config?!1!==b.config.usNumberFormat:"undefined"!==typeof b?b:1)?c.replace(/,/g,""):c.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(c)&& (c=c.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(c);return isNaN(a)?g.trim(c):a};e.isDigit=function(c){return isNaN(c)?/^[\-+(]?\d+[)]?$/.test(c.toString().replace(/[,.'"\s]/g,"")):!0}}});var j=g.tablesorter;g.fn.extend({tablesorter:j.construct});j.addParser({id:"text",is:function(){return!0},format:function(d,v){var p=v.config;d=g.trim(p.ignoreCase?d.toLocaleLowerCase():d);return p.sortLocaleCompare?j.replaceAccents(d):d},type:"text"});j.addParser({id:"currency",is:function(d){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test(d)}, format:function(d,g){return j.formatFloat(d.replace(/[^\w,. \-()]/g,""),g)},type:"numeric"});j.addParser({id:"ipAddress",is:function(d){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(d)},format:function(d,g){var p,u=d.split("."),q="",t=u.length;for(p=0;p<t;p++)q+=("00"+u[p]).slice(-3);return j.formatFloat(q,g)},type:"numeric"});j.addParser({id:"url",is:function(d){return/^(https?|ftp|file):\/\//.test(d)},format:function(d){return g.trim(d.replace(/(https?|ftp|file):\/\//,""))},type:"text"}); j.addParser({id:"isoDate",is:function(d){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(d)},format:function(d,g){return j.formatFloat(""!==d?(new Date(d.replace(/-/g,"/"))).getTime()||"":"",g)},type:"numeric"});j.addParser({id:"percent",is:function(d){return/(\d\s?%|%\s?\d)/.test(d)},format:function(d,g){return j.formatFloat(d.replace(/%/g,""),g)},type:"numeric"});j.addParser({id:"usLongDate",is:function(d){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(d)}, format:function(d,g){return j.formatFloat((new Date(d.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",g)},type:"numeric"});j.addParser({id:"shortDate",is:function(d){return/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/.test(d)},format:function(d,g,p,u){p=g.config;var q=p.headerList[u],t=q.shortDateFormat;"undefined"===typeof t&&(t=q.shortDateFormat=j.getData(q,p.headers[u],"dateFormat")||p.dateFormat);d=d.replace(/\s+/g," ").replace(/[\-|\.|\,]/g,"/");"mmddyyyy"===t?d=d.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/, "$3/$1/$2"):"ddmmyyyy"===t?d=d.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1"):"yyyymmdd"===t&&(d=d.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3"));return j.formatFloat((new Date(d)).getTime()||"",g)},type:"numeric"});j.addParser({id:"time",is:function(d){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(d)},format:function(d,g){return j.formatFloat((new Date("2000/01/01 "+d.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",g)},type:"numeric"});j.addParser({id:"digit", is:function(d){return j.isDigit(d)},format:function(d,g){return j.formatFloat(d.replace(/[^\w,. \-()]/g,""),g)},type:"numeric"});j.addParser({id:"metadata",is:function(){return!1},format:function(d,j,p){d=j.config;d=!d.parserMetadataName?"sortValue":d.parserMetadataName;return g(p).metadata()[d]},type:"numeric"});j.addWidget({id:"zebra",format:function(d,v,p){var u,q,t,C,E,D,F=RegExp(v.cssChildRow,"i"),e=g(d).children("tbody:not(."+v.cssInfoBlock+")");v.debug&&(E=new Date);for(d=0;d<e.length;d++)u= g(e[d]),D=u.children("tr").length,1<D&&(t=0,u=u.children("tr:visible"),u.each(function(){q=g(this);F.test(this.className)||t++;C=0===t%2;q.removeClass(p.zebra[C?1:0]).addClass(p.zebra[C?0:1])}));v.debug&&j.benchmark("Applying Zebra widget",E)},remove:function(d,j){var p,u,q=g(d).children("tbody:not(."+j.cssInfoBlock+")"),t=(j.widgetOptions.zebra||["even","odd"]).join(" ");for(p=0;p<q.length;p++)u=g.tablesorter.processTbody(d,g(q[p]),!0),u.children().removeClass(t),g.tablesorter.processTbody(d,u,!1)}})}(jQuery);
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,4 +1,4 @@
1
- /*! tableSorter 2.4+ widgets - updated 12/18/2012
1
+ /*! tableSorter 2.4+ widgets - updated 1/10/2013
2
2
  *
3
3
  * Column Styles
4
4
  * Column Filters
@@ -81,18 +81,13 @@ $.tablesorter.storage = function(table, key, val){
81
81
  v = (d !== 0) ? $.parseJSON(k[d]) || {} : {};
82
82
  }
83
83
  }
84
- if (val && JSON && JSON.hasOwnProperty('stringify')){
84
+ // allow val to be an empty string to
85
+ if ((val || val === '') && window.JSON && JSON.hasOwnProperty('stringify')){
85
86
  // add unique identifiers = url pathname > table ID/index on page > data
86
- if (v[url] && v[url][id]){
87
- v[url][id] = val;
88
- } else {
89
- if (v[url]){
90
- v[url][id] = val;
91
- } else {
92
- v[url] = {};
93
- v[url][id] = val;
94
- }
87
+ if (!v[url]) {
88
+ v[url] = {};
95
89
  }
90
+ v[url][id] = val;
96
91
  // *** set val ***
97
92
  if (ls){
98
93
  localStorage[key] = JSON.stringify(v);
@@ -102,7 +97,7 @@ $.tablesorter.storage = function(table, key, val){
102
97
  document.cookie = key + '=' + (JSON.stringify(v)).replace(/\"/g,'\"') + '; expires=' + d.toGMTString() + '; path=/';
103
98
  }
104
99
  } else {
105
- return ( v && v.hasOwnProperty(url) && v[url].hasOwnProperty(id) ) ? v[url][id] : {};
100
+ return v && v[url] ? v[url][id] : {};
106
101
  }
107
102
  };
108
103
 
@@ -112,13 +107,13 @@ $.tablesorter.storage = function(table, key, val){
112
107
  $.tablesorter.addWidget({
113
108
  id: "uitheme",
114
109
  format: function(table){
115
- var time, klass, $el, $tar, t,
110
+ var time, klass, $el, $tar,
111
+ t = $.tablesorter.themes,
116
112
  $t = $(table),
117
113
  c = table.config,
118
114
  wo = c.widgetOptions,
119
- theme = typeof wo.uitheme === 'object' ? 'jui' : wo.uitheme || 'jui', // default uitheme is 'jui'
120
- // use Object.prototype.toString.call().test('Array') instead of $.isArray to make this widget compatible with jQuery v1.2.6
121
- o = (typeof wo.uitheme === 'object' && !Object.prototype.toString.call(wo.uitheme).test('Array')) ? wo.uitheme : $.tablesorter.themes[ $.tablesorter.themes.hasOwnProperty(theme) ? theme : 'jui'],
115
+ theme = c.theme !== 'default' ? c.theme : wo.uitheme || 'jui', // default uitheme is 'jui'
116
+ o = t[ t[theme] ? theme : t[wo.uitheme] ? wo.uitheme : 'jui'],
122
117
  $h = $(c.headerList),
123
118
  sh = 'tr.' + (wo.stickyHeaders || 'tablesorter-stickyHeader'),
124
119
  rmv = o.sortNone + ' ' + o.sortDesc + ' ' + o.sortAsc;
@@ -138,7 +133,6 @@ $.tablesorter.addWidget({
138
133
  .find('tr').addClass(o.footerRow)
139
134
  .children('th, td').addClass(o.footerCells);
140
135
  }
141
- c.theme = ''; // clear out theme option so it doesn't interfere
142
136
  // update header classes
143
137
  $h
144
138
  .addClass(o.header)
@@ -206,7 +200,7 @@ $.tablesorter.addWidget({
206
200
  $tbl = $(table),
207
201
  c = table.config,
208
202
  wo = c.widgetOptions,
209
- b = $tbl.children('tbody:not(.' + c.cssInfoBlock + ')'),
203
+ b = c.$tbodies,
210
204
  list = c.sortList,
211
205
  len = list.length,
212
206
  css = [ "primary", "secondary", "tertiary" ]; // default options
@@ -220,7 +214,7 @@ $.tablesorter.addWidget({
220
214
  }
221
215
  // check if there is a sort (on initialization there may not be one)
222
216
  for (k = 0; k < b.length; k++ ){
223
- $tb = $.tablesorter.processTbody(table, $(b[k]), true); // detach tbody
217
+ $tb = $.tablesorter.processTbody(table, b.eq(k), true); // detach tbody
224
218
  $tr = $tb.children('tr');
225
219
  l = $tr.length;
226
220
  // loop through the visible rows
@@ -268,10 +262,12 @@ $.tablesorter.addWidget({
268
262
  },
269
263
  remove: function(table, c, wo){
270
264
  var k, $tb,
271
- b = $(table).children('tbody:not(.' + c.cssInfoBlock + ')'),
265
+ b = c.$tbodies,
272
266
  rmv = (c.widgetOptions.columns || [ "primary", "secondary", "tertiary" ]).join(' ');
267
+ c.$headers.removeClass(rmv);
268
+ $(table).children('tfoot').children('tr').children('th, td').removeClass(rmv);
273
269
  for (k = 0; k < b.length; k++ ){
274
- $tb = $.tablesorter.processTbody(table, $(b[k]), true); // remove tbody
270
+ $tb = $.tablesorter.processTbody(table, b.eq(k), true); // remove tbody
275
271
  $tb.children('tr').each(function(){
276
272
  $(this).children().removeClass(rmv);
277
273
  });
@@ -307,7 +303,7 @@ $.tablesorter.addWidget({
307
303
  wo = c.widgetOptions,
308
304
  css = wo.filter_cssFilter || 'tablesorter-filter',
309
305
  $t = $(table).addClass('hasFilters'),
310
- b = $t.children('tbody:not(.' + c.cssInfoBlock + ')'),
306
+ b = c.$tbodies,
311
307
  cols = c.parsers.length,
312
308
  reg = [ // regex used in filter "check" functions
313
309
  /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/, // 0 = regex to test for regex
@@ -361,7 +357,7 @@ $.tablesorter.addWidget({
361
357
  if (c.debug) { time = new Date(); }
362
358
 
363
359
  for (k = 0; k < b.length; k++ ){
364
- $tb = $.tablesorter.processTbody(table, $(b[k]), true);
360
+ $tb = $.tablesorter.processTbody(table, b.eq(k), true);
365
361
  $tr = $tb.children('tr');
366
362
  l = $tr.length;
367
363
  if (cv === '' || wo.filter_serversideFiltering){
@@ -492,8 +488,8 @@ $.tablesorter.addWidget({
492
488
  // build default select dropdown
493
489
  for (i = 0; i < cols; i++){
494
490
  t = $ths.filter('[data-column="' + i + '"]:last');
495
- // look for the filter-select class, but don't build it twice.
496
- if (t.hasClass('filter-select') && !t.hasClass('filter-false') && !(wo.filter_functions && wo.filter_functions[i] === true)){
491
+ // look for the filter-select class; build/update it if found
492
+ if ((t.hasClass('filter-select') || wo.filter_functions && wo.filter_functions[i] === true) && !t.hasClass('filter-false')){
497
493
  if (!wo.filter_functions) { wo.filter_functions = {}; }
498
494
  wo.filter_functions[i] = true; // make sure this select gets processed by filter_functions
499
495
  buildSelect(i, updating);
@@ -586,7 +582,9 @@ $.tablesorter.addWidget({
586
582
  }
587
583
  }
588
584
  }
589
- buildDefault();
585
+ // not really updating, but if the column has both the "filter-select" class & filter_functions set to true,
586
+ // it would append the same options twice.
587
+ buildDefault(true);
590
588
 
591
589
  $t.find('select.' + css).bind('change search', function(){
592
590
  checkFilters();
@@ -652,14 +650,14 @@ $.tablesorter.addWidget({
652
650
  remove: function(table, c, wo){
653
651
  var k, $tb,
654
652
  $t = $(table),
655
- b = $t.children('tbody:not(.' + c.cssInfoBlock + ')');
653
+ b = c.$tbodies;
656
654
  $t
657
655
  .removeClass('hasFilters')
658
656
  // add .tsfilter namespace to all BUT search
659
657
  .unbind('addRows updateCell update appendCache search'.split(' ').join('.tsfilter'))
660
658
  .find('.tablesorter-filter-row').remove();
661
659
  for (k = 0; k < b.length; k++ ){
662
- $tb = $.tablesorter.processTbody(table, $(b[k]), true); // remove tbody
660
+ $tb = $.tablesorter.processTbody(table, b.eq(k), true); // remove tbody
663
661
  $tb.children().removeClass('filtered').show();
664
662
  $.tablesorter.processTbody(table, $tb, false); // restore tbody
665
663
  }
@@ -686,7 +684,7 @@ $.tablesorter.addWidget({
686
684
  innr = '.tablesorter-header-inner',
687
685
  firstRow = hdrCells.eq(0).parent(),
688
686
  tfoot = $table.find('tfoot'),
689
- t2 = $table.clone(), // clone table, but don't remove id... the table might be styled by css
687
+ t2 = wo.$sticky = $table.clone(), // clone table, but don't remove id... the table might be styled by css
690
688
  // clone the entire thead - seems to work in IE8+
691
689
  stkyHdr = t2.children('thead:first')
692
690
  .addClass(css)
@@ -798,6 +796,7 @@ $.tablesorter.addWidget({
798
796
  .removeClass('hasStickyHeaders')
799
797
  .unbind('sortEnd.tsSticky pagerComplete.tsSticky')
800
798
  .find('.' + css).remove();
799
+ if (wo.$sticky) { wo.$sticky.remove(); } // remove cloned thead
801
800
  $(window).unbind('scroll.tsSticky resize.tsSticky');
802
801
  }
803
802
  });
@@ -1,12 +1,12 @@
1
- /*! tableSorter 2.4+ widgets - updated 12/19/2012 */
1
+ /*! tableSorter 2.4+ widgets - updated 1/10/2013 */
2
2
  ;(function(b){
3
3
  b.tablesorter=b.tablesorter||{};
4
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(e,c,d){var a,j=!1;a={};var f=e.id||b(".tablesorter").index(b(e)),h=window.location.pathname;try{j=!!localStorage.getItem}catch(n){}b.parseJSON&&(j?a=b.parseJSON(localStorage[c])||{}:(a=document.cookie.split(/[;\s|=]/),e=b.inArray(c,a)+1,a=0!==e?b.parseJSON(a[e])||{}:{}));if(d&&JSON&&JSON.hasOwnProperty("stringify")){if(!a[h]|| !a[h][f])a[h]||(a[h]={});a[h][f]=d;j?localStorage[c]=JSON.stringify(a):(e=new Date,e.setTime(e.getTime()+31536E6),document.cookie=c+"="+JSON.stringify(a).replace(/\"/g,'"')+"; expires="+e.toGMTString()+"; path=/")}else return a&&a.hasOwnProperty(h)&&a[h].hasOwnProperty(f)?a[h][f]:{}};
6
- b.tablesorter.addWidget({id:"uitheme",format:function(e){var c,d,a,j,f,h=b(e),n=e.config,p=n.widgetOptions,q="object"===typeof p.uitheme?"jui":p.uitheme||"jui",g="object"===typeof p.uitheme&&!Object.prototype.toString.call(p.uitheme).test("Array")? p.uitheme:b.tablesorter.themes[b.tablesorter.themes.hasOwnProperty(q)?q:"jui"],m=b(n.headerList),r="tr."+(p.stickyHeaders||"tablesorter-stickyHeader"),s=g.sortNone+" "+g.sortDesc+" "+g.sortAsc;n.debug&&(c=new Date);if(!h.hasClass("tablesorter-"+q)||n.theme===q||!e.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), n.theme="",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(c){a=b(this);j=n.cssIcon?a.find("."+n.cssIcon):a;this.sortDisabled? (a.removeClass(s),j.removeClass(s+" tablesorter-icon "+g.icons)):(f=h.hasClass("hasStickyHeaders")?h.find(r).find("th").eq(c).add(a):a,d=a.hasClass(n.cssAsc)?g.sortAsc:a.hasClass(n.cssDesc)?g.sortDesc:a.hasClass(n.cssHeader)?g.sortNone:"",a[d===g.sortNone?"removeClass":"addClass"](g.active),j.removeClass(s).addClass(d))});n.debug&&b.tablesorter.benchmark("Applying "+q+" theme",c)},remove:function(e,c,d){e=b(e);var a="object"===typeof d.uitheme?"jui":d.uitheme||"jui";d="object"===typeof d.uitheme? d.uitheme:b.tablesorter.themes[b.tablesorter.themes.hasOwnProperty(a)?a:"jui"];var j=e.children("thead").children(),f=d.sortNone+" "+d.sortDesc+" "+d.sortAsc;e.removeClass("tablesorter-"+a+" "+d.table).find(c.cssHeader).removeClass(d.header);j.unbind("mouseenter mouseleave").removeClass(d.hover+" "+f+" "+d.active).find(".tablesorter-filter-row").removeClass(d.filterRow);j.find(".tablesorter-icon").removeClass(d.icons)}});
7
- b.tablesorter.addWidget({id:"columns",format:function(e){var c,d,a,j,f,h,n,p, q,g=b(e),m=e.config,r=m.widgetOptions,s=g.children("tbody:not(."+m.cssInfoBlock+")"),v=m.sortList,w=v.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++)c=b.tablesorter.processTbody(e,b(s[q]),!0),d=c.children("tr"),d.each(function(){j=b(this);if("none"!==this.style.display&&(a=j.children().removeClass(n),v&&v[0]&& (a.eq(v[0][0]).addClass(l[0]),1<w)))for(p=1;p<w;p++)a.eq(v[p][0]).addClass(l[p]||l[h])}),b.tablesorter.processTbody(e,c,!1);d=!1!==r.columns_thead?"thead tr":"";!1!==r.columns_tfoot&&(d+=(""===d?"":",")+"tfoot tr");if(d.length&&(j=g.find(d).children().removeClass(n),v&&v[0]&&(j.filter('[data-column="'+v[0][0]+'"]').addClass(l[0]),1<w)))for(p=1;p<w;p++)j.filter('[data-column="'+v[p][0]+'"]').addClass(l[p]||l[h]);m.debug&&b.tablesorter.benchmark("Applying Columns widget",f)},remove:function(e,c){var d, a,j=b(e).children("tbody:not(."+c.cssInfoBlock+")"),f=(c.widgetOptions.columns||["primary","secondary","tertiary"]).join(" ");for(d=0;d<j.length;d++)a=b.tablesorter.processTbody(e,b(j[d]),!0),a.children("tr").each(function(){b(this).children().removeClass(f)}),b.tablesorter.processTbody(e,a,!1)}});
8
- b.tablesorter.addWidget({id:"filter",format:function(e){if(e.config.parsers&&!b(e).hasClass("hasFilters")){var c,d,a,j,f,h,n,p,q,g,m,r,s,v,w,l,y,G="",A=b.tablesorter,t=e.config,B=b(t.headerList),k=t.widgetOptions, z=k.filter_cssFilter||"tablesorter-filter",u=b(e).addClass("hasFilters"),E=u.children("tbody:not(."+t.cssInfoBlock+")"),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=u.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&&u.find(".tablesorter-filter-row").trigger(""===f?"mouseleave":"mouseenter");if(!(G===f&&!1!==a))if(u.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(a=0;a<E.length;a++){j=b.tablesorter.processTbody(e,b(E[a]),!0); m=j.children("tr");y=m.length;if(""===h||k.filter_serversideFiltering)m.show().removeClass("filtered");else for(d=0;d<y;d++)if(!C[1].test(m[d].className)){r=!0;s=m.eq(d).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(d).children("td");for(c=0;c<F;c++)if(g[c]){n=k.filter_useParsedData||M[c]?t.cache[a].normalized[d][c]:b.trim(q.eq(c).text()); p=!C[2].test(typeof n)&&k.filter_ignoreCase?n.toLocaleLowerCase():n;x=r;f=k.filter_ignoreCase?g[c].toLocaleLowerCase():g[c];if(k.filter_functions&&k.filter_functions[c])!0===k.filter_functions[c]?x=B.filter('[data-column="'+c+'"]:last').hasClass("filter-match")?0<=p.search(f):g[c]===n:"function"===typeof k.filter_functions[c]?x=k.filter_functions[c](n,t.cache[a].normalized[d][c],g[c],c):"function"===typeof k.filter_functions[c][g[c]]&&(x=k.filter_functions[c][g[c]](n,t.cache[a].normalized[d][c],g[c], c));else if(C[0].test(f)){v=C[0].exec(f);try{x=RegExp(v[1],v[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)?(v=isNaN(p)?b.tablesorter.formatFloat(p.replace(C[5],""),e):b.tablesorter.formatFloat(p,e),w=b.tablesorter.formatFloat(f.replace(C[5],"").replace(C[6],""),e),/>/.test(f)&&(x=/>=/.test(f)?v>=w:v>w),/</.test(f)&&(x=/<=/.test(f)?v<=w:v<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[d].style.display=r?"":"none";m.eq(d)[r?"removeClass":"addClass"]("filtered");if(s.length)s[r?"show":"hide"]()}b.tablesorter.processTbody(e,j,!1)}G=h;t.debug&&A.benchmark("Completed filter widget search",z);u.trigger("applyWidgets");u.trigger("filterEnd")},K=function(c,f){var g,h=[];c=parseInt(c,10);g='<option value="">'+(B.filter('[data-column="'+ c+'"]:last').attr("data-placeholder")||"")+"</option>";for(a=0;a<E.length;a++){j=t.cache[a].row.length;for(d=0;d<j;d++)k.filter_useParsedData?h.push(""+t.cache[a].normalized[d][c]):(l=t.cache[a].row[d][0].cells[c])&&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,a){return A.sortText(e,b,a,c)}):h.sort(!0);for(a=0;a<h.length;a++)g+='<option value="'+h[a]+'">'+h[a]+"</option>";u.find("thead").find("select."+ z+'[data-column="'+c+'"]')[f?"html":"append"](g)},L=function(b){for(c=0;c<F;c++)l=B.filter('[data-column="'+c+'"]:last'),l.hasClass("filter-select")&&(!l.hasClass("filter-false")&&!(k.filter_functions&&!0===k.filter_functions[c]))&&(k.filter_functions||(k.filter_functions={}),k.filter_functions[c]=!0,K(c,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(c=0;c<F;c++)s=!1,s=B.filter('[data-column="'+c+'"]:last'),h=k.filter_functions&&k.filter_functions[c]&&"function"!==typeof k.filter_functions[c]||s.hasClass("filter-select"),l+="<td>",l=h?l+('<select data-column="'+c+'" class="'+z):l+('<input type="search" placeholder="'+(s.attr("data-placeholder")||"")+'" data-column="'+c+'" class="'+z),s=A.getData?"false"===A.getData(s[0],t.headers[c],"filter"):t.headers[c]&&t.headers[c].hasOwnProperty("filter")&&!1===t.headers[c].filter|| s.hasClass("filter-false"),l+=s?' disabled" disabled':'"',l+=(h?"></select>":">")+"</td>";u.find("thead").eq(0).append(l+="</tr>")}u.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(){u.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>");u.find("thead").find("select."+z+'[data-column="'+y+'"]').append(h)}L();u.find("select."+z).bind("change search",function(){D()});!0===k.filter_hideFilters&&u.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=u.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(""===u.find("."+(k.filter_cssFilter||"tablesorter-filter")).map(function(){return b(this).val()||""}).get().join(""))r["focus"===a.type?"removeClass":"addClass"]("hideme")},200)});t.showProcessing&&u.bind("filterStart filterEnd",function(a,c){var d=c?u.find("."+t.cssHeader).filter("[data-column]").filter(function(){return""!== c[b(this).data("column")]}):"";A.isProcessing(u[0],"filterStart"===a.type,c?d:"")});t.debug&&A.benchmark("Applying Filter widget",H);u.trigger("filterInit")}},remove:function(e,c,d){var a,j;a=b(e);c=a.children("tbody:not(."+c.cssInfoBlock+")");a.removeClass("hasFilters").unbind(["addRows","updateCell","update","appendCache","search"].join(".tsfilter")).find(".tablesorter-filter-row").remove();for(a=0;a<c.length;a++)j=b.tablesorter.processTbody(e,b(c[a]),!0),j.children().removeClass("filtered").show(), b.tablesorter.processTbody(e,j,!1);d.filterreset&&b(d.filter_reset).unbind("click")}});
9
- b.tablesorter.addWidget({id:"stickyHeaders",format:function(e){if(!b(e).hasClass("hasStickyHeaders")){var c=b(e).addClass("hasStickyHeaders"),d=e.config,a=d.widgetOptions,j=b(window),f=b(e).children("thead:first"),h=f.children("tr:not(.sticky-false)").children();e=a.stickyHeaders||"tablesorter-stickyHeader";var n=h.eq(0).parent(),p=c.find("tfoot"),a=c.clone(),q=a.children("thead:first").addClass(e).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 a=navigator.userAgent;r=0;"collapse"!==c.css("border-collapse")&&!/(webkit|msie)/i.test(a)&&(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)})};a.find("thead:gt(0),tr.sticky-false,tbody,tfoot,caption").remove();a.css({height:0,width:0,padding:0,margin:0,border:0});q.find("tr.sticky-false").remove();g.find(".tablesorter-resizer").remove();c.bind("sortEnd.tsSticky",function(){h.each(function(a){a=g.eq(a);a.attr("class",b(this).attr("class"));d.cssIcon&&a.find("."+d.cssIcon).attr("class",b(this).find("."+d.cssIcon).attr("class"))})}).bind("pagerComplete.tsSticky",function(){s()});h.find("*").andSelf().filter(d.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})});c.after(a);j.bind("scroll.tsSticky",function(){var a=n.offset(),b=j.scrollTop(),d=c.height()-(q.height()+(p.height()||0)),a=b>a.top&&b<a.top+d?"visible":"hidden";q.css({left:f.offset().left-j.scrollLeft()-r,visibility:a});a!==m&&(s(),m=a)}).bind("resize.tsSticky",function(){s()})}},remove:function(e,c,d){e=b(e);d=d.stickyHeaders||"tablesorter-stickyHeader"; e.removeClass("hasStickyHeaders").unbind("sortEnd.tsSticky pagerComplete.tsSticky").find("."+d).remove();b(window).unbind("scroll.tsSticky resize.tsSticky")}});
10
- b.tablesorter.addWidget({id:"resizable",format:function(e){if(!b(e).hasClass("hasResizable")){b(e).addClass("hasResizable");var c,d,a,j,f,h=b(e),n=e.config,p=n.widgetOptions,q=0,g=null,m=null,r=function(){q=0;g=m=null;b(window).trigger("resize")};if(a=b.tablesorter.storage&&!1!==p.resizable?b.tablesorter.storage(e,"tablesorter-resizable"): {})for(d in a)!isNaN(d)&&d<n.headerList.length&&b(n.headerList[d]).width(a[d]);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(){c=b(this);d=parseInt(c.css("padding-right"),10)+8;c.find(".tablesorter-wrapper").append('<div class="tablesorter-resizer" style="cursor:w-resize;position:absolute;height:100%;width:16px;right:-'+ d+'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&&(a[g.index()]=g.width(),a[m.index()]=m.width(),!1!==p.resizable&&b.tablesorter.storage(e,"tablesorter-resizable",a));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(e);var c=b.isEmptyObject?b.isEmptyObject(a):a==={};a={};return c})}},remove:function(e){b(e).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(e)}}); b.tablesorter.resizableReset=function(e){b(e.config.headerList).width("auto");b.tablesorter.storage(e,"tablesorter-resizable",{})};
11
- b.tablesorter.addWidget({id:"saveSort",init:function(b,c){c.format(b,!0)},format:function(e,c){var d,a,j=e.config;d=!1!==j.widgetOptions.saveSort;var f={sortList:j.sortList};j.debug&&(a=new Date);b(e).hasClass("hasSaveSort")?d&&(e.hasInitialized&&b.tablesorter.storage)&&(b.tablesorter.storage(e,"tablesorter-savesort",f),j.debug&&b.tablesorter.benchmark("saveSort widget: Saving last sort: "+ j.sortList,a)):(b(e).addClass("hasSaveSort"),f="",b.tablesorter.storage&&(f=(d=b.tablesorter.storage(e,"tablesorter-savesort"))&&d.hasOwnProperty("sortList")&&b.isArray(d.sortList)?d.sortList:"",j.debug&&b.tablesorter.benchmark('saveSort: Last sort loaded: "'+f+'"',a)),c&&f&&0<f.length?j.sortList=f:e.hasInitialized&&(f&&0<f.length)&&b(e).trigger("sorton",[f]))},remove:function(e){b.tablesorter.storage(e,"tablesorter-savesort","")}})
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
12
  })(jQuery);
@@ -45,7 +45,7 @@
45
45
  background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
46
46
  }
47
47
  .tablesorter-blackice thead .sorter-false {
48
- background-image: url();
48
+ background-image: none;
49
49
  padding: 4px;
50
50
  }
51
51
 
@@ -55,7 +55,7 @@
55
55
  .tablesorter-blackice tfoot .tablesorter-headerAsc,
56
56
  .tablesorter-blackice tfoot .tablesorter-headerDesc {
57
57
  /* remove sort arrows from footer */
58
- background-image: url();
58
+ background-image: none;
59
59
  }
60
60
 
61
61
  /* tbody */
@@ -70,7 +70,7 @@
70
70
  /* background-image: url(/assets/jquery-tablesorter/black-desc.gif); */
71
71
  }
72
72
  .tablesorter-blue thead .sorter-false {
73
- background-image: url();
73
+ background-image: none;
74
74
  padding: 4px;
75
75
  }
76
76
 
@@ -80,7 +80,7 @@
80
80
  .tablesorter-blue tfoot .tablesorter-headerAsc,
81
81
  .tablesorter-blue tfoot .tablesorter-headerDesc {
82
82
  /* remove sort arrows from footer */
83
- background-image: url();
83
+ background-image: none;
84
84
  }
85
85
 
86
86
  /* tbody */
@@ -44,7 +44,7 @@
44
44
  border-bottom: #888 1px solid;
45
45
  }
46
46
  .tablesorter-dark thead .sorter-false {
47
- background-image: url();
47
+ background-image: none;
48
48
  padding: 4px;
49
49
  }
50
50
 
@@ -55,7 +55,7 @@
55
55
  .tablesorter-dark tfoot .tablesorter-headerDesc {
56
56
  border-top: #888 1px solid;
57
57
  /* remove sort arrows from footer */
58
- background-image: url();
58
+ background-image: none;
59
59
  }
60
60
 
61
61
  /* tbody */
@@ -47,7 +47,7 @@ Default Theme
47
47
  border-bottom: #000 2px solid;
48
48
  }
49
49
  .tablesorter-default thead .sorter-false {
50
- background-image: url();
50
+ background-image: none;
51
51
  padding: 4px;
52
52
  }
53
53
 
@@ -76,7 +76,7 @@
76
76
  }
77
77
  .tablesorter-dropbox thead .sorter-false i,
78
78
  .tablesorter-dropbox thead .sorter-false:hover i {
79
- background-image: url();
79
+ background-image: none;
80
80
  padding: 4px;
81
81
  }
82
82
 
@@ -57,7 +57,7 @@
57
57
  padding-left: 23px;
58
58
  }
59
59
  .tablesorter-green thead .tablesorter-header.sorter-false {
60
- background-image: url();
60
+ background-image: none;
61
61
  padding: 4px;
62
62
  }
63
63
 
@@ -79,7 +79,7 @@
79
79
  background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);
80
80
  }
81
81
  .tablesorter-grey thead .sorter-false i {
82
- background-image: url();
82
+ background-image: none;
83
83
  padding: 4px;
84
84
  }
85
85
 
@@ -59,7 +59,7 @@
59
59
  /* background-image: url(/assets/jquery-tablesorter/ice-asc.gif); */
60
60
  }
61
61
  .tablesorter-ice thead .sorter-false {
62
- background-image: url();
62
+ background-image: none;
63
63
  padding: 4px;
64
64
  }
65
65
 
@@ -68,7 +68,7 @@
68
68
 
69
69
  /* Zebra widget - This allows you to use ui-state-default as the zebra stripe color */
70
70
  .tablesorter-jui tr.ui-state-default {
71
- background-image: url();
71
+ background-image: none;
72
72
  font-weight: normal;
73
73
  }
74
74
 
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery-tablesorter
3
3
  version: !ruby/object:Gem::Version
4
+ version: 1.4.0
4
5
  prerelease:
5
- version: 1.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jun Lin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-24 00:00:00.000000000 Z
12
+ date: 2013-01-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- type: :runtime
16
- version_requirements: !ruby/object:Gem::Requirement
15
+ name: railties
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.1'
22
- name: railties
22
+ type: :runtime
23
23
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ~>
@@ -99,19 +99,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ! '>='
101
101
  - !ruby/object:Gem::Version
102
+ version: '0'
102
103
  segments:
103
104
  - 0
104
- hash: 1361323073996744612
105
- version: '0'
105
+ hash: -4475428360458463170
106
106
  required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
110
110
  - !ruby/object:Gem::Version
111
+ version: '0'
111
112
  segments:
112
113
  - 0
113
- hash: 1361323073996744612
114
- version: '0'
114
+ hash: -4475428360458463170
115
115
  requirements: []
116
116
  rubyforge_project:
117
117
  rubygems_version: 1.8.23