Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

{"version":3,"sources":["../src/jquery.tablesorter.js"],"names":["factory","define","amd","module","exports","require","jQuery","$","ts","tablesorter","version","parsers","widgets","defaults","theme","widthFixed","showProcessing","headerTemplate","onRenderTemplate","onRenderHeader","cancelSelection","tabIndex","dateFormat","sortMultiSortKey","sortResetKey","usNumberFormat","delayInit","serverSideSorting","resort","headers","ignoreCase","sortForce","sortList","sortAppend","sortStable","sortInitialOrder","sortLocaleCompare","sortReset","sortRestart","emptyTo","stringTo","duplicateSpan","textExtraction","textAttribute","textSorter","numberSorter","initWidgets","widgetClass","widgetOptions","zebra","initialized","tableClass","cssAsc","cssDesc","cssNone","cssHeader","cssHeaderRow","cssProcessing","cssChildRow","cssInfoBlock","cssNoSort","cssIgnoreRow","cssIcon","cssIconNone","cssIconAsc","cssIconDesc","cssIconDisabled","pointerClick","pointerDown","pointerUp","selectorHeaders","selectorSort","selectorRemove","debug","headerList","empties","strings","globalize","imgAttr","css","table","cssHasChild","childRow","colgroup","header","headerRow","headerIn","icon","processing","sortAsc","sortDesc","sortNone","language","sortDisabled","nextAsc","nextDesc","nextNone","regex","templateContent","templateIcon","templateName","spaces","nonWord","formElements","chunk","chunks","hex","comma","digitNonUS","digitNegativeTest","digitNegativeReplace","digitTest","digitReplace","string","max","min","emptymin","emptymax","zero","none","top","bottom","keyCodes","enter","dates","instanceMethods","setup","c","tHead","tBodies","length","hasInitialized","console","warn","error","tmp","$table","meta","metadata","isProcessing","config","data","group","Date","supportsDataObject","parseInt","fn","jquery","split","toLowerCase","last","clickedIndex","test","attr","namespace","Math","random","toString","slice","replace","addClass","$headers","find","children","$tbodies","id","widgetInit","buildHeaders","fixColumnWidth","addWidgetFromClass","applyWidgetOptions","setupParsers","totalRows","validateOptions","buildCache","bindEvents","bindMethods","sortlist","applyWidget","sortOn","setHeadersCss","unbind","bind","e","clearTimeout","timerProcessing","type","setTimeout","log","benchmark","groupEnd","triggerHandler","events","join","callback","stopPropagation","isApplyingWidgets","updateAll","update","updateHeaders","cell","updateCell","$row","addRows","isUpdating","list","init","appendCache","isFunction","updateCache","applyWidgetId","all","dontapply","refreshWidgets","name","refreshing","removeWidget","removeClasses","destroy","extend","originalSettings","core","downTarget","getClosest","nodeName","add","filter","external","$cell","temp","$target","target","which","button","match","preventDefault","hasClass","parents","isEmptyObject","cache","index","$headerIndexed","initSort","$temp","timer","indx","headerContent","sortVars","columns","computeColumnIndex","map","elem","configHeaders","column","template","$elem","getColumnData","html","apply","getOrder","getData","count","order","lockedOrder","sortedBy","not","scope","role","updateHeader","addInstanceMethods","methods","rows","span","colIndex","noParser","parser","extractor","time","tbody","len","tbodyIndex","debugOutput","extractors","getParserById","emptyToBottom","detectParserForColumn","text","empty","colSpan","addParser","rowIndex","cellIndex","cur","$node","row","node","nodeValue","keepLooking","className","indexOf","cells","getElementText","is","extract","trim","textContent","getParsedText","txt","val","format","$tbody","cols","$cells","cacheTime","rowData","prevRowData","colMax","cacheIndex","hasParser","normalized","child","raw","prev","abs","getColumnText","rowFilter","tbodyLen","rowLen","parsed","result","allColumns","eq","aria","updateColumnSort","$el","removeClass","$extras","$sorted","end","i","include","col","isValueInArray","setColumnAriaLabel","selector","closest","$header","nextSort","vars","removeAttr","isDisabled","setColumnSort","updateHeaderSortCount","dir","primary","inArray","commonUpdate","resortComplete","remove","icell","tbcache","checkResort","valid","append","$curTbody","appendTime","appender","processTbody","pager","removeRows","ajax","event","arry","headerIndx","notMultiSort","th","each","splice","isArray","multisort","sortTime","sorter","sortLen","sort","a","b","sortIndex","num","x","y","getSortType","resrt","sortNatural","aNum","bNum","aFloat","bFloat","isNaN","parseFloat","sortNaturalAsc","sortNaturalDesc","sortText","getTextValue","n","charCodeAt","sortNumericAsc","sortNumericDesc","sortNumeric","addWidget","widget","getWidgetById","hasWidget","wo","options","RegExp","applied","names","timerReady","grep","priority","doAll","curWidgets","diff","getTime","arguments","obj","formatFloat","str","usFormat","isDigit","$rows","j","k","l","rowSpan","firstAvailCol","matrix","matrixrow","Array","setAttribute","checkColumnCount","el","parentElement","push","overallWidth","percent","$colgroup","width","prepend","configHeader","key","cl4ss","getCell","toggle","$tb","getIt","before","detach","holdr","insertAfter","clearTableBody","characterEquivalents","replaceAccents","chr","acc","characterRegex","characterRegexArray","setting","setting2","typ","ignore","orig","restoreHeaders","$t","$h","$r","$f","removeData","toggleClass","settings","buildTable","window","logs","arg","date","now","toLocaleLowerCase","nondigit","currencyReplace","currencyTest","urlProtocolTest","urlProtocolReplace","dash","isoDate","isFinite","percentTest","dateReplace","usLongDateTest1","usLongDateTest2","shortDateTest","shortDateReplace","shortDateXXY","shortDateYMD","convertFormat","dateString","timeTest","timeMatch","timePart","p","parserMetadataName","$visibleRows","isEven","toRemove"],"mappings":"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","sourcesContent":["/*eslint-disable*/\n(function(factory){\n\tif (typeof define === 'function' && define.amd){\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof module === 'object' && typeof module.exports === 'object'){\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\tfactory(jQuery);\n\t}\n}(function(jQuery){\n\n/*! TableSorter (FORK) v2.31.0 *//*\n* Client-side table sorting with ease!\n* @requires jQuery v1.2.6+\n*\n* Copyright (c) 2007 Christian Bach\n* fork maintained by Rob Garrison\n*\n* Examples and original docs at: http://tablesorter.com\n* Dual licensed under the MIT and GPL licenses:\n* http://www.opensource.org/licenses/mit-license.php\n* http://www.gnu.org/licenses/gpl.html\n*\n* @type jQuery\n* @name tablesorter (FORK)\n* @cat Plugins/Tablesorter\n* @author Christian Bach - christian.bach@polyester.se\n* @contributor Rob Garrison - https://github.com/Mottie/tablesorter\n* @docs (fork) - https://mottie.github.io/tablesorter/docs/\n*/\n/*jshint browser:true, jquery:true, unused:false, expr: true */\n;( function( $ ) {\n\t'use strict';\n\tvar ts = $.tablesorter = {\n\n\t\tversion : '2.31.0',\n\n\t\tparsers : [],\n\t\twidgets : [],\n\t\tdefaults : {\n\n\t\t\t// *** appearance\n\t\t\ttheme            : 'default',  // adds tablesorter-{theme} to the table for styling\n\t\t\twidthFixed       : false,      // adds colgroup to fix widths of columns\n\t\t\tshowProcessing   : false,      // show an indeterminate timer icon in the header when the table is sorted or filtered.\n\n\t\t\theaderTemplate   : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> // class from cssIcon\n\t\t\tonRenderTemplate : null,       // function( index, template ) { return template; }, // template is a string\n\t\t\tonRenderHeader   : null,       // function( index ) {}, // nothing to return\n\n\t\t\t// *** functionality\n\t\t\tcancelSelection  : true,       // prevent text selection in the header\n\t\t\ttabIndex         : true,       // add tabindex to header for keyboard accessibility\n\t\t\tdateFormat       : 'mmddyyyy', // other options: 'ddmmyyy' or 'yyyymmdd'\n\t\t\tsortMultiSortKey : 'shiftKey', // key used to select additional columns\n\t\t\tsortResetKey     : 'ctrlKey',  // key used to remove sorting on a column\n\t\t\tusNumberFormat   : true,       // false for German '1.234.567,89' or French '1 234 567,89'\n\t\t\tdelayInit        : false,      // if false, the parsed table contents will not update until the first sort\n\t\t\tserverSideSorting: 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.\n\t\t\tresort           : true,       // default setting to trigger a resort after an 'update', 'addRows', 'updateCell', etc has completed\n\n\t\t\t// *** sort options\n\t\t\theaders          : {},         // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.\n\t\t\tignoreCase       : true,       // ignore case while sorting\n\t\t\tsortForce        : null,       // column(s) first sorted; always applied\n\t\t\tsortList         : [],         // Initial sort order; applied initially; updated when manually sorted\n\t\t\tsortAppend       : null,       // column(s) sorted last; always applied\n\t\t\tsortStable       : false,      // when sorting two rows with exactly the same content, the original sort order is maintained\n\n\t\t\tsortInitialOrder : 'asc',      // sort direction on first click\n\t\t\tsortLocaleCompare: false,      // replace equivalent character (accented characters)\n\t\t\tsortReset        : false,      // third click on the header will reset column to default - unsorted\n\t\t\tsortRestart      : false,      // restart sort to 'sortInitialOrder' when clicking on previously unsorted columns\n\n\t\t\temptyTo          : 'bottom',   // sort empty cell to bottom, top, none, zero, emptyMax, emptyMin\n\t\t\tstringTo         : 'max',      // sort strings in numerical column as max, min, top, bottom, zero\n\t\t\tduplicateSpan    : true,       // colspan cells in the tbody will have duplicated content in the cache for each spanned column\n\t\t\ttextExtraction   : 'basic',    // text extraction method/function - function( node, table, cellIndex ) {}\n\t\t\ttextAttribute    : 'data-text',// data-attribute that contains alternate cell text (used in default textExtraction function)\n\t\t\ttextSorter       : null,       // choose overall or specific column sorter function( a, b, direction, table, columnIndex ) [alt: ts.sortText]\n\t\t\tnumberSorter     : null,       // choose overall numeric sorter function( a, b, direction, maxColumnValue )\n\n\t\t\t// *** widget options\n\t\t\tinitWidgets      : true,       // apply widgets on tablesorter initialization\n\t\t\twidgetClass      : 'widget-{name}', // table class name template to match to include a widget\n\t\t\twidgets          : [],         // method to add widgets, e.g. widgets: ['zebra']\n\t\t\twidgetOptions    : {\n\t\t\t\tzebra : [ 'even', 'odd' ]  // zebra widget alternating row class names\n\t\t\t},\n\n\t\t\t// *** callbacks\n\t\t\tinitialized      : null,       // function( table ) {},\n\n\t\t\t// *** extra css class names\n\t\t\ttableClass       : '',\n\t\t\tcssAsc           : '',\n\t\t\tcssDesc          : '',\n\t\t\tcssNone          : '',\n\t\t\tcssHeader        : '',\n\t\t\tcssHeaderRow     : '',\n\t\t\tcssProcessing    : '', // processing icon applied to header during sort/filter\n\n\t\t\tcssChildRow      : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent\n\t\t\tcssInfoBlock     : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)\n\t\t\tcssNoSort        : 'tablesorter-noSort',   // class name added to element inside header; clicking on it won't cause a sort\n\t\t\tcssIgnoreRow     : 'tablesorter-ignoreRow',// header row to ignore; cells within this row will not be added to c.$headers\n\n\t\t\tcssIcon          : 'tablesorter-icon', // if this class does not exist, the {icon} will not be added from the headerTemplate\n\t\t\tcssIconNone      : '', // class name added to the icon when there is no column sort\n\t\t\tcssIconAsc       : '', // class name added to the icon when the column has an ascending sort\n\t\t\tcssIconDesc      : '', // class name added to the icon when the column has a descending sort\n\t\t\tcssIconDisabled  : '', // class name added to the icon when the column has a disabled sort\n\n\t\t\t// *** events\n\t\t\tpointerClick     : 'click',\n\t\t\tpointerDown      : 'mousedown',\n\t\t\tpointerUp        : 'mouseup',\n\n\t\t\t// *** selectors\n\t\t\tselectorHeaders  : '> thead th, > thead td',\n\t\t\tselectorSort     : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort\n\t\t\tselectorRemove   : '.remove-me',\n\n\t\t\t// *** advanced\n\t\t\tdebug            : false,\n\n\t\t\t// *** Internal variables\n\t\t\theaderList: [],\n\t\t\tempties: {},\n\t\t\tstrings: {},\n\t\t\tparsers: [],\n\n\t\t\t// *** parser options for validator; values must be falsy!\n\t\t\tglobalize: 0,\n\t\t\timgAttr: 0\n\n\t\t\t// removed: widgetZebra: { css: ['even', 'odd'] }\n\n\t\t},\n\n\t\t// internal css classes - these will ALWAYS be added to\n\t\t// the table and MUST only contain one class name - fixes #381\n\t\tcss : {\n\t\t\ttable      : 'tablesorter',\n\t\t\tcssHasChild: 'tablesorter-hasChildRow',\n\t\t\tchildRow   : 'tablesorter-childRow',\n\t\t\tcolgroup   : 'tablesorter-colgroup',\n\t\t\theader     : 'tablesorter-header',\n\t\t\theaderRow  : 'tablesorter-headerRow',\n\t\t\theaderIn   : 'tablesorter-header-inner',\n\t\t\ticon       : 'tablesorter-icon',\n\t\t\tprocessing : 'tablesorter-processing',\n\t\t\tsortAsc    : 'tablesorter-headerAsc',\n\t\t\tsortDesc   : 'tablesorter-headerDesc',\n\t\t\tsortNone   : 'tablesorter-headerUnSorted'\n\t\t},\n\n\t\t// labels applied to sortable headers for accessibility (aria) support\n\t\tlanguage : {\n\t\t\tsortAsc      : 'Ascending sort applied, ',\n\t\t\tsortDesc     : 'Descending sort applied, ',\n\t\t\tsortNone     : 'No sort applied, ',\n\t\t\tsortDisabled : 'sorting is disabled',\n\t\t\tnextAsc      : 'activate to apply an ascending sort',\n\t\t\tnextDesc     : 'activate to apply a descending sort',\n\t\t\tnextNone     : 'activate to remove the sort'\n\t\t},\n\n\t\tregex : {\n\t\t\ttemplateContent : /\\{content\\}/g,\n\t\t\ttemplateIcon    : /\\{icon\\}/g,\n\t\t\ttemplateName    : /\\{name\\}/i,\n\t\t\tspaces          : /\\s+/g,\n\t\t\tnonWord         : /\\W/g,\n\t\t\tformElements    : /(input|select|button|textarea)/i,\n\n\t\t\t// *** sort functions ***\n\t\t\t// regex used in natural sort\n\t\t\t// chunk/tokenize numbers & letters\n\t\t\tchunk  : /(^([+\\-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\n\t\t\t// replace chunks @ ends\n\t\t\tchunks : /(^\\\\0|\\\\0$)/,\n\t\t\thex    : /^0x[0-9a-f]+$/i,\n\n\t\t\t// *** formatFloat ***\n\t\t\tcomma                : /,/g,\n\t\t\tdigitNonUS           : /[\\s|\\.]/g,\n\t\t\tdigitNegativeTest    : /^\\s*\\([.\\d]+\\)/,\n\t\t\tdigitNegativeReplace : /^\\s*\\(([.\\d]+)\\)/,\n\n\t\t\t// *** isDigit ***\n\t\t\tdigitTest    : /^[\\-+(]?\\d+[)]?$/,\n\t\t\tdigitReplace : /[,.'\"\\s]/g\n\n\t\t},\n\n\t\t// digit sort, text location\n\t\tstring : {\n\t\t\tmax      : 1,\n\t\t\tmin      : -1,\n\t\t\temptymin : 1,\n\t\t\temptymax : -1,\n\t\t\tzero     : 0,\n\t\t\tnone     : 0,\n\t\t\t'null'   : 0,\n\t\t\ttop      : true,\n\t\t\tbottom   : false\n\t\t},\n\n\t\tkeyCodes : {\n\t\t\tenter : 13\n\t\t},\n\n\t\t// placeholder date parser data (globalize)\n\t\tdates : {},\n\n\t\t// These methods can be applied on table.config instance\n\t\tinstanceMethods : {},\n\n\t\t/*\n\t\t▄█████ ██████ ██████ ██  ██ █████▄\n\t\t▀█▄    ██▄▄     ██   ██  ██ ██▄▄██\n\t\t   ▀█▄ ██▀▀     ██   ██  ██ ██▀▀▀\n\t\t█████▀ ██████   ██   ▀████▀ ██\n\t\t*/\n\n\t\tsetup : function( table, c ) {\n\t\t\t// if no thead or tbody, or tablesorter is already present, quit\n\t\t\tif ( !table || !table.tHead || table.tBodies.length === 0 || table.hasInitialized === true ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tif ( table.hasInitialized ) {\n\t\t\t\t\t\tconsole.warn( 'Stopping initialization. Tablesorter has already been initialized' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error( 'Stopping initialization! No table, thead or tbody', table );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tmp = '',\n\t\t\t\t$table = $( table ),\n\t\t\t\tmeta = $.metadata;\n\t\t\t// initialization flag\n\t\t\ttable.hasInitialized = false;\n\t\t\t// table is being processed flag\n\t\t\ttable.isProcessing = true;\n\t\t\t// make sure to store the config object\n\t\t\ttable.config = c;\n\t\t\t// save the settings where they read\n\t\t\t$.data( table, 'tablesorter', c );\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );\n\t\t\t\t$.data( table, 'startoveralltimer', new Date() );\n\t\t\t}\n\n\t\t\t// removing this in version 3 (only supports jQuery 1.7+)\n\t\t\tc.supportsDataObject = ( function( version ) {\n\t\t\t\tversion[ 0 ] = parseInt( version[ 0 ], 10 );\n\t\t\t\treturn ( version[ 0 ] > 1 ) || ( version[ 0 ] === 1 && parseInt( version[ 1 ], 10 ) >= 4 );\n\t\t\t})( $.fn.jquery.split( '.' ) );\n\t\t\t// ensure case insensitivity\n\t\t\tc.emptyTo = c.emptyTo.toLowerCase();\n\t\t\tc.stringTo = c.stringTo.toLowerCase();\n\t\t\tc.last = { sortList : [], clickedIndex : -1 };\n\t\t\t// add table theme class only if there isn't already one there\n\t\t\tif ( !/tablesorter\\-/.test( $table.attr( 'class' ) ) ) {\n\t\t\t\ttmp = ( c.theme !== '' ? ' tablesorter-' + c.theme : '' );\n\t\t\t}\n\n\t\t\t// give the table a unique id, which will be used in namespace binding\n\t\t\tif ( !c.namespace ) {\n\t\t\t\tc.namespace = '.tablesorter' + Math.random().toString( 16 ).slice( 2 );\n\t\t\t} else {\n\t\t\t\t// make sure namespace starts with a period & doesn't have weird characters\n\t\t\t\tc.namespace = '.' + c.namespace.replace( ts.regex.nonWord, '' );\n\t\t\t}\n\n\t\t\tc.table = table;\n\t\t\tc.$table = $table\n\t\t\t\t// add namespace to table to allow bindings on extra elements to target\n\t\t\t\t// the parent table (e.g. parser-input-select)\n\t\t\t\t.addClass( ts.css.table + ' ' + c.tableClass + tmp + ' ' + c.namespace.slice(1) )\n\t\t\t\t.attr( 'role', 'grid' );\n\t\t\tc.$headers = $table.find( c.selectorHeaders );\n\n\t\t\tc.$table.children().children( 'tr' ).attr( 'role', 'row' );\n\t\t\tc.$tbodies = $table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ).attr({\n\t\t\t\t'aria-live' : 'polite',\n\t\t\t\t'aria-relevant' : 'all'\n\t\t\t});\n\t\t\tif ( c.$table.children( 'caption' ).length ) {\n\t\t\t\ttmp = c.$table.children( 'caption' )[ 0 ];\n\t\t\t\tif ( !tmp.id ) { tmp.id = c.namespace.slice( 1 ) + 'caption'; }\n\t\t\t\tc.$table.attr( 'aria-labelledby', tmp.id );\n\t\t\t}\n\t\t\tc.widgetInit = {}; // keep a list of initialized widgets\n\t\t\t// change textExtraction via data-attribute\n\t\t\tc.textExtraction = c.$table.attr( 'data-text-extraction' ) || c.textExtraction || 'basic';\n\t\t\t// build headers\n\t\t\tts.buildHeaders( c );\n\t\t\t// fixate columns if the users supplies the fixedWidth option\n\t\t\t// do this after theme has been applied\n\t\t\tts.fixColumnWidth( table );\n\t\t\t// add widgets from class name\n\t\t\tts.addWidgetFromClass( table );\n\t\t\t// add widget options before parsing (e.g. grouping widget has parser settings)\n\t\t\tts.applyWidgetOptions( table );\n\t\t\t// try to auto detect column type, and store in tables config\n\t\t\tts.setupParsers( c );\n\t\t\t// start total row count at zero\n\t\t\tc.totalRows = 0;\n\t\t\t// only validate options while debugging. See #1528\n\t\t\tif (c.debug) {\n\t\t\t\tts.validateOptions( c );\n\t\t\t}\n\t\t\t// build the cache for the tbody cells\n\t\t\t// delayInit will delay building the cache until the user starts a sort\n\t\t\tif ( !c.delayInit ) { ts.buildCache( c ); }\n\t\t\t// bind all header events and methods\n\t\t\tts.bindEvents( table, c.$headers, true );\n\t\t\tts.bindMethods( c );\n\t\t\t// get sort list from jQuery data or metadata\n\t\t\t// in jQuery < 1.4, an error occurs when calling $table.data()\n\t\t\tif ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) {\n\t\t\t\tc.sortList = $table.data().sortlist;\n\t\t\t} else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) {\n\t\t\t\tc.sortList = $table.metadata().sortlist;\n\t\t\t}\n\t\t\t// apply widget init code\n\t\t\tts.applyWidget( table, true );\n\t\t\t// if user has supplied a sort list to constructor\n\t\t\tif ( c.sortList.length > 0 ) {\n\t\t\t\tts.sortOn( c, c.sortList, {}, !c.initWidgets );\n\t\t\t} else {\n\t\t\t\tts.setHeadersCss( c );\n\t\t\t\tif ( c.initWidgets ) {\n\t\t\t\t\t// apply widget format\n\t\t\t\t\tts.applyWidget( table, false );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// show processesing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\t$table\n\t\t\t\t.unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace )\n\t\t\t\t.bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) {\n\t\t\t\t\tclearTimeout( c.timerProcessing );\n\t\t\t\t\tts.isProcessing( table );\n\t\t\t\t\tif ( e.type === 'sortBegin' ) {\n\t\t\t\t\t\tc.timerProcessing = setTimeout( function() {\n\t\t\t\t\t\t\tts.isProcessing( table, true );\n\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// initialized\n\t\t\ttable.hasInitialized = true;\n\t\t\ttable.isProcessing = false;\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );\n\t\t\t\tif ( ts.debug(c, 'core') && console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\t$table.triggerHandler( 'tablesorter-initialized', table );\n\t\t\tif ( typeof c.initialized === 'function' ) {\n\t\t\t\tc.initialized( table );\n\t\t\t}\n\t\t},\n\n\t\tbindMethods : function( c ) {\n\t\t\tvar $table = c.$table,\n\t\t\t\tnamespace = c.namespace,\n\t\t\t\tevents = ( 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete ' +\n\t\t\t\t\t'sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup ' +\n\t\t\t\t\t'mouseleave ' ).split( ' ' )\n\t\t\t\t\t.join( namespace + ' ' );\n\t\t\t// apply easy methods that trigger bound events\n\t\t\t$table\n\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) )\n\t\t\t.bind( 'sortReset' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// using this.config to ensure functions are getting a non-cached version of the config\n\t\t\t\tts.sortReset( this.config, function( table ) {\n\t\t\t\t\tif (table.isApplyingWidgets) {\n\t\t\t\t\t\t// multiple triggers in a row... filterReset, then sortReset - see #1361\n\t\t\t\t\t\t// wait to update widgets\n\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\tts.applyWidget( table, '', callback );\n\t\t\t\t\t\t}, 100 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tts.applyWidget( table, '', callback );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})\n\t\t\t.bind( 'updateAll' + namespace, function( e, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateAll( this.config, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'update' + namespace + ' updateRows' + namespace, function( e, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.update( this.config, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'updateHeaders' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateHeaders( this.config, callback );\n\t\t\t})\n\t\t\t.bind( 'updateCell' + namespace, function( e, cell, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateCell( this.config, cell, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'addRows' + namespace, function( e, $row, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.addRows( this.config, $row, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'updateComplete' + namespace, function() {\n\t\t\t\tthis.isUpdating = false;\n\t\t\t})\n\t\t\t.bind( 'sorton' + namespace, function( e, list, callback, init ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.sortOn( this.config, list, callback, init );\n\t\t\t})\n\t\t\t.bind( 'appendCache' + namespace, function( e, callback, init ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.appendCache( this.config, init );\n\t\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\t\tcallback( this );\n\t\t\t\t}\n\t\t\t})\n\t\t\t// $tbodies variable is used by the tbody sorting widget\n\t\t\t.bind( 'updateCache' + namespace, function( e, callback, $tbodies ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateCache( this.config, callback, $tbodies );\n\t\t\t})\n\t\t\t.bind( 'applyWidgetId' + namespace, function( e, id ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.applyWidgetId( this, id );\n\t\t\t})\n\t\t\t.bind( 'applyWidgets' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// apply widgets (false = not initializing)\n\t\t\t\tts.applyWidget( this, false, callback );\n\t\t\t})\n\t\t\t.bind( 'refreshWidgets' + namespace, function( e, all, dontapply ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.refreshWidgets( this, all, dontapply );\n\t\t\t})\n\t\t\t.bind( 'removeWidget' + namespace, function( e, name, refreshing ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.removeWidget( this, name, refreshing );\n\t\t\t})\n\t\t\t.bind( 'destroy' + namespace, function( e, removeClasses, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.destroy( this, removeClasses, callback );\n\t\t\t})\n\t\t\t.bind( 'resetToLoadState' + namespace, function( e ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// remove all widgets\n\t\t\t\tts.removeWidget( this, true, false );\n\t\t\t\tvar tmp = $.extend( true, {}, c.originalSettings );\n\t\t\t\t// restore original settings; this clears out current settings, but does not clear\n\t\t\t\t// values saved to storage.\n\t\t\t\tc = $.extend( true, {}, ts.defaults, tmp );\n\t\t\t\tc.originalSettings = tmp;\n\t\t\t\tthis.hasInitialized = false;\n\t\t\t\t// setup the entire table again\n\t\t\t\tts.setup( this, c );\n\t\t\t});\n\t\t},\n\n\t\tbindEvents : function( table, $headers, core ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar tmp,\n\t\t\t\tc = table.config,\n\t\t\t\tnamespace = c.namespace,\n\t\t\t\tdownTarget = null;\n\t\t\tif ( core !== true ) {\n\t\t\t\t$headers.addClass( namespace.slice( 1 ) + '_extra_headers' );\n\t\t\t\ttmp = ts.getClosest( $headers, 'table' );\n\t\t\t\tif ( tmp.length && tmp[ 0 ].nodeName === 'TABLE' && tmp[ 0 ] !== table ) {\n\t\t\t\t\t$( tmp[ 0 ] ).addClass( namespace.slice( 1 ) + '_extra_table' );\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = ( c.pointerDown + ' ' + c.pointerUp + ' ' + c.pointerClick + ' sort keyup ' )\n\t\t\t\t.replace( ts.regex.spaces, ' ' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.join( namespace + ' ' );\n\t\t\t// apply event handling to headers and/or additional headers (stickyheaders, scroller, etc)\n\t\t\t$headers\n\t\t\t// http://stackoverflow.com/questions/5312849/jquery-find-self;\n\t\t\t.find( c.selectorSort )\n\t\t\t.add( $headers.filter( c.selectorSort ) )\n\t\t\t.unbind( tmp )\n\t\t\t.bind( tmp, function( e, external ) {\n\t\t\t\tvar $cell, cell, temp,\n\t\t\t\t\t$target = $( e.target ),\n\t\t\t\t\t// wrap event type in spaces, so the match doesn't trigger on inner words\n\t\t\t\t\ttype = ' ' + e.type + ' ';\n\t\t\t\t// only recognize left clicks\n\t\t\t\tif ( ( ( e.which || e.button ) !== 1 && !type.match( ' ' + c.pointerClick + ' | sort | keyup ' ) ) ||\n\t\t\t\t\t// allow pressing enter\n\t\t\t\t\t( type === ' keyup ' && e.which !== ts.keyCodes.enter ) ||\n\t\t\t\t\t// allow triggering a click event (e.which is undefined) & ignore physical clicks\n\t\t\t\t\t( type.match( ' ' + c.pointerClick + ' ' ) && typeof e.which !== 'undefined' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// ignore mouseup if mousedown wasn't on the same target\n\t\t\t\tif ( type.match( ' ' + c.pointerUp + ' ' ) && downTarget !== e.target && external !== true ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// set target on mousedown\n\t\t\t\tif ( type.match( ' ' + c.pointerDown + ' ' ) ) {\n\t\t\t\t\tdownTarget = e.target;\n\t\t\t\t\t// preventDefault needed or jQuery v1.3.2 and older throws an\n\t\t\t\t\t// \"Uncaught TypeError: handler.apply is not a function\" error\n\t\t\t\t\ttemp = $target.jquery.split( '.' );\n\t\t\t\t\tif ( temp[ 0 ] === '1' && temp[ 1 ] < 4 ) { e.preventDefault(); }\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdownTarget = null;\n\t\t\t\t$cell = ts.getClosest( $( this ), '.' + ts.css.header );\n\t\t\t\t// prevent sort being triggered on form elements\n\t\t\t\tif ( ts.regex.formElements.test( e.target.nodeName ) ||\n\t\t\t\t\t// nosort class name, or elements within a nosort container\n\t\t\t\t\t$target.hasClass( c.cssNoSort ) || $target.parents( '.' + c.cssNoSort ).length > 0 ||\n\t\t\t\t\t// disabled cell directly clicked\n\t\t\t\t\t$cell.hasClass( 'sorter-false' ) ||\n\t\t\t\t\t// elements within a button\n\t\t\t\t\t$target.parents( 'button' ).length > 0 ) {\n\t\t\t\t\treturn !c.cancelSelection;\n\t\t\t\t}\n\t\t\t\tif ( c.delayInit && ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t\tts.buildCache( c );\n\t\t\t\t}\n\t\t\t\t// use column index from data-attribute or index of current row; fixes #1116\n\t\t\t\tc.last.clickedIndex = $cell.attr( 'data-column' ) || $cell.index();\n\t\t\t\tcell = c.$headerIndexed[ c.last.clickedIndex ][0];\n\t\t\t\tif ( cell && !cell.sortDisabled ) {\n\t\t\t\t\tts.initSort( c, cell, e );\n\t\t\t\t}\n\t\t\t});\n\t\t\tif ( c.cancelSelection ) {\n\t\t\t\t// cancel selection\n\t\t\t\t$headers\n\t\t\t\t\t.attr( 'unselectable', 'on' )\n\t\t\t\t\t.bind( 'selectstart', false )\n\t\t\t\t\t.css({\n\t\t\t\t\t\t'user-select' : 'none',\n\t\t\t\t\t\t'MozUserSelect' : 'none' // not needed for jQuery 1.8+\n\t\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tbuildHeaders : function( c ) {\n\t\t\tvar $temp, icon, timer, indx;\n\t\t\tc.headerList = [];\n\t\t\tc.headerContent = [];\n\t\t\tc.sortVars = [];\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\ttimer = new Date();\n\t\t\t}\n\t\t\t// children tr in tfoot - see issue #196 & #547\n\t\t\t// don't pass table.config to computeColumnIndex here - widgets (math) pass it to \"quickly\" index tbody cells\n\t\t\tc.columns = ts.computeColumnIndex( c.$table.children( 'thead, tfoot' ).children( 'tr' ) );\n\t\t\t// add icon if cssIcon option exists\n\t\t\ticon = c.cssIcon ?\n\t\t\t\t'<i class=\"' + ( c.cssIcon === ts.css.icon ? ts.css.icon : c.cssIcon + ' ' + ts.css.icon ) + '\"></i>' :\n\t\t\t\t'';\n\t\t\t// redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683\n\t\t\tc.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) {\n\t\t\t\tvar configHeaders, header, column, template, tmp,\n\t\t\t\t\t$elem = $( elem );\n\t\t\t\t// ignore cell (don't add it to c.$headers) if row has ignoreRow class\n\t\t\t\tif ( ts.getClosest( $elem, 'tr' ).hasClass( c.cssIgnoreRow ) ) { return; }\n\t\t\t\t// transfer data-column to element if not th/td - #1459\n\t\t\t\tif ( !/(th|td)/i.test( elem.nodeName ) ) {\n\t\t\t\t\ttmp = ts.getClosest( $elem, 'th, td' );\n\t\t\t\t\t$elem.attr( 'data-column', tmp.attr( 'data-column' ) );\n\t\t\t\t}\n\t\t\t\t// make sure to get header cell & not column indexed cell\n\t\t\t\tconfigHeaders = ts.getColumnData( c.table, c.headers, index, true );\n\t\t\t\t// save original header content\n\t\t\t\tc.headerContent[ index ] = $elem.html();\n\t\t\t\t// if headerTemplate is empty, don't reformat the header cell\n\t\t\t\tif ( c.headerTemplate !== '' && !$elem.find( '.' + ts.css.headerIn ).length ) {\n\t\t\t\t\t// set up header template\n\t\t\t\t\ttemplate = c.headerTemplate\n\t\t\t\t\t\t.replace( ts.regex.templateContent, $elem.html() )\n\t\t\t\t\t\t.replace( ts.regex.templateIcon, $elem.find( '.' + ts.css.icon ).length ? '' : icon );\n\t\t\t\t\tif ( c.onRenderTemplate ) {\n\t\t\t\t\t\theader = c.onRenderTemplate.apply( $elem, [ index, template ] );\n\t\t\t\t\t\t// only change t if something is returned\n\t\t\t\t\t\tif ( header && typeof header === 'string' ) {\n\t\t\t\t\t\t\ttemplate = header;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$elem.html( '<div class=\"' + ts.css.headerIn + '\">' + template + '</div>' ); // faster than wrapInner\n\t\t\t\t}\n\t\t\t\tif ( c.onRenderHeader ) {\n\t\t\t\t\tc.onRenderHeader.apply( $elem, [ index, c, c.$table ] );\n\t\t\t\t}\n\t\t\t\tcolumn = parseInt( $elem.attr( 'data-column' ), 10 );\n\t\t\t\telem.column = column;\n\t\t\t\ttmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );\n\t\t\t\t// this may get updated numerous times if there are multiple rows\n\t\t\t\tc.sortVars[ column ] = {\n\t\t\t\t\tcount : -1, // set to -1 because clicking on the header automatically adds one\n\t\t\t\t\torder : tmp ?\n\t\t\t\t\t\t( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted\n\t\t\t\t\t\t( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ),  // asc, desc, unsorted\n\t\t\t\t\tlockedOrder : false,\n\t\t\t\t\tsortedBy : ''\n\t\t\t\t};\n\t\t\t\ttmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;\n\t\t\t\tif ( typeof tmp !== 'undefined' && tmp !== false ) {\n\t\t\t\t\tc.sortVars[ column ].lockedOrder = true;\n\t\t\t\t\tc.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];\n\t\t\t\t}\n\t\t\t\t// add cell to headerList\n\t\t\t\tc.headerList[ index ] = elem;\n\t\t\t\t$elem.addClass( ts.css.header + ' ' + c.cssHeader );\n\t\t\t\t// add to parent in case there are multiple rows\n\t\t\t\tts.getClosest( $elem, 'tr' )\n\t\t\t\t\t.addClass( ts.css.headerRow + ' ' + c.cssHeaderRow )\n\t\t\t\t\t.attr( 'role', 'row' );\n\t\t\t\t// allow keyboard cursor to focus on element\n\t\t\t\tif ( c.tabIndex ) {\n\t\t\t\t\t$elem.attr( 'tabindex', 0 );\n\t\t\t\t}\n\t\t\t\treturn elem;\n\t\t\t}) );\n\t\t\t// cache headers per column\n\t\t\tc.$headerIndexed = [];\n\t\t\tfor ( indx = 0; indx < c.columns; indx++ ) {\n\t\t\t\t// colspan in header making a column undefined\n\t\t\t\tif ( ts.isEmptyObject( c.sortVars[ indx ] ) ) {\n\t\t\t\t\tc.sortVars[ indx ] = {};\n\t\t\t\t}\n\t\t\t\t// Use c.$headers.parent() in case selectorHeaders doesn't point to the th/td\n\t\t\t\t$temp = c.$headers.filter( '[data-column=\"' + indx + '\"]' );\n\t\t\t\t// target sortable column cells, unless there are none, then use non-sortable cells\n\t\t\t\t// .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6\n\t\t\t\tc.$headerIndexed[ indx ] = $temp.length ?\n\t\t\t\t\t$temp.not( '.sorter-false' ).length ?\n\t\t\t\t\t\t$temp.not( '.sorter-false' ).filter( ':last' ) :\n\t\t\t\t\t\t$temp.filter( ':last' ) :\n\t\t\t\t\t$();\n\t\t\t}\n\t\t\tc.$table.find( c.selectorHeaders ).attr({\n\t\t\t\tscope: 'col',\n\t\t\t\trole : 'columnheader'\n\t\t\t});\n\t\t\t// enable/disable sorting\n\t\t\tts.updateHeader( c );\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Built headers:' + ts.benchmark( timer ) );\n\t\t\t\tconsole.log( c.$headers );\n\t\t\t}\n\t\t},\n\n\t\t// Use it to add a set of methods to table.config which will be available for all tables.\n\t\t// This should be done before table initialization\n\t\taddInstanceMethods : function( methods ) {\n\t\t\t$.extend( ts.instanceMethods, methods );\n\t\t},\n\n\t\t/*\n\t\t█████▄ ▄████▄ █████▄ ▄█████ ██████ █████▄ ▄█████\n\t\t██▄▄██ ██▄▄██ ██▄▄██ ▀█▄    ██▄▄   ██▄▄██ ▀█▄\n\t\t██▀▀▀  ██▀▀██ ██▀██     ▀█▄ ██▀▀   ██▀██     ▀█▄\n\t\t██     ██  ██ ██  ██ █████▀ ██████ ██  ██ █████▀\n\t\t*/\n\t\tsetupParsers : function( c, $tbodies ) {\n\t\t\tvar rows, list, span, max, colIndex, indx, header, configHeaders,\n\t\t\t\tnoParser, parser, extractor, time, tbody, len,\n\t\t\t\ttable = c.table,\n\t\t\t\ttbodyIndex = 0,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\tdebugOutput = {};\n\t\t\t// update table bodies in case we start with an empty table\n\t\t\tc.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );\n\t\t\ttbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies;\n\t\t\tlen = tbody.length;\n\t\t\tif ( len === 0 ) {\n\t\t\t\treturn debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '';\n\t\t\t} else if ( debug ) {\n\t\t\t\ttime = new Date();\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Detecting parsers for each column' );\n\t\t\t}\n\t\t\tlist = {\n\t\t\t\textractors: [],\n\t\t\t\tparsers: []\n\t\t\t};\n\t\t\twhile ( tbodyIndex < len ) {\n\t\t\t\trows = tbody[ tbodyIndex ].rows;\n\t\t\t\tif ( rows.length ) {\n\t\t\t\t\tcolIndex = 0;\n\t\t\t\t\tmax = c.columns;\n\t\t\t\t\tfor ( indx = 0; indx < max; indx++ ) {\n\t\t\t\t\t\theader = c.$headerIndexed[ colIndex ];\n\t\t\t\t\t\tif ( header && header.length ) {\n\t\t\t\t\t\t\t// get column indexed table cell; adding true parameter fixes #1362 but\n\t\t\t\t\t\t\t// it would break backwards compatibility...\n\t\t\t\t\t\t\tconfigHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );\n\t\t\t\t\t\t\t// get column parser/extractor\n\t\t\t\t\t\t\textractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );\n\t\t\t\t\t\t\tparser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );\n\t\t\t\t\t\t\tnoParser = ts.getData( header, configHeaders, 'parser' ) === 'false';\n\t\t\t\t\t\t\t// empty cells behaviour - keeping emptyToBottom for backwards compatibility\n\t\t\t\t\t\t\tc.empties[colIndex] = (\n\t\t\t\t\t\t\t\tts.getData( header, configHeaders, 'empty' ) ||\n\t\t\t\t\t\t\t\tc.emptyTo || ( c.emptyToBottom ? 'bottom' : 'top' ) ).toLowerCase();\n\t\t\t\t\t\t\t// text strings behaviour in numerical sorts\n\t\t\t\t\t\t\tc.strings[colIndex] = (\n\t\t\t\t\t\t\t\tts.getData( header, configHeaders, 'string' ) ||\n\t\t\t\t\t\t\t\tc.stringTo ||\n\t\t\t\t\t\t\t\t'max' ).toLowerCase();\n\t\t\t\t\t\t\tif ( noParser ) {\n\t\t\t\t\t\t\t\tparser = ts.getParserById( 'no-parser' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( !extractor ) {\n\t\t\t\t\t\t\t\t// For now, maybe detect someday\n\t\t\t\t\t\t\t\textractor = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( !parser ) {\n\t\t\t\t\t\t\t\tparser = ts.detectParserForColumn( c, rows, -1, colIndex );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\t\tdebugOutput[ '(' + colIndex + ') ' + header.text() ] = {\n\t\t\t\t\t\t\t\t\tparser : parser.id,\n\t\t\t\t\t\t\t\t\textractor : extractor ? extractor.id : 'none',\n\t\t\t\t\t\t\t\t\tstring : c.strings[ colIndex ],\n\t\t\t\t\t\t\t\t\tempty  : c.empties[ colIndex ]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlist.parsers[ colIndex ] = parser;\n\t\t\t\t\t\t\tlist.extractors[ colIndex ] = extractor;\n\t\t\t\t\t\t\tspan = header[ 0 ].colSpan - 1;\n\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\tcolIndex += span;\n\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t\twhile ( span + 1 > 0 ) {\n\t\t\t\t\t\t\t\t\t// set colspan columns to use the same parsers & extractors\n\t\t\t\t\t\t\t\t\tlist.parsers[ colIndex - span ] = parser;\n\t\t\t\t\t\t\t\t\tlist.extractors[ colIndex - span ] = extractor;\n\t\t\t\t\t\t\t\t\tspan--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttbodyIndex += ( list.parsers.length ) ? len : 1;\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tif ( !ts.isEmptyObject( debugOutput ) ) {\n\t\t\t\t\tconsole[ console.table ? 'table' : 'log' ]( debugOutput );\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn( '  No parsers detected!' );\n\t\t\t\t}\n\t\t\t\tconsole.log( 'Completed detecting parsers' + ts.benchmark( time ) );\n\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tc.parsers = list.parsers;\n\t\t\tc.extractors = list.extractors;\n\t\t},\n\n\t\taddParser : function( parser ) {\n\t\t\tvar indx,\n\t\t\t\tlen = ts.parsers.length,\n\t\t\t\tadd = true;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( ts.parsers[ indx ].id.toLowerCase() === parser.id.toLowerCase() ) {\n\t\t\t\t\tadd = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( add ) {\n\t\t\t\tts.parsers[ ts.parsers.length ] = parser;\n\t\t\t}\n\t\t},\n\n\t\tgetParserById : function( name ) {\n\t\t\t/*jshint eqeqeq:false */ // eslint-disable-next-line eqeqeq\n\t\t\tif ( name == 'false' ) { return false; }\n\t\t\tvar indx,\n\t\t\t\tlen = ts.parsers.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( ts.parsers[ indx ].id.toLowerCase() === ( name.toString() ).toLowerCase() ) {\n\t\t\t\t\treturn ts.parsers[ indx ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tdetectParserForColumn : function( c, rows, rowIndex, cellIndex ) {\n\t\t\tvar cur, $node, row,\n\t\t\t\tindx = ts.parsers.length,\n\t\t\t\tnode = false,\n\t\t\t\tnodeValue = '',\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\tkeepLooking = true;\n\t\t\twhile ( nodeValue === '' && keepLooking ) {\n\t\t\t\trowIndex++;\n\t\t\t\trow = rows[ rowIndex ];\n\t\t\t\t// stop looking after 50 empty rows\n\t\t\t\tif ( row && rowIndex < 50 ) {\n\t\t\t\t\tif ( row.className.indexOf( ts.cssIgnoreRow ) < 0 ) {\n\t\t\t\t\t\tnode = rows[ rowIndex ].cells[ cellIndex ];\n\t\t\t\t\t\tnodeValue = ts.getElementText( c, node, cellIndex );\n\t\t\t\t\t\t$node = $( node );\n\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\tconsole.log( 'Checking if value was empty on row ' + rowIndex + ', column: ' +\n\t\t\t\t\t\t\t\tcellIndex + ': \"' + nodeValue + '\"' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tkeepLooking = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( --indx >= 0 ) {\n\t\t\t\tcur = ts.parsers[ indx ];\n\t\t\t\t// ignore the default text parser because it will always be true\n\t\t\t\tif ( cur && cur.id !== 'text' && cur.is && cur.is( nodeValue, c.table, node, $node ) ) {\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// nothing found, return the generic parser (text)\n\t\t\treturn ts.getParserById( 'text' );\n\t\t},\n\n\t\tgetElementText : function( c, node, cellIndex ) {\n\t\t\tif ( !node ) { return ''; }\n\t\t\tvar tmp,\n\t\t\t\textract = c.textExtraction || '',\n\t\t\t\t// node could be a jquery object\n\t\t\t\t// http://jsperf.com/jquery-vs-instanceof-jquery/2\n\t\t\t\t$node = node.jquery ? node : $( node );\n\t\t\tif ( typeof extract === 'string' ) {\n\t\t\t\t// check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow!\n\t\t\t\t// http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/\n\t\t\t\tif ( extract === 'basic' && typeof ( tmp = $node.attr( c.textAttribute ) ) !== 'undefined' ) {\n\t\t\t\t\treturn $.trim( tmp );\n\t\t\t\t}\n\t\t\t\treturn $.trim( node.textContent || $node.text() );\n\t\t\t} else {\n\t\t\t\tif ( typeof extract === 'function' ) {\n\t\t\t\t\treturn $.trim( extract( $node[ 0 ], c.table, cellIndex ) );\n\t\t\t\t} else if ( typeof ( tmp = ts.getColumnData( c.table, extract, cellIndex ) ) === 'function' ) {\n\t\t\t\t\treturn $.trim( tmp( $node[ 0 ], c.table, cellIndex ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback\n\t\t\treturn $.trim( $node[ 0 ].textContent || $node.text() );\n\t\t},\n\n\t\t// centralized function to extract/parse cell contents\n\t\tgetParsedText : function( c, cell, colIndex, txt ) {\n\t\t\tif ( typeof txt === 'undefined' ) {\n\t\t\t\ttxt = ts.getElementText( c, cell, colIndex );\n\t\t\t}\n\t\t\t// if no parser, make sure to return the txt\n\t\t\tvar val = '' + txt,\n\t\t\t\tparser = c.parsers[ colIndex ],\n\t\t\t\textractor = c.extractors[ colIndex ];\n\t\t\tif ( parser ) {\n\t\t\t\t// do extract before parsing, if there is one\n\t\t\t\tif ( extractor && typeof extractor.format === 'function' ) {\n\t\t\t\t\ttxt = extractor.format( txt, c.table, cell, colIndex );\n\t\t\t\t}\n\t\t\t\t// allow parsing if the string is empty, previously parsing would change it to zero,\n\t\t\t\t// in case the parser needs to extract data from the table cell attributes\n\t\t\t\tval = parser.id === 'no-parser' ? '' :\n\t\t\t\t\t// make sure txt is a string (extractor may have converted it)\n\t\t\t\t\tparser.format( '' + txt, c.table, cell, colIndex );\n\t\t\t\tif ( c.ignoreCase && typeof val === 'string' ) {\n\t\t\t\t\tval = val.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\t/*\n\t\t▄████▄ ▄████▄ ▄████▄ ██  ██ ██████\n\t\t██  ▀▀ ██▄▄██ ██  ▀▀ ██▄▄██ ██▄▄\n\t\t██  â–„â–„ ██▀▀██ ██  â–„â–„ ██▀▀██ ██▀▀\n\t\t▀████▀ ██  ██ ▀████▀ ██  ██ ██████\n\t\t*/\n\t\tbuildCache : function( c, callback, $tbodies ) {\n\t\t\tvar cache, val, txt, rowIndex, colIndex, tbodyIndex, $tbody, $row,\n\t\t\t\tcols, $cells, cell, cacheTime, totalRows, rowData, prevRowData,\n\t\t\t\tcolMax, span, cacheIndex, hasParser, max, len, index,\n\t\t\t\ttable = c.table,\n\t\t\t\tparsers = c.parsers,\n\t\t\t\tdebug = ts.debug(c, 'core');\n\t\t\t// update tbody variable\n\t\t\tc.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );\n\t\t\t$tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies,\n\t\t\tc.cache = {};\n\t\t\tc.totalRows = 0;\n\t\t\t// if no parsers found, return - it's an empty table.\n\t\t\tif ( !parsers ) {\n\t\t\t\treturn debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : '';\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tcacheTime = new Date();\n\t\t\t}\n\t\t\t// processing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\tts.isProcessing( table, true );\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbody.length; tbodyIndex++ ) {\n\t\t\t\tcolMax = []; // column max value per tbody\n\t\t\t\tcache = c.cache[ tbodyIndex ] = {\n\t\t\t\t\tnormalized: [] // array of normalized row data; last entry contains 'rowData' above\n\t\t\t\t\t// colMax: #   // added at the end\n\t\t\t\t};\n\n\t\t\t\ttotalRows = ( $tbody[ tbodyIndex ] && $tbody[ tbodyIndex ].rows.length ) || 0;\n\t\t\t\tfor ( rowIndex = 0; rowIndex < totalRows; ++rowIndex ) {\n\t\t\t\t\trowData = {\n\t\t\t\t\t\t// order: original row order #\n\t\t\t\t\t\t// $row : jQuery Object[]\n\t\t\t\t\t\tchild: [], // child row text (filter widget)\n\t\t\t\t\t\traw: []    // original row text\n\t\t\t\t\t};\n\t\t\t\t\t/** Add the table data to main data array */\n\t\t\t\t\t$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );\n\t\t\t\t\tcols = [];\n\t\t\t\t\t// ignore \"remove-me\" rows\n\t\t\t\t\tif ( $row.hasClass( c.selectorRemove.slice(1) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// if this is a child row, add it to the last row's children and continue to the next row\n\t\t\t\t\t// ignore child row class, if it is the first row\n\t\t\t\t\tif ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {\n\t\t\t\t\t\tlen = cache.normalized.length - 1;\n\t\t\t\t\t\tprevRowData = cache.normalized[ len ][ c.columns ];\n\t\t\t\t\t\tprevRowData.$row = prevRowData.$row.add( $row );\n\t\t\t\t\t\t// add 'hasChild' class name to parent row\n\t\t\t\t\t\tif ( !$row.prev().hasClass( c.cssChildRow ) ) {\n\t\t\t\t\t\t\t$row.prev().addClass( ts.css.cssHasChild );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// save child row content (un-parsed!)\n\t\t\t\t\t\t$cells = $row.children( 'th, td' );\n\t\t\t\t\t\tlen = prevRowData.child.length;\n\t\t\t\t\t\tprevRowData.child[ len ] = [];\n\t\t\t\t\t\t// child row content does not account for colspans/rowspans; so indexing may be off\n\t\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\t\tmax = c.columns;\n\t\t\t\t\t\tfor ( colIndex = 0; colIndex < max; colIndex++ ) {\n\t\t\t\t\t\t\tcell = $cells[ colIndex ];\n\t\t\t\t\t\t\tif ( cell ) {\n\t\t\t\t\t\t\t\tprevRowData.child[ len ][ colIndex ] = ts.getParsedText( c, cell, colIndex );\n\t\t\t\t\t\t\t\tspan = $cells[ colIndex ].colSpan - 1;\n\t\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// go to the next for loop\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\trowData.$row = $row;\n\t\t\t\t\trowData.order = rowIndex; // add original row position to rowCache\n\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\tmax = c.columns;\n\t\t\t\t\tfor ( colIndex = 0; colIndex < max; ++colIndex ) {\n\t\t\t\t\t\tcell = $row[ 0 ].cells[ colIndex ];\n\t\t\t\t\t\tif ( cell && cacheIndex < c.columns ) {\n\t\t\t\t\t\t\thasParser = typeof parsers[ cacheIndex ] !== 'undefined';\n\t\t\t\t\t\t\tif ( !hasParser && debug ) {\n\t\t\t\t\t\t\t\tconsole.warn( 'No parser found for row: ' + rowIndex + ', column: ' + colIndex +\n\t\t\t\t\t\t\t\t\t'; cell containing: \"' + $(cell).text() + '\"; does it have a header?' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tval = ts.getElementText( c, cell, cacheIndex );\n\t\t\t\t\t\t\trowData.raw[ cacheIndex ] = val; // save original row text\n\t\t\t\t\t\t\t// save raw column text even if there is no parser set\n\t\t\t\t\t\t\ttxt = ts.getParsedText( c, cell, cacheIndex, val );\n\t\t\t\t\t\t\tcols[ cacheIndex ] = txt;\n\t\t\t\t\t\t\tif ( hasParser && ( parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t\t\t\t// determine column max value (ignore sign)\n\t\t\t\t\t\t\t\tcolMax[ cacheIndex ] = Math.max( Math.abs( txt ) || 0, colMax[ cacheIndex ] || 0 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// allow colSpan in tbody\n\t\t\t\t\t\t\tspan = cell.colSpan - 1;\n\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t\twhile ( index <= span ) {\n\t\t\t\t\t\t\t\t\t// duplicate text (or not) to spanned columns\n\t\t\t\t\t\t\t\t\t// instead of setting duplicate span to empty string, use textExtraction to try to get a value\n\t\t\t\t\t\t\t\t\t// see http://stackoverflow.com/q/36449711/145346\n\t\t\t\t\t\t\t\t\ttxt = c.duplicateSpan || index === 0 ?\n\t\t\t\t\t\t\t\t\t\tval :\n\t\t\t\t\t\t\t\t\t\ttypeof c.textExtraction !== 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tts.getElementText( c, cell, cacheIndex + index ) || '' :\n\t\t\t\t\t\t\t\t\t\t\t'';\n\t\t\t\t\t\t\t\t\trowData.raw[ cacheIndex + index ] = txt;\n\t\t\t\t\t\t\t\t\tcols[ cacheIndex + index ] = txt;\n\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// ensure rowData is always in the same location (after the last column)\n\t\t\t\t\tcols[ c.columns ] = rowData;\n\t\t\t\t\tcache.normalized[ cache.normalized.length ] = cols;\n\t\t\t\t}\n\t\t\t\tcache.colMax = colMax;\n\t\t\t\t// total up rows, not including child rows\n\t\t\t\tc.totalRows += cache.normalized.length;\n\n\t\t\t}\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\tts.isProcessing( table ); // remove processing icon\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tlen = Math.min( 5, c.cache[ 0 ].normalized.length );\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +\n\t\t\t\t\t' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +\n\t\t\t\t\tts.benchmark( cacheTime ) );\n\t\t\t\tval = {};\n\t\t\t\tfor ( colIndex = 0; colIndex < c.columns; colIndex++ ) {\n\t\t\t\t\tfor ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {\n\t\t\t\t\t\tif ( !val[ 'row: ' + cacheIndex ] ) {\n\t\t\t\t\t\t\tval[ 'row: ' + cacheIndex ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tval[ 'row: ' + cacheIndex ][ c.$headerIndexed[ colIndex ].text() ] =\n\t\t\t\t\t\t\tc.cache[ 0 ].normalized[ cacheIndex ][ colIndex ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole[ console.table ? 'table' : 'log' ]( val );\n\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\tgetColumnText : function( table, column, callback, rowFilter ) {\n\t\t\ttable = $( table )[0];\n\t\t\tvar tbodyIndex, rowIndex, cache, row, tbodyLen, rowLen, raw, parsed, $cell, result,\n\t\t\t\thasCallback = typeof callback === 'function',\n\t\t\t\tallColumns = column === 'all',\n\t\t\t\tdata = { raw : [], parsed: [], $cell: [] },\n\t\t\t\tc = table.config;\n\t\t\tif ( ts.isEmptyObject( c ) ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.warn( 'No cache found - aborting getColumnText function!' );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttbodyLen = c.$tbodies.length;\n\t\t\t\tfor ( tbodyIndex = 0; tbodyIndex < tbodyLen; tbodyIndex++ ) {\n\t\t\t\t\tcache = c.cache[ tbodyIndex ].normalized;\n\t\t\t\t\trowLen = cache.length;\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < rowLen; rowIndex++ ) {\n\t\t\t\t\t\trow = cache[ rowIndex ];\n\t\t\t\t\t\tif ( rowFilter && !row[ c.columns ].$row.is( rowFilter ) ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = true;\n\t\t\t\t\t\tparsed = ( allColumns ) ? row.slice( 0, c.columns ) : row[ column ];\n\t\t\t\t\t\trow = row[ c.columns ];\n\t\t\t\t\t\traw = ( allColumns ) ? row.raw : row.raw[ column ];\n\t\t\t\t\t\t$cell = ( allColumns ) ? row.$row.children() : row.$row.children().eq( column );\n\t\t\t\t\t\tif ( hasCallback ) {\n\t\t\t\t\t\t\tresult = callback({\n\t\t\t\t\t\t\t\ttbodyIndex : tbodyIndex,\n\t\t\t\t\t\t\t\trowIndex : rowIndex,\n\t\t\t\t\t\t\t\tparsed : parsed,\n\t\t\t\t\t\t\t\traw : raw,\n\t\t\t\t\t\t\t\t$row : row.$row,\n\t\t\t\t\t\t\t\t$cell : $cell\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== false ) {\n\t\t\t\t\t\t\tdata.parsed[ data.parsed.length ] = parsed;\n\t\t\t\t\t\t\tdata.raw[ data.raw.length ] = raw;\n\t\t\t\t\t\t\tdata.$cell[ data.$cell.length ] = $cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// return everything\n\t\t\t\treturn data;\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t██  ██ █████▄ █████▄ ▄████▄ ██████ ██████\n\t\t██  ██ ██▄▄██ ██  ██ ██▄▄██   ██   ██▄▄\n\t\t██  ██ ██▀▀▀  ██  ██ ██▀▀██   ██   ██▀▀\n\t\t▀████▀ ██     █████▀ ██  ██   ██   ██████\n\t\t*/\n\t\tsetHeadersCss : function( c ) {\n\t\t\tvar indx, column,\n\t\t\t\tlist = c.sortList,\n\t\t\t\tlen = list.length,\n\t\t\t\tnone = ts.css.sortNone + ' ' + c.cssNone,\n\t\t\t\tcss = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ],\n\t\t\t\tcssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ],\n\t\t\t\taria = [ 'ascending', 'descending' ],\n\t\t\t\tupdateColumnSort = function($el, index) {\n\t\t\t\t\t$el\n\t\t\t\t\t\t.removeClass( none )\n\t\t\t\t\t\t.addClass( css[ index ] )\n\t\t\t\t\t\t.attr( 'aria-sort', aria[ index ] )\n\t\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t\t.removeClass( cssIcon[ 2 ] )\n\t\t\t\t\t\t.addClass( cssIcon[ index ] );\n\t\t\t\t},\n\t\t\t\t// find the footer\n\t\t\t\t$extras = c.$table\n\t\t\t\t\t.find( 'tfoot tr' )\n\t\t\t\t\t.children( 'td, th' )\n\t\t\t\t\t.add( $( c.namespace + '_extra_headers' ) )\n\t\t\t\t\t.removeClass( css.join( ' ' ) ),\n\t\t\t\t// remove all header information\n\t\t\t\t$sorted = c.$headers\n\t\t\t\t\t.add( $( 'thead ' + c.namespace + '_extra_headers' ) )\n\t\t\t\t\t.removeClass( css.join( ' ' ) )\n\t\t\t\t\t.addClass( none )\n\t\t\t\t\t.attr( 'aria-sort', 'none' )\n\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t.removeClass( cssIcon.join( ' ' ) )\n\t\t\t\t\t.end();\n\t\t\t// add css none to all sortable headers\n\t\t\t$sorted\n\t\t\t\t.not( '.sorter-false' )\n\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t.addClass( cssIcon[ 2 ] );\n\t\t\t// add disabled css icon class\n\t\t\tif ( c.cssIconDisabled ) {\n\t\t\t\t$sorted\n\t\t\t\t\t.filter( '.sorter-false' )\n\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t.addClass( c.cssIconDisabled );\n\t\t\t}\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t// direction = 2 means reset!\n\t\t\t\tif ( list[ indx ][ 1 ] !== 2 ) {\n\t\t\t\t\t// multicolumn sorting updating - see #1005\n\t\t\t\t\t// .not(function() {}) needs jQuery 1.4\n\t\t\t\t\t// filter(function(i, el) {}) <- el is undefined in jQuery v1.2.6\n\t\t\t\t\t$sorted = c.$headers.filter( function( i ) {\n\t\t\t\t\t\t// only include headers that are in the sortList (this includes colspans)\n\t\t\t\t\t\tvar include = true,\n\t\t\t\t\t\t\t$el = c.$headers.eq( i ),\n\t\t\t\t\t\t\tcol = parseInt( $el.attr( 'data-column' ), 10 ),\n\t\t\t\t\t\t\tend = col + ts.getClosest( $el, 'th, td' )[0].colSpan;\n\t\t\t\t\t\tfor ( ; col < end; col++ ) {\n\t\t\t\t\t\t\tinclude = include ? include || ts.isValueInArray( col, c.sortList ) > -1 : false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn include;\n\t\t\t\t\t});\n\n\t\t\t\t\t// choose the :last in case there are nested columns\n\t\t\t\t\t$sorted = $sorted\n\t\t\t\t\t\t.not( '.sorter-false' )\n\t\t\t\t\t\t.filter( '[data-column=\"' + list[ indx ][ 0 ] + '\"]' + ( len === 1 ? ':last' : '' ) );\n\t\t\t\t\tif ( $sorted.length ) {\n\t\t\t\t\t\tfor ( column = 0; column < $sorted.length; column++ ) {\n\t\t\t\t\t\t\tif ( !$sorted[ column ].sortDisabled ) {\n\t\t\t\t\t\t\t\tupdateColumnSort( $sorted.eq( column ), list[ indx ][ 1 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// add sorted class to footer & extra headers, if they exist\n\t\t\t\t\tif ( $extras.length ) {\n\t\t\t\t\t\tupdateColumnSort( $extras.filter( '[data-column=\"' + list[ indx ][ 0 ] + '\"]' ), list[ indx ][ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// add verbose aria labels\n\t\t\tlen = c.$headers.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tts.setColumnAriaLabel( c, c.$headers.eq( indx ) );\n\t\t\t}\n\t\t},\n\n\t\tgetClosest : function( $el, selector ) {\n\t\t\t// jQuery v1.2.6 doesn't have closest()\n\t\t\tif ( $.fn.closest ) {\n\t\t\t\treturn $el.closest( selector );\n\t\t\t}\n\t\t\treturn $el.is( selector ) ?\n\t\t\t\t$el :\n\t\t\t\t$el.parents( selector ).filter( ':first' );\n\t\t},\n\n\t\t// nextSort (optional), lets you disable next sort text\n\t\tsetColumnAriaLabel : function( c, $header, nextSort ) {\n\t\t\tif ( $header.length ) {\n\t\t\t\tvar column = parseInt( $header.attr( 'data-column' ), 10 ),\n\t\t\t\t\tvars = c.sortVars[ column ],\n\t\t\t\t\ttmp = $header.hasClass( ts.css.sortAsc ) ?\n\t\t\t\t\t\t'sortAsc' :\n\t\t\t\t\t\t$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',\n\t\t\t\t\ttxt = $.trim( $header.text() ) + ': ' + ts.language[ tmp ];\n\t\t\t\tif ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {\n\t\t\t\t\ttxt += ts.language.sortDisabled;\n\t\t\t\t} else {\n\t\t\t\t\ttmp = ( vars.count + 1 ) % vars.order.length;\n\t\t\t\t\tnextSort = vars.order[ tmp ];\n\t\t\t\t\t// if nextSort\n\t\t\t\t\ttxt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];\n\t\t\t\t}\n\t\t\t\t$header.attr( 'aria-label', txt );\n\t\t\t\tif (vars.sortedBy) {\n\t\t\t\t\t$header.attr( 'data-sortedBy', vars.sortedBy );\n\t\t\t\t} else {\n\t\t\t\t\t$header.removeAttr('data-sortedBy');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateHeader : function( c ) {\n\t\t\tvar index, isDisabled, $header, col,\n\t\t\t\ttable = c.table,\n\t\t\t\tlen = c.$headers.length;\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t$header = c.$headers.eq( index );\n\t\t\t\tcol = ts.getColumnData( table, c.headers, index, true );\n\t\t\t\t// add 'sorter-false' class if 'parser-false' is set\n\t\t\t\tisDisabled = ts.getData( $header, col, 'sorter' ) === 'false' || ts.getData( $header, col, 'parser' ) === 'false';\n\t\t\t\tts.setColumnSort( c, $header, isDisabled );\n\t\t\t}\n\t\t},\n\n\t\tsetColumnSort : function( c, $header, isDisabled ) {\n\t\t\tvar id = c.table.id;\n\t\t\t$header[ 0 ].sortDisabled = isDisabled;\n\t\t\t$header[ isDisabled ? 'addClass' : 'removeClass' ]( 'sorter-false' )\n\t\t\t\t.attr( 'aria-disabled', '' + isDisabled );\n\t\t\t// disable tab index on disabled cells\n\t\t\tif ( c.tabIndex ) {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t$header.removeAttr( 'tabindex' );\n\t\t\t\t} else {\n\t\t\t\t\t$header.attr( 'tabindex', '0' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// aria-controls - requires table ID\n\t\t\tif ( id ) {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t$header.removeAttr( 'aria-controls' );\n\t\t\t\t} else {\n\t\t\t\t\t$header.attr( 'aria-controls', id );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateHeaderSortCount : function( c, list ) {\n\t\t\tvar col, dir, group, indx, primary, temp, val, order,\n\t\t\t\tsortList = list || c.sortList,\n\t\t\t\tlen = sortList.length;\n\t\t\tc.sortList = [];\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tval = sortList[ indx ];\n\t\t\t\t// ensure all sortList values are numeric - fixes #127\n\t\t\t\tcol = parseInt( val[ 0 ], 10 );\n\t\t\t\t// prevents error if sorton array is wrong\n\t\t\t\tif ( col < c.columns ) {\n\n\t\t\t\t\t// set order if not already defined - due to colspan header without associated header cell\n\t\t\t\t\t// adding this check prevents a javascript error\n\t\t\t\t\tif ( !c.sortVars[ col ].order ) {\n\t\t\t\t\t\tif ( ts.getOrder( c.sortInitialOrder ) ) {\n\t\t\t\t\t\t\torder = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\torder = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tc.sortVars[ col ].order = order;\n\t\t\t\t\t\tc.sortVars[ col ].count = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\torder = c.sortVars[ col ].order;\n\t\t\t\t\tdir = ( '' + val[ 1 ] ).match( /^(1|d|s|o|n)/ );\n\t\t\t\t\tdir = dir ? dir[ 0 ] : '';\n\t\t\t\t\t// 0/(a)sc (default), 1/(d)esc, (s)ame, (o)pposite, (n)ext\n\t\t\t\t\tswitch ( dir ) {\n\t\t\t\t\t\tcase '1' : case 'd' : // descending\n\t\t\t\t\t\t\tdir = 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's' : // same direction (as primary column)\n\t\t\t\t\t\t\t// if primary sort is set to 's', make it ascending\n\t\t\t\t\t\t\tdir = primary || 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o' :\n\t\t\t\t\t\t\ttemp = order[ ( primary || 0 ) % order.length ];\n\t\t\t\t\t\t\t// opposite of primary column; but resets if primary resets\n\t\t\t\t\t\t\tdir = temp === 0 ? 1 : temp === 1 ? 0 : 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'n' :\n\t\t\t\t\t\t\tdir = order[ ( ++c.sortVars[ col ].count ) % order.length ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault : // ascending\n\t\t\t\t\t\t\tdir = 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tprimary = indx === 0 ? dir : primary;\n\t\t\t\t\tgroup = [ col, parseInt( dir, 10 ) || 0 ];\n\t\t\t\t\tc.sortList[ c.sortList.length ] = group;\n\t\t\t\t\tdir = $.inArray( group[ 1 ], order ); // fixes issue #167\n\t\t\t\t\tc.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateAll : function( c, resort, callback ) {\n\t\t\tvar table = c.table;\n\t\t\ttable.isUpdating = true;\n\t\t\tts.refreshWidgets( table, true, true );\n\t\t\tts.buildHeaders( c );\n\t\t\tts.bindEvents( table, c.$headers, true );\n\t\t\tts.bindMethods( c );\n\t\t\tts.commonUpdate( c, resort, callback );\n\t\t},\n\n\t\tupdate : function( c, resort, callback ) {\n\t\t\tvar table = c.table;\n\t\t\ttable.isUpdating = true;\n\t\t\t// update sorting (if enabled/disabled)\n\t\t\tts.updateHeader( c );\n\t\t\tts.commonUpdate( c, resort, callback );\n\t\t},\n\n\t\t// simple header update - see #989\n\t\tupdateHeaders : function( c, callback ) {\n\t\t\tc.table.isUpdating = true;\n\t\t\tts.buildHeaders( c );\n\t\t\tts.bindEvents( c.table, c.$headers, true );\n\t\t\tts.resortComplete( c, callback );\n\t\t},\n\n\t\tupdateCell : function( c, cell, resort, callback ) {\n\t\t\t// updateCell for child rows is a mess - we'll ignore them for now\n\t\t\t// eventually I'll break out the \"update\" row cache code to make everything consistent\n\t\t\tif ( $( cell ).closest( 'tr' ).hasClass( c.cssChildRow ) ) {\n\t\t\t\tconsole.warn('Tablesorter Warning! \"updateCell\" for child row content has been disabled, use \"update\" instead');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table, do an update instead - fixes #1099\n\t\t\t\tts.updateHeader( c );\n\t\t\t\tts.commonUpdate( c, resort, callback );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tc.table.isUpdating = true;\n\t\t\tc.$table.find( c.selectorRemove ).remove();\n\t\t\t// get position from the dom\n\t\t\tvar tmp, indx, row, icell, cache, len,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\t$cell = $( cell ),\n\t\t\t\t// update cache - format: function( s, table, cell, cellIndex )\n\t\t\t\t// no closest in jQuery v1.2.6\n\t\t\t\ttbodyIndex = $tbodies.index( ts.getClosest( $cell, 'tbody' ) ),\n\t\t\t\ttbcache = c.cache[ tbodyIndex ],\n\t\t\t\t$row = ts.getClosest( $cell, 'tr' );\n\t\t\tcell = $cell[ 0 ]; // in case cell is a jQuery object\n\t\t\t// tbody may not exist if update is initialized while tbody is removed for processing\n\t\t\tif ( $tbodies.length && tbodyIndex >= 0 ) {\n\t\t\t\trow = $tbodies.eq( tbodyIndex ).find( 'tr' ).not( '.' + c.cssChildRow ).index( $row );\n\t\t\t\tcache = tbcache.normalized[ row ];\n\t\t\t\tlen = $row[ 0 ].cells.length;\n\t\t\t\tif ( len !== c.columns ) {\n\t\t\t\t\t// colspan in here somewhere!\n\t\t\t\t\ticell = 0;\n\t\t\t\t\ttmp = false;\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\t\tif ( !tmp && $row[ 0 ].cells[ indx ] !== cell ) {\n\t\t\t\t\t\t\ticell += $row[ 0 ].cells[ indx ].colSpan;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttmp = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ticell = $cell.index();\n\t\t\t\t}\n\t\t\t\ttmp = ts.getElementText( c, cell, icell ); // raw\n\t\t\t\tcache[ c.columns ].raw[ icell ] = tmp;\n\t\t\t\ttmp = ts.getParsedText( c, cell, icell, tmp );\n\t\t\t\tcache[ icell ] = tmp; // parsed\n\t\t\t\tif ( ( c.parsers[ icell ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t// update column max value (ignore sign)\n\t\t\t\t\ttbcache.colMax[ icell ] = Math.max( Math.abs( tmp ) || 0, tbcache.colMax[ icell ] || 0 );\n\t\t\t\t}\n\t\t\t\ttmp = resort !== 'undefined' ? resort : c.resort;\n\t\t\t\tif ( tmp !== false ) {\n\t\t\t\t\t// widgets will be reapplied\n\t\t\t\t\tts.checkResort( c, tmp, callback );\n\t\t\t\t} else {\n\t\t\t\t\t// don't reapply widgets is resort is false, just in case it causes\n\t\t\t\t\t// problems with element focus\n\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.error( 'updateCell aborted, tbody missing or not within the indicated table' );\n\t\t\t\t}\n\t\t\t\tc.table.isUpdating = false;\n\t\t\t}\n\t\t},\n\n\t\taddRows : function( c, $row, resort, callback ) {\n\t\t\tvar txt, val, tbodyIndex, rowIndex, rows, cellIndex, len, order,\n\t\t\t\tcacheIndex, rowData, cells, cell, span,\n\t\t\t\t// allow passing a row string if only one non-info tbody exists in the table\n\t\t\t\tvalid = typeof $row === 'string' && c.$tbodies.length === 1 && /<tr/.test( $row || '' ),\n\t\t\t\ttable = c.table;\n\t\t\tif ( valid ) {\n\t\t\t\t$row = $( $row );\n\t\t\t\tc.$tbodies.append( $row );\n\t\t\t} else if (\n\t\t\t\t!$row ||\n\t\t\t\t// row is a jQuery object?\n\t\t\t\t!( $row instanceof $ ) ||\n\t\t\t\t// row contained in the table?\n\t\t\t\t( ts.getClosest( $row, 'table' )[ 0 ] !== c.table )\n\t\t\t) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.error( 'addRows method requires (1) a jQuery selector reference to rows that have already ' +\n\t\t\t\t\t\t'been added to the table, or (2) row HTML string to be added to a table with only one tbody' );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttable.isUpdating = true;\n\t\t\tif ( ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table, do an update instead - fixes #450\n\t\t\t\tts.updateHeader( c );\n\t\t\t\tts.commonUpdate( c, resort, callback );\n\t\t\t} else {\n\t\t\t\trows = $row.filter( 'tr' ).attr( 'role', 'row' ).length;\n\t\t\t\ttbodyIndex = c.$tbodies.index( $row.parents( 'tbody' ).filter( ':first' ) );\n\t\t\t\t// fixes adding rows to an empty table - see issue #179\n\t\t\t\tif ( !( c.parsers && c.parsers.length ) ) {\n\t\t\t\t\tts.setupParsers( c );\n\t\t\t\t}\n\t\t\t\t// add each row\n\t\t\t\tfor ( rowIndex = 0; rowIndex < rows; rowIndex++ ) {\n\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\tlen = $row[ rowIndex ].cells.length;\n\t\t\t\t\torder = c.cache[ tbodyIndex ].normalized.length;\n\t\t\t\t\tcells = [];\n\t\t\t\t\trowData = {\n\t\t\t\t\t\tchild : [],\n\t\t\t\t\t\traw : [],\n\t\t\t\t\t\t$row : $row.eq( rowIndex ),\n\t\t\t\t\t\torder : order\n\t\t\t\t\t};\n\t\t\t\t\t// add each cell\n\t\t\t\t\tfor ( cellIndex = 0; cellIndex < len; cellIndex++ ) {\n\t\t\t\t\t\tcell = $row[ rowIndex ].cells[ cellIndex ];\n\t\t\t\t\t\ttxt = ts.getElementText( c, cell, cacheIndex );\n\t\t\t\t\t\trowData.raw[ cacheIndex ] = txt;\n\t\t\t\t\t\tval = ts.getParsedText( c, cell, cacheIndex, txt );\n\t\t\t\t\t\tcells[ cacheIndex ] = val;\n\t\t\t\t\t\tif ( ( c.parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t\t\t// update column max value (ignore sign)\n\t\t\t\t\t\t\tc.cache[ tbodyIndex ].colMax[ cacheIndex ] =\n\t\t\t\t\t\t\t\tMath.max( Math.abs( val ) || 0, c.cache[ tbodyIndex ].colMax[ cacheIndex ] || 0 );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tspan = cell.colSpan - 1;\n\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// add the row data to the end\n\t\t\t\t\tcells[ c.columns ] = rowData;\n\t\t\t\t\t// update cache\n\t\t\t\t\tc.cache[ tbodyIndex ].normalized[ order ] = cells;\n\t\t\t\t}\n\t\t\t\t// resort using current settings\n\t\t\t\tts.checkResort( c, resort, callback );\n\t\t\t}\n\t\t},\n\n\t\tupdateCache : function( c, callback, $tbodies ) {\n\t\t\t// rebuild parsers\n\t\t\tif ( !( c.parsers && c.parsers.length ) ) {\n\t\t\t\tts.setupParsers( c, $tbodies );\n\t\t\t}\n\t\t\t// rebuild the cache map\n\t\t\tts.buildCache( c, callback, $tbodies );\n\t\t},\n\n\t\t// init flag (true) used by pager plugin to prevent widget application\n\t\t// renamed from appendToTable\n\t\tappendCache : function( c, init ) {\n\t\t\tvar parsed, totalRows, $tbody, $curTbody, rowIndex, tbodyIndex, appendTime,\n\t\t\t\ttable = c.table,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\trows = [],\n\t\t\t\tcache = c.cache;\n\t\t\t// empty table - fixes #206/#346\n\t\t\tif ( ts.isEmptyObject( cache ) ) {\n\t\t\t\t// run pager appender in case the table was just emptied\n\t\t\t\treturn c.appender ? c.appender( table, rows ) :\n\t\t\t\t\ttable.isUpdating ? c.$table.triggerHandler( 'updateComplete', table ) : ''; // Fixes #532\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tappendTime = new Date();\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = $tbodies.eq( tbodyIndex );\n\t\t\t\tif ( $tbody.length ) {\n\t\t\t\t\t// detach tbody for manipulation\n\t\t\t\t\t$curTbody = ts.processTbody( table, $tbody, true );\n\t\t\t\t\tparsed = cache[ tbodyIndex ].normalized;\n\t\t\t\t\ttotalRows = parsed.length;\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < totalRows; rowIndex++ ) {\n\t\t\t\t\t\trows[rows.length] = parsed[ rowIndex ][ c.columns ].$row;\n\t\t\t\t\t\t// removeRows used by the pager plugin; don't render if using ajax - fixes #411\n\t\t\t\t\t\tif ( !c.appender || ( c.pager && !c.pager.removeRows && !c.pager.ajax ) ) {\n\t\t\t\t\t\t\t$curTbody.append( parsed[ rowIndex ][ c.columns ].$row );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// restore tbody\n\t\t\t\t\tts.processTbody( table, $curTbody, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( c.appender ) {\n\t\t\t\tc.appender( table, rows );\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Rebuilt table' + ts.benchmark( appendTime ) );\n\t\t\t}\n\t\t\t// apply table widgets; but not before ajax completes\n\t\t\tif ( !init && !c.appender ) {\n\t\t\t\tts.applyWidget( table );\n\t\t\t}\n\t\t\tif ( table.isUpdating ) {\n\t\t\t\tc.$table.triggerHandler( 'updateComplete', table );\n\t\t\t}\n\t\t},\n\n\t\tcommonUpdate : function( c, resort, callback ) {\n\t\t\t// remove rows/elements before update\n\t\t\tc.$table.find( c.selectorRemove ).remove();\n\t\t\t// rebuild parsers\n\t\t\tts.setupParsers( c );\n\t\t\t// rebuild the cache map\n\t\t\tts.buildCache( c );\n\t\t\tts.checkResort( c, resort, callback );\n\t\t},\n\n\t\t/*\n\t\t▄█████ ▄████▄ █████▄ ██████ ██ █████▄ ▄████▄\n\t\t▀█▄    ██  ██ ██▄▄██   ██   ██ ██  ██ ██ â–„â–„â–„\n\t\t   ▀█▄ ██  ██ ██▀██    ██   ██ ██  ██ ██ ▀██\n\t\t█████▀ ▀████▀ ██  ██   ██   ██ ██  ██ ▀████▀\n\t\t*/\n\t\tinitSort : function( c, cell, event ) {\n\t\t\tif ( c.table.isUpdating ) {\n\t\t\t\t// let any updates complete before initializing a sort\n\t\t\t\treturn setTimeout( function() {\n\t\t\t\t\tts.initSort( c, cell, event );\n\t\t\t\t}, 50 );\n\t\t\t}\n\n\t\t\tvar arry, indx, headerIndx, dir, temp, tmp, $header,\n\t\t\t\tnotMultiSort = !event[ c.sortMultiSortKey ],\n\t\t\t\ttable = c.table,\n\t\t\t\tlen = c.$headers.length,\n\t\t\t\tth = ts.getClosest( $( cell ), 'th, td' ),\n\t\t\t\tcol = parseInt( th.attr( 'data-column' ), 10 ),\n\t\t\t\tsortedBy = event.type === 'mouseup' ? 'user' : event.type,\n\t\t\t\torder = c.sortVars[ col ].order;\n\t\t\tth = th[0];\n\t\t\t// Only call sortStart if sorting is enabled\n\t\t\tc.$table.triggerHandler( 'sortStart', table );\n\t\t\t// get current column sort order\n\t\t\ttmp = ( c.sortVars[ col ].count + 1 ) % order.length;\n\t\t\tc.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;\n\t\t\t// reset all sorts on non-current column - issue #30\n\t\t\tif ( c.sortRestart ) {\n\t\t\t\tfor ( headerIndx = 0; headerIndx < len; headerIndx++ ) {\n\t\t\t\t\t$header = c.$headers.eq( headerIndx );\n\t\t\t\t\ttmp = parseInt( $header.attr( 'data-column' ), 10 );\n\t\t\t\t\t// only reset counts on columns that weren't just clicked on and if not included in a multisort\n\t\t\t\t\tif ( col !== tmp && ( notMultiSort || $header.hasClass( ts.css.sortNone ) ) ) {\n\t\t\t\t\t\tc.sortVars[ tmp ].count = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// user only wants to sort on one column\n\t\t\tif ( notMultiSort ) {\n\t\t\t\t$.each( c.sortVars, function( i ) {\n\t\t\t\t\tc.sortVars[ i ].sortedBy = '';\n\t\t\t\t});\n\t\t\t\t// flush the sort list\n\t\t\t\tc.sortList = [];\n\t\t\t\tc.last.sortList = [];\n\t\t\t\tif ( c.sortForce !== null ) {\n\t\t\t\t\tarry = c.sortForce;\n\t\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\n\t\t\t\t\t\tif ( arry[ indx ][ 0 ] !== col ) {\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = arry[ indx ];\n\t\t\t\t\t\t\tc.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortForce';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// add column to sort list\n\t\t\t\tdir = order[ c.sortVars[ col ].count ];\n\t\t\t\tif ( dir < 2 ) {\n\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col, dir ];\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\t// add other columns if header spans across multiple\n\t\t\t\t\tif ( th.colSpan > 1 ) {\n\t\t\t\t\t\tfor ( indx = 1; indx < th.colSpan; indx++ ) {\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col + indx, dir ];\n\t\t\t\t\t\t\t// update count on columns in colSpan\n\t\t\t\t\t\t\tc.sortVars[ col + indx ].count = $.inArray( dir, order );\n\t\t\t\t\t\t\tc.sortVars[ col + indx ].sortedBy = sortedBy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// multi column sorting\n\t\t\t} else {\n\t\t\t\t// get rid of the sortAppend before adding more - fixes issue #115 & #523\n\t\t\t\tc.sortList = $.extend( [], c.last.sortList );\n\n\t\t\t\t// the user has clicked on an already sorted column\n\t\t\t\tif ( ts.isValueInArray( col, c.sortList ) >= 0 ) {\n\t\t\t\t\t// reverse the sorting direction\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\tfor ( indx = 0; indx < c.sortList.length; indx++ ) {\n\t\t\t\t\t\ttmp = c.sortList[ indx ];\n\t\t\t\t\t\tif ( tmp[ 0 ] === col ) {\n\t\t\t\t\t\t\t// order.count seems to be incorrect when compared to cell.count\n\t\t\t\t\t\t\ttmp[ 1 ] = order[ c.sortVars[ col ].count ];\n\t\t\t\t\t\t\tif ( tmp[1] === 2 ) {\n\t\t\t\t\t\t\t\tc.sortList.splice( indx, 1 );\n\t\t\t\t\t\t\t\tc.sortVars[ col ].count = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// add column to sort list array\n\t\t\t\t\tdir = order[ c.sortVars[ col ].count ];\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\tif ( dir < 2 ) {\n\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col, dir ];\n\t\t\t\t\t\t// add other columns if header spans across multiple\n\t\t\t\t\t\tif ( th.colSpan > 1 ) {\n\t\t\t\t\t\t\tfor ( indx = 1; indx < th.colSpan; indx++ ) {\n\t\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col + indx, dir ];\n\t\t\t\t\t\t\t\t// update count on columns in colSpan\n\t\t\t\t\t\t\t\tc.sortVars[ col + indx ].count = $.inArray( dir, order );\n\t\t\t\t\t\t\t\tc.sortVars[ col + indx ].sortedBy = sortedBy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// save sort before applying sortAppend\n\t\t\tc.last.sortList = $.extend( [], c.sortList );\n\t\t\tif ( c.sortList.length && c.sortAppend ) {\n\t\t\t\tarry = $.isArray( c.sortAppend ) ? c.sortAppend : c.sortAppend[ c.sortList[ 0 ][ 0 ] ];\n\t\t\t\tif ( !ts.isEmptyObject( arry ) ) {\n\t\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\n\t\t\t\t\t\tif ( arry[ indx ][ 0 ] !== col && ts.isValueInArray( arry[ indx ][ 0 ], c.sortList ) < 0 ) {\n\t\t\t\t\t\t\tdir = arry[ indx ][ 1 ];\n\t\t\t\t\t\t\ttemp = ( '' + dir ).match( /^(a|d|s|o|n)/ );\n\t\t\t\t\t\t\tif ( temp ) {\n\t\t\t\t\t\t\t\ttmp = c.sortList[ 0 ][ 1 ];\n\t\t\t\t\t\t\t\tswitch ( temp[ 0 ] ) {\n\t\t\t\t\t\t\t\t\tcase 'd' :\n\t\t\t\t\t\t\t\t\t\tdir = 1;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 's' :\n\t\t\t\t\t\t\t\t\t\tdir = tmp;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'o' :\n\t\t\t\t\t\t\t\t\t\tdir = tmp === 0 ? 1 : 0;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'n' :\n\t\t\t\t\t\t\t\t\t\tdir = ( tmp + 1 ) % order.length;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tdir = 0;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ arry[ indx ][ 0 ], dir ];\n\t\t\t\t\t\t\tc.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortAppend';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// sortBegin event triggered immediately before the sort\n\t\t\tc.$table.triggerHandler( 'sortBegin', table );\n\t\t\t// setTimeout needed so the processing icon shows up\n\t\t\tsetTimeout( function() {\n\t\t\t\t// set css for headers\n\t\t\t\tts.setHeadersCss( c );\n\t\t\t\tts.multisort( c );\n\t\t\t\tts.appendCache( c );\n\t\t\t\tc.$table.triggerHandler( 'sortBeforeEnd', table );\n\t\t\t\tc.$table.triggerHandler( 'sortEnd', table );\n\t\t\t}, 1 );\n\t\t},\n\n\t\t// sort multiple columns\n\t\tmultisort : function( c ) { /*jshint loopfunc:true */\n\t\t\tvar tbodyIndex, sortTime, colMax, rows, tmp,\n\t\t\t\ttable = c.table,\n\t\t\t\tsorter = [],\n\t\t\t\tdir = 0,\n\t\t\t\ttextSorter = c.textSorter || '',\n\t\t\t\tsortList = c.sortList,\n\t\t\t\tsortLen = sortList.length,\n\t\t\t\tlen = c.$tbodies.length;\n\t\t\tif ( c.serverSideSorting || ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table - fixes #206/#346\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) { sortTime = new Date(); }\n\t\t\t// cache textSorter to optimize speed\n\t\t\tif ( typeof textSorter === 'object' ) {\n\t\t\t\tcolMax = c.columns;\n\t\t\t\twhile ( colMax-- ) {\n\t\t\t\t\ttmp = ts.getColumnData( table, textSorter, colMax );\n\t\t\t\t\tif ( typeof tmp === 'function' ) {\n\t\t\t\t\t\tsorter[ colMax ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < len; tbodyIndex++ ) {\n\t\t\t\tcolMax = c.cache[ tbodyIndex ].colMax;\n\t\t\t\trows = c.cache[ tbodyIndex ].normalized;\n\n\t\t\t\trows.sort( function( a, b ) {\n\t\t\t\t\tvar sortIndex, num, col, order, sort, x, y;\n\t\t\t\t\t// rows is undefined here in IE, so don't use it!\n\t\t\t\t\tfor ( sortIndex = 0; sortIndex < sortLen; sortIndex++ ) {\n\t\t\t\t\t\tcol = sortList[ sortIndex ][ 0 ];\n\t\t\t\t\t\torder = sortList[ sortIndex ][ 1 ];\n\t\t\t\t\t\t// sort direction, true = asc, false = desc\n\t\t\t\t\t\tdir = order === 0;\n\n\t\t\t\t\t\tif ( c.sortStable && a[ col ] === b[ col ] && sortLen === 1 ) {\n\t\t\t\t\t\t\treturn a[ c.columns ].order - b[ c.columns ].order;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// fallback to natural sort since it is more robust\n\t\t\t\t\t\tnum = /n/i.test( ts.getSortType( c.parsers, col ) );\n\t\t\t\t\t\tif ( num && c.strings[ col ] ) {\n\t\t\t\t\t\t\t// sort strings in numerical columns\n\t\t\t\t\t\t\tif ( typeof ( ts.string[ c.strings[ col ] ] ) === 'boolean' ) {\n\t\t\t\t\t\t\t\tnum = ( dir ? 1 : -1 ) * ( ts.string[ c.strings[ col ] ] ? -1 : 1 );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnum = ( c.strings[ col ] ) ? ts.string[ c.strings[ col ] ] || 0 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// fall back to built-in numeric sort\n\t\t\t\t\t\t\t// var sort = $.tablesorter['sort' + s]( a[col], b[col], dir, colMax[col], table );\n\t\t\t\t\t\t\tsort = c.numberSorter ? c.numberSorter( a[ col ], b[ col ], dir, colMax[ col ], table ) :\n\t\t\t\t\t\t\t\tts[ 'sortNumeric' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], num, colMax[ col ], col, c );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// set a & b depending on sort direction\n\t\t\t\t\t\t\tx = dir ? a : b;\n\t\t\t\t\t\t\ty = dir ? b : a;\n\t\t\t\t\t\t\t// text sort function\n\t\t\t\t\t\t\tif ( typeof textSorter === 'function' ) {\n\t\t\t\t\t\t\t\t// custom OVERALL text sorter\n\t\t\t\t\t\t\t\tsort = textSorter( x[ col ], y[ col ], dir, col, table );\n\t\t\t\t\t\t\t} else if ( typeof sorter[ col ] === 'function' ) {\n\t\t\t\t\t\t\t\t// custom text sorter for a SPECIFIC COLUMN\n\t\t\t\t\t\t\t\tsort = sorter[ col ]( x[ col ], y[ col ], dir, col, table );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// fall back to natural sort\n\t\t\t\t\t\t\t\tsort = ts[ 'sortNatural' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ] || '', b[ col ] || '', col, c );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( sort ) { return sort; }\n\t\t\t\t\t}\n\t\t\t\t\treturn a[ c.columns ].order - b[ c.columns ].order;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Applying sort ' + sortList.toString() + ts.benchmark( sortTime ) );\n\t\t\t}\n\t\t},\n\n\t\tresortComplete : function( c, callback ) {\n\t\t\tif ( c.table.isUpdating ) {\n\t\t\t\tc.$table.triggerHandler( 'updateComplete', c.table );\n\t\t\t}\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( c.table );\n\t\t\t}\n\t\t},\n\n\t\tcheckResort : function( c, resort, callback ) {\n\t\t\tvar sortList = $.isArray( resort ) ? resort : c.sortList,\n\t\t\t\t// if no resort parameter is passed, fallback to config.resort (true by default)\n\t\t\t\tresrt = typeof resort === 'undefined' ? c.resort : resort;\n\t\t\t// don't try to resort if the table is still processing\n\t\t\t// this will catch spamming of the updateCell method\n\t\t\tif ( resrt !== false && !c.serverSideSorting && !c.table.isProcessing ) {\n\t\t\t\tif ( sortList.length ) {\n\t\t\t\t\tts.sortOn( c, sortList, function() {\n\t\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t\t}, true );\n\t\t\t\t} else {\n\t\t\t\t\tts.sortReset( c, function() {\n\t\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t\t\tts.applyWidget( c.table, false );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\tts.applyWidget( c.table, false );\n\t\t\t}\n\t\t},\n\n\t\tsortOn : function( c, list, callback, init ) {\n\t\t\tvar indx,\n\t\t\t\ttable = c.table;\n\t\t\tc.$table.triggerHandler( 'sortStart', table );\n\t\t\tfor (indx = 0; indx < c.columns; indx++) {\n\t\t\t\tc.sortVars[ indx ].sortedBy = ts.isValueInArray( indx, list ) > -1 ? 'sorton' : '';\n\t\t\t}\n\t\t\t// update header count index\n\t\t\tts.updateHeaderSortCount( c, list );\n\t\t\t// set css for headers\n\t\t\tts.setHeadersCss( c );\n\t\t\t// fixes #346\n\t\t\tif ( c.delayInit && ts.isEmptyObject( c.cache ) ) {\n\t\t\t\tts.buildCache( c );\n\t\t\t}\n\t\t\tc.$table.triggerHandler( 'sortBegin', table );\n\t\t\t// sort the table and append it to the dom\n\t\t\tts.multisort( c );\n\t\t\tts.appendCache( c, init );\n\t\t\tc.$table.triggerHandler( 'sortBeforeEnd', table );\n\t\t\tc.$table.triggerHandler( 'sortEnd', table );\n\t\t\tts.applyWidget( table );\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\tsortReset : function( c, callback ) {\n\t\t\tc.sortList = [];\n\t\t\tvar indx;\n\t\t\tfor (indx = 0; indx < c.columns; indx++) {\n\t\t\t\tc.sortVars[ indx ].count = -1;\n\t\t\t\tc.sortVars[ indx ].sortedBy = '';\n\t\t\t}\n\t\t\tts.setHeadersCss( c );\n\t\t\tts.multisort( c );\n\t\t\tts.appendCache( c );\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( c.table );\n\t\t\t}\n\t\t},\n\n\t\tgetSortType : function( parsers, column ) {\n\t\t\treturn ( parsers && parsers[ column ] ) ? parsers[ column ].type || '' : '';\n\t\t},\n\n\t\tgetOrder : function( val ) {\n\t\t\t// look for 'd' in 'desc' order; return true\n\t\t\treturn ( /^d/i.test( val ) || val === 1 );\n\t\t},\n\n\t\t// Natural sort - https://github.com/overset/javascript-natural-sort (date sorting removed)\n\t\tsortNatural : function( a, b ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\ta = ( a || '' ).toString();\n\t\t\tb = ( b || '' ).toString();\n\t\t\tvar aNum, bNum, aFloat, bFloat, indx, max,\n\t\t\t\tregex = ts.regex;\n\t\t\t// first try and sort Hex codes\n\t\t\tif ( regex.hex.test( b ) ) {\n\t\t\t\taNum = parseInt( a.match( regex.hex ), 16 );\n\t\t\t\tbNum = parseInt( b.match( regex.hex ), 16 );\n\t\t\t\tif ( aNum < bNum ) { return -1; }\n\t\t\t\tif ( aNum > bNum ) { return 1; }\n\t\t\t}\n\t\t\t// chunk/tokenize\n\t\t\taNum = a.replace( regex.chunk, '\\\\0$1\\\\0' ).replace( regex.chunks, '' ).split( '\\\\0' );\n\t\t\tbNum = b.replace( regex.chunk, '\\\\0$1\\\\0' ).replace( regex.chunks, '' ).split( '\\\\0' );\n\t\t\tmax = Math.max( aNum.length, bNum.length );\n\t\t\t// natural sorting through split numeric strings and default strings\n\t\t\tfor ( indx = 0; indx < max; indx++ ) {\n\t\t\t\t// find floats not starting with '0', string or 0 if not defined\n\t\t\t\taFloat = isNaN( aNum[ indx ] ) ? aNum[ indx ] || 0 : parseFloat( aNum[ indx ] ) || 0;\n\t\t\t\tbFloat = isNaN( bNum[ indx ] ) ? bNum[ indx ] || 0 : parseFloat( bNum[ indx ] ) || 0;\n\t\t\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\n\t\t\t\tif ( isNaN( aFloat ) !== isNaN( bFloat ) ) { return isNaN( aFloat ) ? 1 : -1; }\n\t\t\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\n\t\t\t\tif ( typeof aFloat !== typeof bFloat ) {\n\t\t\t\t\taFloat += '';\n\t\t\t\t\tbFloat += '';\n\t\t\t\t}\n\t\t\t\tif ( aFloat < bFloat ) { return -1; }\n\t\t\t\tif ( aFloat > bFloat ) { return 1; }\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\tsortNaturalAsc : function( a, b, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }\n\t\t\treturn ts.sortNatural( a, b );\n\t\t},\n\n\t\tsortNaturalDesc : function( a, b, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }\n\t\t\treturn ts.sortNatural( b, a );\n\t\t},\n\n\t\t// basic alphabetical sort\n\t\tsortText : function( a, b ) {\n\t\t\treturn a > b ? 1 : ( a < b ? -1 : 0 );\n\t\t},\n\n\t\t// return text string value by adding up ascii value\n\t\t// so the text is somewhat sorted when using a digital sort\n\t\t// this is NOT an alphanumeric sort\n\t\tgetTextValue : function( val, num, max ) {\n\t\t\tif ( max ) {\n\t\t\t\t// make sure the text value is greater than the max numerical value (max)\n\t\t\t\tvar indx,\n\t\t\t\t\tlen = val ? val.length : 0,\n\t\t\t\t\tn = max + num;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tn += val.charCodeAt( indx );\n\t\t\t\t}\n\t\t\t\treturn num * n;\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\tsortNumericAsc : function( a, b, num, max, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }\n\t\t\tif ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }\n\t\t\tif ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }\n\t\t\treturn a - b;\n\t\t},\n\n\t\tsortNumericDesc : function( a, b, num, max, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }\n\t\t\tif ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }\n\t\t\tif ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }\n\t\t\treturn b - a;\n\t\t},\n\n\t\tsortNumeric : function( a, b ) {\n\t\t\treturn a - b;\n\t\t},\n\n\t\t/*\n\t\t██ ██ ██ ██ █████▄ ▄████▄ ██████ ██████ ▄█████\n\t\t██ ██ ██ ██ ██  ██ ██ â–„â–„â–„ ██▄▄     ██   ▀█▄\n\t\t██ ██ ██ ██ ██  ██ ██ ▀██ ██▀▀     ██      ▀█▄\n\t\t███████▀ ██ █████▀ ▀████▀ ██████   ██   █████▀\n\t\t*/\n\t\taddWidget : function( widget ) {\n\t\t\tif ( widget.id && !ts.isEmptyObject( ts.getWidgetById( widget.id ) ) ) {\n\t\t\t\tconsole.warn( '\"' + widget.id + '\" widget was loaded more than once!' );\n\t\t\t}\n\t\t\tts.widgets[ ts.widgets.length ] = widget;\n\t\t},\n\n\t\thasWidget : function( $table, name ) {\n\t\t\t$table = $( $table );\n\t\t\treturn $table.length && $table[ 0 ].config && $table[ 0 ].config.widgetInit[ name ] || false;\n\t\t},\n\n\t\tgetWidgetById : function( name ) {\n\t\t\tvar indx, widget,\n\t\t\t\tlen = ts.widgets.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\twidget = ts.widgets[ indx ];\n\t\t\t\tif ( widget && widget.id && widget.id.toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\treturn widget;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidgetOptions : function( table ) {\n\t\t\tvar indx, widget, wo,\n\t\t\t\tc = table.config,\n\t\t\t\tlen = c.widgets.length;\n\t\t\tif ( len ) {\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.getWidgetById( c.widgets[ indx ] );\n\t\t\t\t\tif ( widget && widget.options ) {\n\t\t\t\t\t\two = $.extend( true, {}, widget.options );\n\t\t\t\t\t\tc.widgetOptions = $.extend( true, wo, c.widgetOptions );\n\t\t\t\t\t\t// add widgetOptions to defaults for option validator\n\t\t\t\t\t\t$.extend( true, ts.defaults.widgetOptions, widget.options );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\taddWidgetFromClass : function( table ) {\n\t\t\tvar len, indx,\n\t\t\t\tc = table.config,\n\t\t\t\t// look for widgets to apply from table class\n\t\t\t\t// don't match from 'ui-widget-content'; use \\S instead of \\w to include widgets\n\t\t\t\t// with dashes in the name, e.g. \"widget-test-2\" extracts out \"test-2\"\n\t\t\t\tregex = '^' + c.widgetClass.replace( ts.regex.templateName, '(\\\\S+)+' ) + '$',\n\t\t\t\twidgetClass = new RegExp( regex, 'g' ),\n\t\t\t\t// split up table class (widget id's can include dashes) - stop using match\n\t\t\t\t// otherwise only one widget gets extracted, see #1109\n\t\t\t\twidgets = ( table.className || '' ).split( ts.regex.spaces );\n\t\t\tif ( widgets.length ) {\n\t\t\t\tlen = widgets.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tif ( widgets[ indx ].match( widgetClass ) ) {\n\t\t\t\t\t\tc.widgets[ c.widgets.length ] = widgets[ indx ].replace( widgetClass, '$1' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidgetId : function( table, id, init ) {\n\t\t\ttable = $(table)[0];\n\t\t\tvar applied, time, name,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\twidget = ts.getWidgetById( id );\n\t\t\tif ( widget ) {\n\t\t\t\tname = widget.id;\n\t\t\t\tapplied = false;\n\t\t\t\t// add widget name to option list so it gets reapplied after sorting, filtering, etc\n\t\t\t\tif ( $.inArray( name, c.widgets ) < 0 ) {\n\t\t\t\t\tc.widgets[ c.widgets.length ] = name;\n\t\t\t\t}\n\t\t\t\tif ( debug ) { time = new Date(); }\n\n\t\t\t\tif ( init || !( c.widgetInit[ name ] ) ) {\n\t\t\t\t\t// set init flag first to prevent calling init more than once (e.g. pager)\n\t\t\t\t\tc.widgetInit[ name ] = true;\n\t\t\t\t\tif ( table.hasInitialized ) {\n\t\t\t\t\t\t// don't reapply widget options on tablesorter init\n\t\t\t\t\t\tts.applyWidgetOptions( table );\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof widget.init === 'function' ) {\n\t\t\t\t\t\tapplied = true;\n\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Initializing ' + name + ' widget' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidget.init( table, widget, c, wo );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( !init && typeof widget.format === 'function' ) {\n\t\t\t\t\tapplied = true;\n\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Updating ' + name + ' widget' );\n\t\t\t\t\t}\n\t\t\t\t\twidget.format( table, c, wo, false );\n\t\t\t\t}\n\t\t\t\tif ( debug ) {\n\t\t\t\t\tif ( applied ) {\n\t\t\t\t\t\tconsole.log( 'Completed ' + ( init ? 'initializing ' : 'applying ' ) + name + ' widget' + ts.benchmark( time ) );\n\t\t\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidget : function( table, init, callback ) {\n\t\t\ttable = $( table )[ 0 ]; // in case this is called externally\n\t\t\tvar indx, len, names, widget, time,\n\t\t\t\tc = table.config,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\twidgets = [];\n\t\t\t// prevent numerous consecutive widget applications\n\t\t\tif ( init !== false && table.hasInitialized && ( table.isApplyingWidgets || table.isUpdating ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( debug ) { time = new Date(); }\n\t\t\tts.addWidgetFromClass( table );\n\t\t\t// prevent \"tablesorter-ready\" from firing multiple times in a row\n\t\t\tclearTimeout( c.timerReady );\n\t\t\tif ( c.widgets.length ) {\n\t\t\t\ttable.isApplyingWidgets = true;\n\t\t\t\t// ensure unique widget ids\n\t\t\t\tc.widgets = $.grep( c.widgets, function( val, index ) {\n\t\t\t\t\treturn $.inArray( val, c.widgets ) === index;\n\t\t\t\t});\n\t\t\t\tnames = c.widgets || [];\n\t\t\t\tlen = names.length;\n\t\t\t\t// build widget array & add priority as needed\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.getWidgetById( names[ indx ] );\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\t// set priority to 10 if not defined\n\t\t\t\t\t\tif ( !widget.priority ) { widget.priority = 10; }\n\t\t\t\t\t\twidgets[ indx ] = widget;\n\t\t\t\t\t} else if ( debug ) {\n\t\t\t\t\t\tconsole.warn( '\"' + names[ indx ] + '\" was enabled, but the widget code has not been loaded!' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// sort widgets by priority\n\t\t\t\twidgets.sort( function( a, b ) {\n\t\t\t\t\treturn a.priority < b.priority ? -1 : a.priority === b.priority ? 0 : 1;\n\t\t\t\t});\n\t\t\t\t// add/update selected widgets\n\t\t\t\tlen = widgets.length;\n\t\t\t\tif ( debug ) {\n\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Start ' + ( init ? 'initializing' : 'applying' ) + ' widgets' );\n\t\t\t\t}\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = widgets[ indx ];\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\tts.applyWidgetId( table, widget.id, init );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( debug && console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tc.timerReady = setTimeout( function() {\n\t\t\t\ttable.isApplyingWidgets = false;\n\t\t\t\t$.data( table, 'lastWidgetApplication', new Date() );\n\t\t\t\tc.$table.triggerHandler( 'tablesorter-ready' );\n\t\t\t\t// callback executed on init only\n\t\t\t\tif ( !init && typeof callback === 'function' ) {\n\t\t\t\t\tcallback( table );\n\t\t\t\t}\n\t\t\t\tif ( debug ) {\n\t\t\t\t\twidget = c.widgets.length;\n\t\t\t\t\tconsole.log( 'Completed ' +\n\t\t\t\t\t\t( init === true ? 'initializing ' : 'applying ' ) + widget +\n\t\t\t\t\t\t' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );\n\t\t\t\t}\n\t\t\t}, 10 );\n\t\t},\n\n\t\tremoveWidget : function( table, name, refreshing ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar index, widget, indx, len,\n\t\t\t\tc = table.config;\n\t\t\t// if name === true, add all widgets from $.tablesorter.widgets\n\t\t\tif ( name === true ) {\n\t\t\t\tname = [];\n\t\t\t\tlen = ts.widgets.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.widgets[ indx ];\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\tname[ name.length ] = widget.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// name can be either an array of widgets names,\n\t\t\t\t// or a space/comma separated list of widget names\n\t\t\t\tname = ( $.isArray( name ) ? name.join( ',' ) : name || '' ).toLowerCase().split( /[\\s,]+/ );\n\t\t\t}\n\t\t\tlen = name.length;\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\twidget = ts.getWidgetById( name[ index ] );\n\t\t\t\tindx = $.inArray( name[ index ], c.widgets );\n\t\t\t\t// don't remove the widget from config.widget if refreshing\n\t\t\t\tif ( indx >= 0 && refreshing !== true ) {\n\t\t\t\t\tc.widgets.splice( indx, 1 );\n\t\t\t\t}\n\t\t\t\tif ( widget && widget.remove ) {\n\t\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\t\tconsole.log( ( refreshing ? 'Refreshing' : 'Removing' ) + ' \"' + name[ index ] + '\" widget' );\n\t\t\t\t\t}\n\t\t\t\t\twidget.remove( table, c, c.widgetOptions, refreshing );\n\t\t\t\t\tc.widgetInit[ name[ index ] ] = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.$table.triggerHandler( 'widgetRemoveEnd', table );\n\t\t},\n\n\t\trefreshWidgets : function( table, doAll, dontapply ) {\n\t\t\ttable = $( table )[ 0 ]; // see issue #243\n\t\t\tvar indx, widget,\n\t\t\t\tc = table.config,\n\t\t\t\tcurWidgets = c.widgets,\n\t\t\t\twidgets = ts.widgets,\n\t\t\t\tlen = widgets.length,\n\t\t\t\tlist = [],\n\t\t\t\tcallback = function( table ) {\n\t\t\t\t\t$( table ).triggerHandler( 'refreshComplete' );\n\t\t\t\t};\n\t\t\t// remove widgets not defined in config.widgets, unless doAll is true\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\twidget = widgets[ indx ];\n\t\t\t\tif ( widget && widget.id && ( doAll || $.inArray( widget.id, curWidgets ) < 0 ) ) {\n\t\t\t\t\tlist[ list.length ] = widget.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.removeWidget( table, list.join( ',' ), true );\n\t\t\tif ( dontapply !== true ) {\n\t\t\t\t// call widget init if\n\t\t\t\tts.applyWidget( table, doAll || false, callback );\n\t\t\t\tif ( doAll ) {\n\t\t\t\t\t// apply widget format\n\t\t\t\t\tts.applyWidget( table, false, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t██  ██ ██████ ██ ██     ██ ██████ ██ ██████ ▄█████\n\t\t██  ██   ██   ██ ██     ██   ██   ██ ██▄▄   ▀█▄\n\t\t██  ██   ██   ██ ██     ██   ██   ██ ██▀▀      ▀█▄\n\t\t▀████▀   ██   ██ ██████ ██   ██   ██ ██████ █████▀\n\t\t*/\n\t\tbenchmark : function( diff ) {\n\t\t\treturn ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );\n\t\t},\n\t\t// deprecated ts.log\n\t\tlog : function() {\n\t\t\tconsole.log( arguments );\n\t\t},\n\t\tdebug : function(c, name) {\n\t\t\treturn c && (\n\t\t\t\tc.debug === true ||\n\t\t\t\ttypeof c.debug === 'string' && c.debug.indexOf(name) > -1\n\t\t\t);\n\t\t},\n\n\t\t// $.isEmptyObject from jQuery v1.4\n\t\tisEmptyObject : function( obj ) {\n\t\t\t/*jshint forin: false */\n\t\t\tfor ( var name in obj ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tisValueInArray : function( column, arry ) {\n\t\t\tvar indx,\n\t\t\t\tlen = arry && arry.length || 0;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( arry[ indx ][ 0 ] === column ) {\n\t\t\t\t\treturn indx;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\tformatFloat : function( str, table ) {\n\t\t\tif ( typeof str !== 'string' || str === '' ) { return str; }\n\t\t\t// allow using formatFloat without a table; defaults to US number format\n\t\t\tvar num,\n\t\t\t\tusFormat = table && table.config ? table.config.usNumberFormat !== false :\n\t\t\t\t\ttypeof table !== 'undefined' ? table : true;\n\t\t\tif ( usFormat ) {\n\t\t\t\t// US Format - 1,234,567.89 -> 1234567.89\n\t\t\t\tstr = str.replace( ts.regex.comma, '' );\n\t\t\t} else {\n\t\t\t\t// German Format = 1.234.567,89 -> 1234567.89\n\t\t\t\t// French Format = 1 234 567,89 -> 1234567.89\n\t\t\t\tstr = str.replace( ts.regex.digitNonUS, '' ).replace( ts.regex.comma, '.' );\n\t\t\t}\n\t\t\tif ( ts.regex.digitNegativeTest.test( str ) ) {\n\t\t\t\t// make (#) into a negative number -> (10) = -10\n\t\t\t\tstr = str.replace( ts.regex.digitNegativeReplace, '-$1' );\n\t\t\t}\n\t\t\tnum = parseFloat( str );\n\t\t\t// return the text instead of zero\n\t\t\treturn isNaN( num ) ? $.trim( str ) : num;\n\t\t},\n\n\t\tisDigit : function( str ) {\n\t\t\t// replace all unwanted chars and match\n\t\t\treturn isNaN( str ) ?\n\t\t\t\tts.regex.digitTest.test( str.toString().replace( ts.regex.digitReplace, '' ) ) :\n\t\t\t\tstr !== '';\n\t\t},\n\n\t\t// computeTableHeaderCellIndexes from:\n\t\t// http://www.javascripttoolbox.com/lib/table/examples.php\n\t\t// http://www.javascripttoolbox.com/temp/table_cellindex.html\n\t\tcomputeColumnIndex : function( $rows, c ) {\n\t\t\tvar i, j, k, l, cell, cells, rowIndex, rowSpan, colSpan, firstAvailCol,\n\t\t\t\t// total columns has been calculated, use it to set the matrixrow\n\t\t\t\tcolumns = c && c.columns || 0,\n\t\t\t\tmatrix = [],\n\t\t\t\tmatrixrow = new Array( columns );\n\t\t\tfor ( i = 0; i < $rows.length; i++ ) {\n\t\t\t\tcells = $rows[ i ].cells;\n\t\t\t\tfor ( j = 0; j < cells.length; j++ ) {\n\t\t\t\t\tcell = cells[ j ];\n\t\t\t\t\trowIndex = i;\n\t\t\t\t\trowSpan = cell.rowSpan || 1;\n\t\t\t\t\tcolSpan = cell.colSpan || 1;\n\t\t\t\t\tif ( typeof matrix[ rowIndex ] === 'undefined' ) {\n\t\t\t\t\t\tmatrix[ rowIndex ] = [];\n\t\t\t\t\t}\n\t\t\t\t\t// Find first available column in the first row\n\t\t\t\t\tfor ( k = 0; k < matrix[ rowIndex ].length + 1; k++ ) {\n\t\t\t\t\t\tif ( typeof matrix[ rowIndex ][ k ] === 'undefined' ) {\n\t\t\t\t\t\t\tfirstAvailCol = k;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// jscs:disable disallowEmptyBlocks\n\t\t\t\t\tif ( columns && cell.cellIndex === firstAvailCol ) {\n\t\t\t\t\t\t// don't to anything\n\t\t\t\t\t} else if ( cell.setAttribute ) {\n\t\t\t\t\t\t// jscs:enable disallowEmptyBlocks\n\t\t\t\t\t\t// add data-column (setAttribute = IE8+)\n\t\t\t\t\t\tcell.setAttribute( 'data-column', firstAvailCol );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove once we drop support for IE7 - 1/12/2016\n\t\t\t\t\t\t$( cell ).attr( 'data-column', firstAvailCol );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( k = rowIndex; k < rowIndex + rowSpan; k++ ) {\n\t\t\t\t\t\tif ( typeof matrix[ k ] === 'undefined' ) {\n\t\t\t\t\t\t\tmatrix[ k ] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatrixrow = matrix[ k ];\n\t\t\t\t\t\tfor ( l = firstAvailCol; l < firstAvailCol + colSpan; l++ ) {\n\t\t\t\t\t\t\tmatrixrow[ l ] = 'x';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.checkColumnCount($rows, matrix, matrixrow.length);\n\t\t\treturn matrixrow.length;\n\t\t},\n\n\t\tcheckColumnCount : function($rows, matrix, columns) {\n\t\t\t// this DOES NOT report any tbody column issues, except for the math and\n\t\t\t// and column selector widgets\n\t\t\tvar i, len,\n\t\t\t\tvalid = true,\n\t\t\t\tcells = [];\n\t\t\tfor ( i = 0; i < matrix.length; i++ ) {\n\t\t\t\t// some matrix entries are undefined when testing the footer because\n\t\t\t\t// it is using the rowIndex property\n\t\t\t\tif ( matrix[i] ) {\n\t\t\t\t\tlen = matrix[i].length;\n\t\t\t\t\tif ( matrix[i].length !== columns ) {\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !valid ) {\n\t\t\t\t$rows.each( function( indx, el ) {\n\t\t\t\t\tvar cell = el.parentElement.nodeName;\n\t\t\t\t\tif ( cells.indexOf( cell ) < 0 ) {\n\t\t\t\t\t\tcells.push( cell );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Invalid or incorrect number of columns in the ' +\n\t\t\t\t\tcells.join( ' or ' ) + '; expected ' + columns +\n\t\t\t\t\t', but found ' + len + ' columns'\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\t// automatically add a colgroup with col elements set to a percentage width\n\t\tfixColumnWidth : function( table ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar overallWidth, percent, $tbodies, len, index,\n\t\t\t\tc = table.config,\n\t\t\t\t$colgroup = c.$table.children( 'colgroup' );\n\t\t\t// remove plugin-added colgroup, in case we need to refresh the widths\n\t\t\tif ( $colgroup.length && $colgroup.hasClass( ts.css.colgroup ) ) {\n\t\t\t\t$colgroup.remove();\n\t\t\t}\n\t\t\tif ( c.widthFixed && c.$table.children( 'colgroup' ).length === 0 ) {\n\t\t\t\t$colgroup = $( '<colgroup class=\"' + ts.css.colgroup + '\">' );\n\t\t\t\toverallWidth = c.$table.width();\n\t\t\t\t// only add col for visible columns - fixes #371\n\t\t\t\t$tbodies = c.$tbodies.find( 'tr:first' ).children( ':visible' );\n\t\t\t\tlen = $tbodies.length;\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\tpercent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%';\n\t\t\t\t\t$colgroup.append( $( '<col>' ).css( 'width', percent ) );\n\t\t\t\t}\n\t\t\t\tc.$table.prepend( $colgroup );\n\t\t\t}\n\t\t},\n\n\t\t// get sorter, string, empty, etc options for each column from\n\t\t// jQuery data, metadata, header option or header class name ('sorter-false')\n\t\t// priority = jQuery data > meta > headers option > header class name\n\t\tgetData : function( header, configHeader, key ) {\n\t\t\tvar meta, cl4ss,\n\t\t\t\tval = '',\n\t\t\t\t$header = $( header );\n\t\t\tif ( !$header.length ) { return ''; }\n\t\t\tmeta = $.metadata ? $header.metadata() : false;\n\t\t\tcl4ss = ' ' + ( $header.attr( 'class' ) || '' );\n\t\t\tif ( typeof $header.data( key ) !== 'undefined' ||\n\t\t\t\ttypeof $header.data( key.toLowerCase() ) !== 'undefined' ) {\n\t\t\t\t// 'data-lockedOrder' is assigned to 'lockedorder'; but 'data-locked-order' is assigned to 'lockedOrder'\n\t\t\t\t// 'data-sort-initial-order' is assigned to 'sortInitialOrder'\n\t\t\t\tval += $header.data( key ) || $header.data( key.toLowerCase() );\n\t\t\t} else if ( meta && typeof meta[ key ] !== 'undefined' ) {\n\t\t\t\tval += meta[ key ];\n\t\t\t} else if ( configHeader && typeof configHeader[ key ] !== 'undefined' ) {\n\t\t\t\tval += configHeader[ key ];\n\t\t\t} else if ( cl4ss !== ' ' && cl4ss.match( ' ' + key + '-' ) ) {\n\t\t\t\t// include sorter class name 'sorter-text', etc; now works with 'sorter-my-custom-parser'\n\t\t\t\tval = cl4ss.match( new RegExp( '\\\\s' + key + '-([\\\\w-]+)' ) )[ 1 ] || '';\n\t\t\t}\n\t\t\treturn $.trim( val );\n\t\t},\n\n\t\tgetColumnData : function( table, obj, indx, getCell, $headers ) {\n\t\t\tif ( typeof obj !== 'object' || obj === null ) {\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar $header, key,\n\t\t\t\tc = table.config,\n\t\t\t\t$cells = ( $headers || c.$headers ),\n\t\t\t\t// c.$headerIndexed is not defined initially\n\t\t\t\t$cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||\n\t\t\t\t\t$cells.find( '[data-column=\"' + indx + '\"]:last' );\n\t\t\tif ( typeof obj[ indx ] !== 'undefined' ) {\n\t\t\t\treturn getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];\n\t\t\t}\n\t\t\tfor ( key in obj ) {\n\t\t\t\tif ( typeof key === 'string' ) {\n\t\t\t\t\t$header = $cell\n\t\t\t\t\t\t// header cell with class/id\n\t\t\t\t\t\t.filter( key )\n\t\t\t\t\t\t// find elements within the header cell with cell/id\n\t\t\t\t\t\t.add( $cell.find( key ) );\n\t\t\t\t\tif ( $header.length ) {\n\t\t\t\t\t\treturn obj[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\n\t\t// *** Process table ***\n\t\t// add processing indicator\n\t\tisProcessing : function( $table, toggle, $headers ) {\n\t\t\t$table = $( $table );\n\t\t\tvar c = $table[ 0 ].config,\n\t\t\t\t// default to all headers\n\t\t\t\t$header = $headers || $table.find( '.' + ts.css.header );\n\t\t\tif ( toggle ) {\n\t\t\t\t// don't use sortList if custom $headers used\n\t\t\t\tif ( typeof $headers !== 'undefined' && c.sortList.length > 0 ) {\n\t\t\t\t\t// get headers from the sortList\n\t\t\t\t\t$header = $header.filter( function() {\n\t\t\t\t\t\t// get data-column from attr to keep compatibility with jQuery 1.2.6\n\t\t\t\t\t\treturn this.sortDisabled ?\n\t\t\t\t\t\t\tfalse :\n\t\t\t\t\t\t\tts.isValueInArray( parseFloat( $( this ).attr( 'data-column' ) ), c.sortList ) >= 0;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$table.add( $header ).addClass( ts.css.processing + ' ' + c.cssProcessing );\n\t\t\t} else {\n\t\t\t\t$table.add( $header ).removeClass( ts.css.processing + ' ' + c.cssProcessing );\n\t\t\t}\n\t\t},\n\n\t\t// detach tbody but save the position\n\t\t// don't use tbody because there are portions that look for a tbody index (updateCell)\n\t\tprocessTbody : function( table, $tb, getIt ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tif ( getIt ) {\n\t\t\t\ttable.isProcessing = true;\n\t\t\t\t$tb.before( '<colgroup class=\"tablesorter-savemyplace\"/>' );\n\t\t\t\treturn $.fn.detach ? $tb.detach() : $tb.remove();\n\t\t\t}\n\t\t\tvar holdr = $( table ).find( 'colgroup.tablesorter-savemyplace' );\n\t\t\t$tb.insertAfter( holdr );\n\t\t\tholdr.remove();\n\t\t\ttable.isProcessing = false;\n\t\t},\n\n\t\tclearTableBody : function( table ) {\n\t\t\t$( table )[ 0 ].config.$tbodies.children().detach();\n\t\t},\n\n\t\t// used when replacing accented characters during sorting\n\t\tcharacterEquivalents : {\n\t\t\t'a' : '\\u00e1\\u00e0\\u00e2\\u00e3\\u00e4\\u0105\\u00e5', // áàâãäąå\n\t\t\t'A' : '\\u00c1\\u00c0\\u00c2\\u00c3\\u00c4\\u0104\\u00c5', // ÁÀÂÃÄĄÅ\n\t\t\t'c' : '\\u00e7\\u0107\\u010d', // çćč\n\t\t\t'C' : '\\u00c7\\u0106\\u010c', // ÇĆČ\n\t\t\t'e' : '\\u00e9\\u00e8\\u00ea\\u00eb\\u011b\\u0119', // éèêëěę\n\t\t\t'E' : '\\u00c9\\u00c8\\u00ca\\u00cb\\u011a\\u0118', // ÉÈÊËĚĘ\n\t\t\t'i' : '\\u00ed\\u00ec\\u0130\\u00ee\\u00ef\\u0131', // íìİîïı\n\t\t\t'I' : '\\u00cd\\u00cc\\u0130\\u00ce\\u00cf', // ÍÌİÎÏ\n\t\t\t'o' : '\\u00f3\\u00f2\\u00f4\\u00f5\\u00f6\\u014d', // óòôõöō\n\t\t\t'O' : '\\u00d3\\u00d2\\u00d4\\u00d5\\u00d6\\u014c', // ÓÒÔÕÖŌ\n\t\t\t'ss': '\\u00df', // ß (s sharp)\n\t\t\t'SS': '\\u1e9e', // ẞ (Capital sharp s)\n\t\t\t'u' : '\\u00fa\\u00f9\\u00fb\\u00fc\\u016f', // úùûüů\n\t\t\t'U' : '\\u00da\\u00d9\\u00db\\u00dc\\u016e' // ÚÙÛÜŮ\n\t\t},\n\n\t\treplaceAccents : function( str ) {\n\t\t\tvar chr,\n\t\t\t\tacc = '[',\n\t\t\t\teq = ts.characterEquivalents;\n\t\t\tif ( !ts.characterRegex ) {\n\t\t\t\tts.characterRegexArray = {};\n\t\t\t\tfor ( chr in eq ) {\n\t\t\t\t\tif ( typeof chr === 'string' ) {\n\t\t\t\t\t\tacc += eq[ chr ];\n\t\t\t\t\t\tts.characterRegexArray[ chr ] = new RegExp( '[' + eq[ chr ] + ']', 'g' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tts.characterRegex = new RegExp( acc + ']' );\n\t\t\t}\n\t\t\tif ( ts.characterRegex.test( str ) ) {\n\t\t\t\tfor ( chr in eq ) {\n\t\t\t\t\tif ( typeof chr === 'string' ) {\n\t\t\t\t\t\tstr = str.replace( ts.characterRegexArray[ chr ], chr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\n\t\tvalidateOptions : function( c ) {\n\t\t\tvar setting, setting2, typ, timer,\n\t\t\t\t// ignore options containing an array\n\t\t\t\tignore = 'headers sortForce sortList sortAppend widgets'.split( ' ' ),\n\t\t\t\torig = c.originalSettings;\n\t\t\tif ( orig ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\ttimer = new Date();\n\t\t\t\t}\n\t\t\t\tfor ( setting in orig ) {\n\t\t\t\t\ttyp = typeof ts.defaults[setting];\n\t\t\t\t\tif ( typ === 'undefined' ) {\n\t\t\t\t\t\tconsole.warn( 'Tablesorter Warning! \"table.config.' + setting + '\" option not recognized' );\n\t\t\t\t\t} else if ( typ === 'object' ) {\n\t\t\t\t\t\tfor ( setting2 in orig[setting] ) {\n\t\t\t\t\t\t\ttyp = ts.defaults[setting] && typeof ts.defaults[setting][setting2];\n\t\t\t\t\t\t\tif ( $.inArray( setting, ignore ) < 0 && typ === 'undefined' ) {\n\t\t\t\t\t\t\t\tconsole.warn( 'Tablesorter Warning! \"table.config.' + setting + '.' + setting2 + '\" option not recognized' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.log( 'validate options time:' + ts.benchmark( timer ) );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// restore headers\n\t\trestoreHeaders : function( table ) {\n\t\t\tvar index, $cell,\n\t\t\t\tc = $( table )[ 0 ].config,\n\t\t\t\t$headers = c.$table.find( c.selectorHeaders ),\n\t\t\t\tlen = $headers.length;\n\t\t\t// don't use c.$headers here in case header cells were swapped\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t$cell = $headers.eq( index );\n\t\t\t\t// only restore header cells if it is wrapped\n\t\t\t\t// because this is also used by the updateAll method\n\t\t\t\tif ( $cell.find( '.' + ts.css.headerIn ).length ) {\n\t\t\t\t\t$cell.html( c.headerContent[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdestroy : function( table, removeClasses, callback ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tif ( !table.hasInitialized ) { return; }\n\t\t\t// remove all widgets\n\t\t\tts.removeWidget( table, true, false );\n\t\t\tvar events,\n\t\t\t\t$t = $( table ),\n\t\t\t\tc = table.config,\n\t\t\t\t$h = $t.find( 'thead:first' ),\n\t\t\t\t$r = $h.find( 'tr.' + ts.css.headerRow ).removeClass( ts.css.headerRow + ' ' + c.cssHeaderRow ),\n\t\t\t\t$f = $t.find( 'tfoot:first > tr' ).children( 'th, td' );\n\t\t\tif ( removeClasses === false && $.inArray( 'uitheme', c.widgets ) >= 0 ) {\n\t\t\t\t// reapply uitheme classes, in case we want to maintain appearance\n\t\t\t\t$t.triggerHandler( 'applyWidgetId', [ 'uitheme' ] );\n\t\t\t\t$t.triggerHandler( 'applyWidgetId', [ 'zebra' ] );\n\t\t\t}\n\t\t\t// remove widget added rows, just in case\n\t\t\t$h.find( 'tr' ).not( $r ).remove();\n\t\t\t// disable tablesorter - not using .unbind( namespace ) because namespacing was\n\t\t\t// added in jQuery v1.4.3 - see http://api.jquery.com/event.namespace/\n\t\t\tevents = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton ' +\n\t\t\t\t'appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave ' +\n\t\t\t\t'keypress sortBegin sortEnd resetToLoadState '.split( ' ' )\n\t\t\t\t.join( c.namespace + ' ' );\n\t\t\t$t\n\t\t\t\t.removeData( 'tablesorter' )\n\t\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) );\n\t\t\tc.$headers\n\t\t\t\t.add( $f )\n\t\t\t\t.removeClass( [ ts.css.header, c.cssHeader, c.cssAsc, c.cssDesc, ts.css.sortAsc, ts.css.sortDesc, ts.css.sortNone ].join( ' ' ) )\n\t\t\t\t.removeAttr( 'data-column' )\n\t\t\t\t.removeAttr( 'aria-label' )\n\t\t\t\t.attr( 'aria-disabled', 'true' );\n\t\t\t$r\n\t\t\t\t.find( c.selectorSort )\n\t\t\t\t.unbind( ( 'mousedown mouseup keypress '.split( ' ' ).join( c.namespace + ' ' ) ).replace( ts.regex.spaces, ' ' ) );\n\t\t\tts.restoreHeaders( table );\n\t\t\t$t.toggleClass( ts.css.table + ' ' + c.tableClass + ' tablesorter-' + c.theme, removeClasses === false );\n\t\t\t$t.removeClass(c.namespace.slice(1));\n\t\t\t// clear flag in case the plugin is initialized again\n\t\t\ttable.hasInitialized = false;\n\t\t\tdelete table.config.cache;\n\t\t\tif ( typeof callback === 'function' ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'tablesorter has been removed' );\n\t\t\t}\n\t\t}\n\n\t};\n\n\t$.fn.tablesorter = function( settings ) {\n\t\treturn this.each( function() {\n\t\t\tvar table = this,\n\t\t\t// merge & extend config options\n\t\t\tc = $.extend( true, {}, ts.defaults, settings, ts.instanceMethods );\n\t\t\t// save initial settings\n\t\t\tc.originalSettings = settings;\n\t\t\t// create a table from data (build table widget)\n\t\t\tif ( !table.hasInitialized && ts.buildTable && this.nodeName !== 'TABLE' ) {\n\t\t\t\t// return the table (in case the original target is the table's container)\n\t\t\t\tts.buildTable( table, c );\n\t\t\t} else {\n\t\t\t\tts.setup( table, c );\n\t\t\t}\n\t\t});\n\t};\n\n\t// set up debug logs\n\tif ( !( window.console && window.console.log ) ) {\n\t\t// access $.tablesorter.logs for browsers that don't have a console...\n\t\tts.logs = [];\n\t\t/*jshint -W020 */\n\t\tconsole = {};\n\t\tconsole.log = console.warn = console.error = console.table = function() {\n\t\t\tvar arg = arguments.length > 1 ? arguments : arguments[0];\n\t\t\tts.logs[ ts.logs.length ] = { date: Date.now(), log: arg };\n\t\t};\n\t}\n\n\t// add default parsers\n\tts.addParser({\n\t\tid : 'no-parser',\n\t\tis : function() {\n\t\t\treturn false;\n\t\t},\n\t\tformat : function() {\n\t\t\treturn '';\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.addParser({\n\t\tid : 'text',\n\t\tis : function() {\n\t\t\treturn true;\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar c = table.config;\n\t\t\tif ( str ) {\n\t\t\t\tstr = $.trim( c.ignoreCase ? str.toLocaleLowerCase() : str );\n\t\t\t\tstr = c.sortLocaleCompare ? ts.replaceAccents( str ) : str;\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.regex.nondigit = /[^\\w,. \\-()]/g;\n\tts.addParser({\n\t\tid : 'digit',\n\t\tis : function( str ) {\n\t\t\treturn ts.isDigit( str );\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );\n\t\t\treturn str && typeof num === 'number' ? num :\n\t\t\t\tstr ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.regex.currencyReplace = /[+\\-,. ]/g;\n\tts.regex.currencyTest = /^\\(?\\d+[\\u00a3$\\u20ac\\u00a4\\u00a5\\u00a2?.]|[\\u00a3$\\u20ac\\u00a4\\u00a5\\u00a2?.]\\d+\\)?$/;\n\tts.addParser({\n\t\tid : 'currency',\n\t\tis : function( str ) {\n\t\t\tstr = ( str || '' ).replace( ts.regex.currencyReplace, '' );\n\t\t\t// test for £$€¤¥¢\n\t\t\treturn ts.regex.currencyTest.test( str );\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );\n\t\t\treturn str && typeof num === 'number' ? num :\n\t\t\t\tstr ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme\n\t// now, this regex can be updated before initialization\n\tts.regex.urlProtocolTest = /^(https?|ftp|file):\\/\\//;\n\tts.regex.urlProtocolReplace = /(https?|ftp|file):\\/\\/(www\\.)?/;\n\tts.addParser({\n\t\tid : 'url',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.urlProtocolTest.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\treturn str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.regex.dash = /-/g;\n\tts.regex.isoDate = /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}/;\n\tts.addParser({\n\t\tid : 'isoDate',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.isoDate.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\tvar date = str ? new Date( str.replace( ts.regex.dash, '/' ) ) : str;\n\t\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.regex.percent = /%/g;\n\tts.regex.percentTest = /(\\d\\s*?%|%\\s*?\\d)/;\n\tts.addParser({\n\t\tid : 'percent',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.percentTest.test( str ) && str.length < 15;\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\treturn str ? ts.formatFloat( str.replace( ts.regex.percent, '' ), table ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// added image parser to core v2.17.9\n\tts.addParser({\n\t\tid : 'image',\n\t\tis : function( str, table, node, $node ) {\n\t\t\treturn $node.find( 'img' ).length > 0;\n\t\t},\n\t\tformat : function( str, table, cell ) {\n\t\t\treturn $( cell ).find( 'img' ).attr( table.config.imgAttr || 'alt' ) || str;\n\t\t},\n\t\tparsed : true, // filter widget flag\n\t\ttype : 'text'\n\t});\n\n\tts.regex.dateReplace = /(\\S)([AP]M)$/i; // used by usLongDate & time parser\n\tts.regex.usLongDateTest1 = /^[A-Z]{3,10}\\.?\\s+\\d{1,2},?\\s+(\\d{4})(\\s+\\d{1,2}:\\d{2}(:\\d{2})?(\\s+[AP]M)?)?$/i;\n\tts.regex.usLongDateTest2 = /^\\d{1,2}\\s+[A-Z]{3,10}\\s+\\d{4}/i;\n\tts.addParser({\n\t\tid : 'usLongDate',\n\t\tis : function( str ) {\n\t\t\t// two digit years are not allowed cross-browser\n\t\t\t// Jan 01, 2013 12:34:56 PM or 01 Jan 2013\n\t\t\treturn ts.regex.usLongDateTest1.test( str ) || ts.regex.usLongDateTest2.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\tvar date = str ? new Date( str.replace( ts.regex.dateReplace, '$1 $2' ) ) : str;\n\t\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// testing for ##-##-#### or ####-##-##, so it's not perfect; time can be included\n\tts.regex.shortDateTest = /(^\\d{1,2}[\\/\\s]\\d{1,2}[\\/\\s]\\d{4})|(^\\d{4}[\\/\\s]\\d{1,2}[\\/\\s]\\d{1,2})/;\n\t// escaped \"-\" because JSHint in Firefox was showing it as an error\n\tts.regex.shortDateReplace = /[\\-.,]/g;\n\t// XXY covers MDY & DMY formats\n\tts.regex.shortDateXXY = /(\\d{1,2})[\\/\\s](\\d{1,2})[\\/\\s](\\d{4})/;\n\tts.regex.shortDateYMD = /(\\d{4})[\\/\\s](\\d{1,2})[\\/\\s](\\d{1,2})/;\n\tts.convertFormat = function( dateString, format ) {\n\t\tdateString = ( dateString || '' )\n\t\t\t.replace( ts.regex.spaces, ' ' )\n\t\t\t.replace( ts.regex.shortDateReplace, '/' );\n\t\tif ( format === 'mmddyyyy' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateXXY, '$3/$1/$2' );\n\t\t} else if ( format === 'ddmmyyyy' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateXXY, '$3/$2/$1' );\n\t\t} else if ( format === 'yyyymmdd' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateYMD, '$1/$2/$3' );\n\t\t}\n\t\tvar date = new Date( dateString );\n\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : '';\n\t};\n\n\tts.addParser({\n\t\tid : 'shortDate', // 'mmddyyyy', 'ddmmyyyy' or 'yyyymmdd'\n\t\tis : function( str ) {\n\t\t\tstr = ( str || '' ).replace( ts.regex.spaces, ' ' ).replace( ts.regex.shortDateReplace, '/' );\n\t\t\treturn ts.regex.shortDateTest.test( str );\n\t\t},\n\t\tformat : function( str, table, cell, cellIndex ) {\n\t\t\tif ( str ) {\n\t\t\t\tvar c = table.config,\n\t\t\t\t\t$header = c.$headerIndexed[ cellIndex ],\n\t\t\t\t\tformat = $header.length && $header.data( 'dateFormat' ) ||\n\t\t\t\t\t\tts.getData( $header, ts.getColumnData( table, c.headers, cellIndex ), 'dateFormat' ) ||\n\t\t\t\t\t\tc.dateFormat;\n\t\t\t\t// save format because getData can be slow...\n\t\t\t\tif ( $header.length ) {\n\t\t\t\t\t$header.data( 'dateFormat', format );\n\t\t\t\t}\n\t\t\t\treturn ts.convertFormat( str, format ) || str;\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// match 24 hour time & 12 hours time + am/pm - see http://regexr.com/3c3tk\n\tts.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\\d)(\\s[AP]M)$|^((?:[01]\\d|[2][0-4]):[0-5]\\d)$/i;\n\tts.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\\d)(\\s[AP]M)|((?:[01]\\d|[2][0-4]):[0-5]\\d)/i;\n\tts.addParser({\n\t\tid : 'time',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.timeTest.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\t// isolate time... ignore month, day and year\n\t\t\tvar temp,\n\t\t\t\ttimePart = ( str || '' ).match( ts.regex.timeMatch ),\n\t\t\t\torig = new Date( str ),\n\t\t\t\t// no time component? default to 00:00 by leaving it out, but only if str is defined\n\t\t\t\ttime = str && ( timePart !== null ? timePart[ 0 ] : '00:00 AM' ),\n\t\t\t\tdate = time ? new Date( '2000/01/01 ' + time.replace( ts.regex.dateReplace, '$1 $2' ) ) : time;\n\t\t\tif ( date instanceof Date && isFinite( date ) ) {\n\t\t\t\ttemp = orig instanceof Date && isFinite( orig ) ? orig.getTime() : 0;\n\t\t\t\t// if original string was a valid date, add it to the decimal so the column sorts in some kind of order\n\t\t\t\t// luckily new Date() ignores the decimals\n\t\t\t\treturn temp ? parseFloat( date.getTime() + '.' + orig.getTime() ) : date.getTime();\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.addParser({\n\t\tid : 'metadata',\n\t\tis : function() {\n\t\t\treturn false;\n\t\t},\n\t\tformat : function( str, table, cell ) {\n\t\t\tvar c = table.config,\n\t\t\tp = ( !c.parserMetadataName ) ? 'sortValue' : c.parserMetadataName;\n\t\t\treturn $( cell ).metadata()[ p ];\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t/*\n\t\t██████ ██████ █████▄ █████▄ ▄████▄\n\t\t  ▄█▀  ██▄▄   ██▄▄██ ██▄▄██ ██▄▄██\n\t\t▄█▀    ██▀▀   ██▀▀██ ██▀▀█  ██▀▀██\n\t\t██████ ██████ █████▀ ██  ██ ██  ██\n\t\t*/\n\t// add default widgets\n\tts.addWidget({\n\t\tid : 'zebra',\n\t\tpriority : 90,\n\t\tformat : function( table, c, wo ) {\n\t\t\tvar $visibleRows, $row, count, isEven, tbodyIndex, rowIndex, len,\n\t\t\t\tchild = new RegExp( c.cssChildRow, 'i' ),\n\t\t\t\t$tbodies = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody:not(.' + c.cssInfoBlock + ')' ) );\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t// loop through the visible rows\n\t\t\t\tcount = 0;\n\t\t\t\t$visibleRows = $tbodies.eq( tbodyIndex ).children( 'tr:visible' ).not( c.selectorRemove );\n\t\t\t\tlen = $visibleRows.length;\n\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\n\t\t\t\t\t$row = $visibleRows.eq( rowIndex );\n\t\t\t\t\t// style child rows the same way the parent row was styled\n\t\t\t\t\tif ( !child.test( $row[ 0 ].className ) ) { count++; }\n\t\t\t\t\tisEven = ( count % 2 === 0 );\n\t\t\t\t\t$row\n\t\t\t\t\t\t.removeClass( wo.zebra[ isEven ? 1 : 0 ] )\n\t\t\t\t\t\t.addClass( wo.zebra[ isEven ? 0 : 1 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove : function( table, c, wo, refreshing ) {\n\t\t\tif ( refreshing ) { return; }\n\t\t\tvar tbodyIndex, $tbody,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\ttoRemove = ( wo.zebra || [ 'even', 'odd' ] ).join( ' ' );\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody\n\t\t\t\t$tbody.children().removeClass( toRemove );\n\t\t\t\tts.processTbody( table, $tbody, false ); // restore tbody\n\t\t\t}\n\t\t}\n\t});\n\n})( jQuery );\nreturn jQuery.tablesorter;}));"],"file":"jquery.tablesorter.min.js"}