1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 15:13:29 +01:00
invoiceninja/public/js/tablesorter.min.js.map
2019-01-30 22:25:07 +11:00

1 line
494 KiB
Plaintext
Raw Blame History

{"version":3,"sources":["jquery.tablesorter.combined.js","widget-grouping.min.js","widget-uitheme.min.js","widget-filter.min.js","widget-columnSelector.min.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","null","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","replace","Math","random","toString","slice","addClass","$headers","find","children","$tbodies","aria-live","aria-relevant","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","this","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","user-select","MozUserSelect","$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","hasCallback","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","A","C","E","I","o","O","ss","SS","u","U","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","document","fixedUrl","storage_fixedUrl","storage_group","storage_page","storage_storageType","storage_tableId","storage_useSessionStorage","storage","value","cookieIndex","cookies","hasStorage","values","storageType","charAt","session","useSessionStorage","url","page","location","pathname","setItem","removeItem","parseJSON","cookie","JSON","hasOwnProperty","stringify","setTime","toGMTString","themes","bootstrap","caption","active","hover","icons","iconSortNone","iconSortAsc","iconSortDesc","filterRow","footerRow","footerCells","even","odd","jui","wrapper","hdr","$icon","$tfoot","oldtheme","oldremove","oldIconRmv","hasOldTheme","themesAll","iconRmv","appliedTheme","uitheme_applied","$this","wrapInner","filter_initialized","one","style","display","columns_thead","columns_tfoot","tsf","tsfRegex","tscss","tskeyCodes","filterDisabled","filterRowHide","backSpace","escape","space","left","down","filter_cellFilter","filter_childRows","filter_childByColumn","filter_childWithSibs","filter_columnAnyMatch","filter_columnFilters","filter_cssFilter","filter_defaultAttrib","filter_defaultFilter","filter_excludeFilter","filter_external","filter_filteredRow","filter_filterLabel","filter_formatter","filter_functions","filter_hideEmpty","filter_hideFilters","filter_ignoreCase","filter_liveSearch","filter_matchType","input","select","filter_onlyAvail","filter_placeholder","search","filter_reset","filter_resetOnEsc","filter_saveFilters","filter_searchDelay","filter_searchFiltered","filter_selectSource","filter_selectSourceSeparator","filter_serversideFiltering","filter_startsWith","filter_useParsedData","show","undelegate","filtered","exact","operators","query","wild01","wild0More","quote","isNeg1","isNeg2","types","or","orTest","iFilter","orSplit","filterMatched","data2","nestedFilters","parseFilter","isMatch","processTypes","and","andTest","andSplit","matches","filter_regexCache","exec","isRegex","operTest","iExact","cachedValue","savedSearch","gtTest","gteTest","ltTest","lteTest","notMatch","notTest","anyMatch","rowArray","range","toTest","range1","range2","toSplit","wild","wildOrTest","wildTest","fuzzy","fuzzyTest","patternIndx","pattern","to","fxn","noSelect","processStr","prefix","suffix","lastSearch","filter_searchTimer","filter_initTimer","filter_formatterCount","filter_formatterInit","filter_anyColumnSelector","filter_multipleColumnSelector","alreadyFiltered","iQuery","igQuery","exactTest","buildRow","buildDefault","filter_$externalFilters","searching","lastCombinedFilter","click","delegate","buildSelect","bindSearch","hideFilters","filteredRows","completeInit","filterInitComplete","filters","setDefaults","setFilters","formatterUpdated","completed","findRows","processFilters","encode","mode","encodeURIComponent","decodeURIComponent","saved","$filters","getFilters","$filter","makeSelect","disabled","ffxn","cellFilter","buildFilter","appendTo","getColumnElm","parent","data-column","aria-label","internal","$ext","filter_$anyMatch","liveSearch","fallback","eventType","skipFirst","checkFilters","equalFilters","filter1","filter2","f1","f2","filterArray","currentFilters","hideFiltersCheck","prototype","String","activeElement","defaultFilter","mask","maskLen","getLatestSearch","$input","findRange","ignoreRanges","ranges","start","singles","$elements","multipleColumns","targets","excludeMatch","matchedOn","matchType","columnIndex","processRow","showRow","hasAnyMatchInput","anyMatchFlag","anyMatchFilter","cacheArray","rawArray","get","iAnyMatchFilter","noAnyMatch","childRowText","excludeFilter","defaultColFilter","functions","norm_rows","isChild","showParent","notFiltered","searchFiltered","injected","res","storedFilters","defaultAnyFilter","getOptionSource","onlyAvail","source","getOptions","processOptions","cts","parsedTxt","validColumn","direction","childLen","updating","t","option","currentValue","getRaw","$column","trigger","getStickyOffset","stickyHeaders_offset","height","sticky","stickyVis","stickyHide","stickyWrap","addHeaderResizeEvent","disable","checkSizes","triggerEvent","sizes","resize_flag","offsetWidth","offsetHeight","clearInterval","resize_timer","setInterval","stickyHeaders","stickyHeaders_appendTo","stickyHeaders_attachTo","stickyHeaders_xScroll","stickyHeaders_yScroll","stickyHeaders_filteredToTop","stickyHeaders_cloneId","stickyHeaders_addResizeEvent","stickyHeaders_includeCaption","stickyHeaders_zIndex","$stickyCells","$attach","$yScroll","$xScroll","$thead","stickyOffset","$nestedSticky","$sticky","nestedStickyTop","$stickyTable","clone","wrap","$stickyWrap","position","padding","visibility","zIndex","$stickyThead","laststate","setWidth","$orig","$clone","border","outerWidth","getComputedStyle","min-width","max-width","getLeftPosition","yWindow","offset","scrollLeft","resizeHeader","scrollSticky","resizing","scrollTop","isWindow","yScroll","attachTop","captionHeight","tableHeight","isVisible","state","needsUpdating","cssSettings","hide","margin","resizer","after","$td","scrollTo","focus","next","resizableContainer","resizableHandle","resizableNoSelect","resizableStorage","s","resizable","noResize","storedSizes","$parent","marginTop","resizable_vars","useStorage","$wrap","mouseXPosition","$next","overflow","resizableReset","tableWidth","fullWidth","setWidths","updateStoredSizes","$resizable_container","insertBefore","unselectable","bindings","$extra","$col","setHandlePosition","startPosition","$handles","handleCenter","floor","scrollerWrap","resizable_includeFooter","resizable_addLastColumn","checkVisibleColumns","toggleTextSelection","shiftKey","resizable_targetLast","nextAll","pageX","resizable_throttle","mouseMove","stopResize","allowClick","total","tar","leftEdge","resizable_widths","thisWidget","getStoredSortList","stored","sortListChanged","saveSort","g","grouping","number","r","ceil","separator","group_separator","word","letter","substring","getFullYear","findMonth","getMonth","getDate","findWeek","getDay","findTime","group_dateString","group_dateInvalid","group_months","group_week","group_time","am","pm","getHours","group_time24Hour","getMinutes","group_forceColumn","group_enforceSort","group_collapsible","group_collapsedGroup","group_collapsedGroups","groupClass","savedGroup","saveCurrentGrouping","findColumnGroups","processHeaders","group_complete","nextUntil","group_count","group_callback","group_saveGroups","group_collapsed","groupHeaderHTML","currentGroup","columnSelector_classHasSpan","groupIndex","startRow","endRow","insertGroupHeader","columnSelector","setUpColspan","group_formatter","first","on","siblings","group_saveReset","clearSavedGroups","group_checkbox","toLocaleString","off","N","d","h","m","v","f","w","S","D","M","z","_","F","R","T","queryAll","queryBreak","columnSelector_layout","$container","columnSelector_container","$style","prop","$breakpoints","isInitializing","setupSelector","columnSelector_mediaquery","setupBreakpoints","updateCols","refreshColumns","auto","states","updateAuto","updateBreakpoints","saveValues","adjustColspans","columnSelector_saveColumns","columnSelector_mediaqueryState","$wrapper","$checkbox","columnSelector_priority","columnSelector_columns","columnSelector_name","columnSelector_layoutCustomizer","columnSelector_cssChecked","checkChange","checked","change","columnSelector_maxVisible","columnSelector_minVisible","lastIndex","$auto","columnSelector_mediaqueryName","prependTo","$popup","columnSelector_updated","addSelectors","columnSelector_mediaqueryHidden","concat","columnSelector_maxPriorities","columnSelector_breakpoints","window_resize","attachTo","timer_resize"],"mappings":"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","file":"tablesorter.min.js","sourcesContent":["/*! tablesorter (FORK) - updated 2018-11-20 (v2.31.1)*/\n/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */\n(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery) {\n/*! TableSorter (FORK) v2.31.1 *//*\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.1',\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\t// save sortList before any sortAppend is added\n\t\t\t\tc.last.sortList = c.sortList;\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 );\n\n/*! Widget: storage - updated 2018-03-18 (v2.30.0) */\n/*global JSON:false */\n;(function ($, window, document) {\n\t'use strict';\n\n\tvar ts = $.tablesorter || {};\n\n\t// update defaults for validator; these values must be falsy!\n\t$.extend(true, ts.defaults, {\n\t\tfixedUrl: '',\n\t\twidgetOptions: {\n\t\t\tstorage_fixedUrl: '',\n\t\t\tstorage_group: '',\n\t\t\tstorage_page: '',\n\t\t\tstorage_storageType: '',\n\t\t\tstorage_tableId: '',\n\t\t\tstorage_useSessionStorage: ''\n\t\t}\n\t});\n\n\t// *** Store data in local storage, with a cookie fallback ***\n\t/* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json)\n\t if you need it, then include https://github.com/douglascrockford/JSON-js\n\n\t $.parseJSON is not available is jQuery versions older than 1.4.1, using older\n\t versions will only allow storing information for one page at a time\n\n\t // *** Save data (JSON format only) ***\n\t // val must be valid JSON... use http://jsonlint.com/ to ensure it is valid\n\t var val = { \"mywidget\" : \"data1\" }; // valid JSON uses double quotes\n\t // $.tablesorter.storage(table, key, val);\n\t $.tablesorter.storage(table, 'tablesorter-mywidget', val);\n\n\t // *** Get data: $.tablesorter.storage(table, key); ***\n\t v = $.tablesorter.storage(table, 'tablesorter-mywidget');\n\t // val may be empty, so also check for your data\n\t val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : '';\n\t alert(val); // 'data1' if saved, or '' if not\n\t*/\n\tts.storage = function(table, key, value, options) {\n\t\ttable = $(table)[0];\n\t\tvar cookieIndex, cookies, date,\n\t\t\thasStorage = false,\n\t\t\tvalues = {},\n\t\t\tc = table.config,\n\t\t\two = c && c.widgetOptions,\n\t\t\tdebug = ts.debug(c, 'storage'),\n\t\t\tstorageType = (\n\t\t\t\t( options && options.storageType ) || ( wo && wo.storage_storageType )\n\t\t\t).toString().charAt(0).toLowerCase(),\n\t\t\t// deprecating \"useSessionStorage\"; any storageType setting overrides it\n\t\t\tsession = storageType ? '' :\n\t\t\t\t( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ),\n\t\t\t$table = $(table),\n\t\t\t// id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId,\n\t\t\t// (4) table ID, then (5) table index\n\t\t\tid = options && options.id ||\n\t\t\t\t$table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') ||\n\t\t\t\two && wo.storage_tableId || table.id || $('.tablesorter').index( $table ),\n\t\t\t// url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl,\n\t\t\t// (4) table.config.fixedUrl (deprecated), then (5) window location path\n\t\t\turl = options && options.url ||\n\t\t\t\t$table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') ||\n\t\t\t\two && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname;\n\n\t\t// skip if using cookies\n\t\tif (storageType !== 'c') {\n\t\t\tstorageType = (storageType === 's' || session) ? 'sessionStorage' : 'localStorage';\n\t\t\t// https://gist.github.com/paulirish/5558557\n\t\t\tif (storageType in window) {\n\t\t\t\ttry {\n\t\t\t\t\twindow[storageType].setItem('_tmptest', 'temp');\n\t\t\t\t\thasStorage = true;\n\t\t\t\t\twindow[storageType].removeItem('_tmptest');\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn( storageType + ' is not supported in this browser' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (debug) {\n\t\t\tconsole.log('Storage >> Using', hasStorage ? storageType : 'cookies');\n\t\t}\n\t\t// *** get value ***\n\t\tif ($.parseJSON) {\n\t\t\tif (hasStorage) {\n\t\t\t\tvalues = $.parseJSON( window[storageType][key] || 'null' ) || {};\n\t\t\t} else {\n\t\t\t\t// old browser, using cookies\n\t\t\t\tcookies = document.cookie.split(/[;\\s|=]/);\n\t\t\t\t// add one to get from the key to the value\n\t\t\t\tcookieIndex = $.inArray(key, cookies) + 1;\n\t\t\t\tvalues = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {};\n\t\t\t}\n\t\t}\n\t\t// allow value to be an empty string too\n\t\tif (typeof value !== 'undefined' && window.JSON && JSON.hasOwnProperty('stringify')) {\n\t\t\t// add unique identifiers = url pathname > table ID/index on page > data\n\t\t\tif (!values[url]) {\n\t\t\t\tvalues[url] = {};\n\t\t\t}\n\t\t\tvalues[url][id] = value;\n\t\t\t// *** set value ***\n\t\t\tif (hasStorage) {\n\t\t\t\twindow[storageType][key] = JSON.stringify(values);\n\t\t\t} else {\n\t\t\t\tdate = new Date();\n\t\t\t\tdate.setTime(date.getTime() + (31536e+6)); // 365 days\n\t\t\t\tdocument.cookie = key + '=' + (JSON.stringify(values)).replace(/\\\"/g, '\\\"') + '; expires=' + date.toGMTString() + '; path=/';\n\t\t\t}\n\t\t} else {\n\t\t\treturn values && values[url] ? values[url][id] : '';\n\t\t}\n\t};\n\n})(jQuery, window, document);\n\n/*! Widget: uitheme - updated 2018-03-18 (v2.30.0) */\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tts.themes = {\n\t\t'bootstrap' : {\n\t\t\ttable : 'table table-bordered table-striped',\n\t\t\tcaption : 'caption',\n\t\t\t// header class names\n\t\t\theader : 'bootstrap-header', // give the header a gradient background (theme.bootstrap_2.css)\n\t\t\tsortNone : '',\n\t\t\tsortAsc : '',\n\t\t\tsortDesc : '',\n\t\t\tactive : '', // applied when column is sorted\n\t\t\thover : '', // custom css required - a defined bootstrap style may not override other classes\n\t\t\t// icon class names\n\t\t\ticons : '', // add 'bootstrap-icon-white' to make them white; this icon class is added to the <i> in the header\n\t\t\ticonSortNone : 'bootstrap-icon-unsorted', // class name added to icon when column is not sorted\n\t\t\ticonSortAsc : 'glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort\n\t\t\ticonSortDesc : 'glyphicon glyphicon-chevron-down', // class name added to icon when column has descending sort\n\t\t\tfilterRow : '', // filter row class\n\t\t\tfooterRow : '',\n\t\t\tfooterCells : '',\n\t\t\teven : '', // even row zebra striping\n\t\t\todd : '' // odd row zebra striping\n\t\t},\n\t\t'jui' : {\n\t\t\ttable : 'ui-widget ui-widget-content ui-corner-all', // table classes\n\t\t\tcaption : 'ui-widget-content',\n\t\t\t// header class names\n\t\t\theader : 'ui-widget-header ui-corner-all ui-state-default', // header classes\n\t\t\tsortNone : '',\n\t\t\tsortAsc : '',\n\t\t\tsortDesc : '',\n\t\t\tactive : 'ui-state-active', // applied when column is sorted\n\t\t\thover : 'ui-state-hover', // hover class\n\t\t\t// icon class names\n\t\t\ticons : 'ui-icon', // icon class added to the <i> in the header\n\t\t\ticonSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted\n\t\t\ticonSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort\n\t\t\ticonSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort\n\t\t\tfilterRow : '',\n\t\t\tfooterRow : '',\n\t\t\tfooterCells : '',\n\t\t\teven : 'ui-widget-content', // even row zebra striping\n\t\t\todd : 'ui-state-default' // odd row zebra striping\n\t\t}\n\t};\n\n\t$.extend(ts.css, {\n\t\twrapper : 'tablesorter-wrapper' // ui theme & resizable\n\t});\n\n\tts.addWidget({\n\t\tid: 'uitheme',\n\t\tpriority: 10,\n\t\tformat: function(table, c, wo) {\n\t\t\tvar i, tmp, hdr, icon, time, $header, $icon, $tfoot, $h, oldtheme, oldremove, oldIconRmv, hasOldTheme,\n\t\t\t\tthemesAll = ts.themes,\n\t\t\t\t$table = c.$table.add( $( c.namespace + '_extra_table' ) ),\n\t\t\t\t$headers = c.$headers.add( $( c.namespace + '_extra_headers' ) ),\n\t\t\t\ttheme = c.theme || 'jui',\n\t\t\t\tthemes = themesAll[theme] || {},\n\t\t\t\tremove = $.trim( [ themes.sortNone, themes.sortDesc, themes.sortAsc, themes.active ].join( ' ' ) ),\n\t\t\t\ticonRmv = $.trim( [ themes.iconSortNone, themes.iconSortDesc, themes.iconSortAsc ].join( ' ' ) ),\n\t\t\t\tdebug = ts.debug(c, 'uitheme');\n\t\t\tif (debug) { time = new Date(); }\n\t\t\t// initialization code - run once\n\t\t\tif (!$table.hasClass('tablesorter-' + theme) || c.theme !== c.appliedTheme || !wo.uitheme_applied) {\n\t\t\t\two.uitheme_applied = true;\n\t\t\t\toldtheme = themesAll[c.appliedTheme] || {};\n\t\t\t\thasOldTheme = !$.isEmptyObject(oldtheme);\n\t\t\t\toldremove = hasOldTheme ? [ oldtheme.sortNone, oldtheme.sortDesc, oldtheme.sortAsc, oldtheme.active ].join( ' ' ) : '';\n\t\t\t\toldIconRmv = hasOldTheme ? [ oldtheme.iconSortNone, oldtheme.iconSortDesc, oldtheme.iconSortAsc ].join( ' ' ) : '';\n\t\t\t\tif (hasOldTheme) {\n\t\t\t\t\two.zebra[0] = $.trim( ' ' + wo.zebra[0].replace(' ' + oldtheme.even, '') );\n\t\t\t\t\two.zebra[1] = $.trim( ' ' + wo.zebra[1].replace(' ' + oldtheme.odd, '') );\n\t\t\t\t\tc.$tbodies.children().removeClass( [ oldtheme.even, oldtheme.odd ].join(' ') );\n\t\t\t\t}\n\t\t\t\t// update zebra stripes\n\t\t\t\tif (themes.even) { wo.zebra[0] += ' ' + themes.even; }\n\t\t\t\tif (themes.odd) { wo.zebra[1] += ' ' + themes.odd; }\n\t\t\t\t// add caption style\n\t\t\t\t$table.children('caption')\n\t\t\t\t\t.removeClass(oldtheme.caption || '')\n\t\t\t\t\t.addClass(themes.caption);\n\t\t\t\t// add table/footer class names\n\t\t\t\t$tfoot = $table\n\t\t\t\t\t// remove other selected themes\n\t\t\t\t\t.removeClass( (c.appliedTheme ? 'tablesorter-' + (c.appliedTheme || '') : '') + ' ' + (oldtheme.table || '') )\n\t\t\t\t\t.addClass('tablesorter-' + theme + ' ' + (themes.table || '')) // add theme widget class name\n\t\t\t\t\t.children('tfoot');\n\t\t\t\tc.appliedTheme = c.theme;\n\n\t\t\t\tif ($tfoot.length) {\n\t\t\t\t\t$tfoot\n\t\t\t\t\t\t// if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed\n\t\t\t\t\t\t.children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow)\n\t\t\t\t\t\t.children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells);\n\t\t\t\t}\n\t\t\t\t// update header classes\n\t\t\t\t$headers\n\t\t\t\t\t.removeClass( (hasOldTheme ? [ oldtheme.header, oldtheme.hover, oldremove ].join(' ') : '') || '' )\n\t\t\t\t\t.addClass(themes.header)\n\t\t\t\t\t.not('.sorter-false')\n\t\t\t\t\t.unbind('mouseenter.tsuitheme mouseleave.tsuitheme')\n\t\t\t\t\t.bind('mouseenter.tsuitheme mouseleave.tsuitheme', function(event) {\n\t\t\t\t\t\t// toggleClass with switch added in jQuery 1.3\n\t\t\t\t\t\t$(this)[ event.type === 'mouseenter' ? 'addClass' : 'removeClass' ](themes.hover || '');\n\t\t\t\t\t});\n\n\t\t\t\t$headers.each(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\tif (!$this.find('.' + ts.css.wrapper).length) {\n\t\t\t\t\t\t// Firefox needs this inner div to position the icon & resizer correctly\n\t\t\t\t\t\t$this.wrapInner('<div class=\"' + ts.css.wrapper + '\" style=\"position:relative;height:100%;width:100%\"></div>');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (c.cssIcon) {\n\t\t\t\t\t// if c.cssIcon is '', then no <i> is added to the header\n\t\t\t\t\t$headers\n\t\t\t\t\t\t.find('.' + ts.css.icon)\n\t\t\t\t\t\t.removeClass(hasOldTheme ? [ oldtheme.icons, oldIconRmv ].join(' ') : '')\n\t\t\t\t\t\t.addClass(themes.icons || '');\n\t\t\t\t}\n\t\t\t\t// filter widget initializes after uitheme\n\t\t\t\tif (ts.hasWidget( c.table, 'filter' )) {\n\t\t\t\t\ttmp = function() {\n\t\t\t\t\t\t$table.children('thead').children('.' + ts.css.filterRow)\n\t\t\t\t\t\t\t.removeClass(hasOldTheme ? oldtheme.filterRow || '' : '')\n\t\t\t\t\t\t\t.addClass(themes.filterRow || '');\n\t\t\t\t\t};\n\t\t\t\t\tif (wo.filter_initialized) {\n\t\t\t\t\t\ttmp();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$table.one('filterInit', function() {\n\t\t\t\t\t\t\ttmp();\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\tfor (i = 0; i < c.columns; i++) {\n\t\t\t\t$header = c.$headers\n\t\t\t\t\t.add($(c.namespace + '_extra_headers'))\n\t\t\t\t\t.not('.sorter-false')\n\t\t\t\t\t.filter('[data-column=\"' + i + '\"]');\n\t\t\t\t$icon = (ts.css.icon) ? $header.find('.' + ts.css.icon) : $();\n\t\t\t\t$h = $headers.not('.sorter-false').filter('[data-column=\"' + i + '\"]:last');\n\t\t\t\tif ($h.length) {\n\t\t\t\t\t$header.removeClass(remove);\n\t\t\t\t\t$icon.removeClass(iconRmv);\n\t\t\t\t\tif ($h[0].sortDisabled) {\n\t\t\t\t\t\t// no sort arrows for disabled columns!\n\t\t\t\t\t\t$icon.removeClass(themes.icons || '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\thdr = themes.sortNone;\n\t\t\t\t\t\ticon = themes.iconSortNone;\n\t\t\t\t\t\tif ($h.hasClass(ts.css.sortAsc)) {\n\t\t\t\t\t\t\thdr = [ themes.sortAsc, themes.active ].join(' ');\n\t\t\t\t\t\t\ticon = themes.iconSortAsc;\n\t\t\t\t\t\t} else if ($h.hasClass(ts.css.sortDesc)) {\n\t\t\t\t\t\t\thdr = [ themes.sortDesc, themes.active ].join(' ');\n\t\t\t\t\t\t\ticon = themes.iconSortDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$header.addClass(hdr);\n\t\t\t\t\t\t$icon.addClass(icon || '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (debug) {\n\t\t\t\tconsole.log('uitheme >> Applied ' + theme + ' theme' + ts.benchmark(time));\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c, wo, refreshing) {\n\t\t\tif (!wo.uitheme_applied) { return; }\n\t\t\tvar $table = c.$table,\n\t\t\t\ttheme = c.appliedTheme || 'jui',\n\t\t\t\tthemes = ts.themes[ theme ] || ts.themes.jui,\n\t\t\t\t$headers = $table.children('thead').children(),\n\t\t\t\tremove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,\n\t\t\t\ticonRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;\n\t\t\t$table.removeClass('tablesorter-' + theme + ' ' + themes.table);\n\t\t\two.uitheme_applied = false;\n\t\t\tif (refreshing) { return; }\n\t\t\t$table.find(ts.css.header).removeClass(themes.header);\n\t\t\t$headers\n\t\t\t\t.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover\n\t\t\t\t.removeClass(themes.hover + ' ' + remove + ' ' + themes.active)\n\t\t\t\t.filter('.' + ts.css.filterRow)\n\t\t\t\t.removeClass(themes.filterRow);\n\t\t\t$headers.find('.' + ts.css.icon).removeClass(themes.icons + ' ' + iconRmv);\n\t\t}\n\t});\n\n})(jQuery);\n\n/*! Widget: columns - updated 5/24/2017 (v2.28.11) */\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tts.addWidget({\n\t\tid: 'columns',\n\t\tpriority: 65,\n\t\toptions : {\n\t\t\tcolumns : [ 'primary', 'secondary', 'tertiary' ]\n\t\t},\n\t\tformat: function(table, c, wo) {\n\t\t\tvar $tbody, tbodyIndex, $rows, rows, $row, $cells, remove, indx,\n\t\t\t$table = c.$table,\n\t\t\t$tbodies = c.$tbodies,\n\t\t\tsortList = c.sortList,\n\t\t\tlen = sortList.length,\n\t\t\t// removed c.widgetColumns support\n\t\t\tcss = wo && wo.columns || [ 'primary', 'secondary', 'tertiary' ],\n\t\t\tlast = css.length - 1;\n\t\t\tremove = css.join(' ');\n\t\t\t// check if there is a sort (on initialization there may not be one)\n\t\t\tfor (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // detach tbody\n\t\t\t\t$rows = $tbody.children('tr');\n\t\t\t\t// loop through the visible rows\n\t\t\t\t$rows.each(function() {\n\t\t\t\t\t$row = $(this);\n\t\t\t\t\tif (this.style.display !== 'none') {\n\t\t\t\t\t\t// remove all columns class names\n\t\t\t\t\t\t$cells = $row.children().removeClass(remove);\n\t\t\t\t\t\t// add appropriate column class names\n\t\t\t\t\t\tif (sortList && sortList[0]) {\n\t\t\t\t\t\t\t// primary sort column class\n\t\t\t\t\t\t\t$cells.eq(sortList[0][0]).addClass(css[0]);\n\t\t\t\t\t\t\tif (len > 1) {\n\t\t\t\t\t\t\t\tfor (indx = 1; indx < len; indx++) {\n\t\t\t\t\t\t\t\t\t// secondary, tertiary, etc sort column classes\n\t\t\t\t\t\t\t\t\t$cells.eq(sortList[indx][0]).addClass( css[indx] || css[last] );\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}\n\t\t\t\t});\n\t\t\t\tts.processTbody(table, $tbody, false);\n\t\t\t}\n\t\t\t// add classes to thead and tfoot\n\t\t\trows = wo.columns_thead !== false ? [ 'thead tr' ] : [];\n\t\t\tif (wo.columns_tfoot !== false) {\n\t\t\t\trows.push('tfoot tr');\n\t\t\t}\n\t\t\tif (rows.length) {\n\t\t\t\t$rows = $table.find( rows.join(',') ).children().removeClass(remove);\n\t\t\t\tif (len) {\n\t\t\t\t\tfor (indx = 0; indx < len; indx++) {\n\t\t\t\t\t\t// add primary. secondary, tertiary, etc sort column classes\n\t\t\t\t\t\t$rows.filter('[data-column=\"' + sortList[indx][0] + '\"]').addClass(css[indx] || css[last]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c, wo) {\n\t\t\tvar tbodyIndex, $tbody,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\tremove = (wo.columns || [ 'primary', 'secondary', 'tertiary' ]).join(' ');\n\t\t\tc.$headers.removeClass(remove);\n\t\t\tc.$table.children('tfoot').children('tr').children('th, td').removeClass(remove);\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('tr').each(function() {\n\t\t\t\t\t$(this).children().removeClass(remove);\n\t\t\t\t});\n\t\t\t\tts.processTbody(table, $tbody, false); // restore tbody\n\t\t\t}\n\t\t}\n\t});\n\n})(jQuery);\n\n/*! Widget: filter - updated 2018-03-18 (v2.30.0) *//*\n * Requires tablesorter v2.8+ and jQuery 1.7+\n * by Rob Garrison\n */\n;( function ( $ ) {\n\t'use strict';\n\tvar tsf, tsfRegex,\n\t\tts = $.tablesorter || {},\n\t\ttscss = ts.css,\n\t\ttskeyCodes = ts.keyCodes;\n\n\t$.extend( tscss, {\n\t\tfilterRow : 'tablesorter-filter-row',\n\t\tfilter : 'tablesorter-filter',\n\t\tfilterDisabled : 'disabled',\n\t\tfilterRowHide : 'hideme'\n\t});\n\n\t$.extend( tskeyCodes, {\n\t\tbackSpace : 8,\n\t\tescape : 27,\n\t\tspace : 32,\n\t\tleft : 37,\n\t\tdown : 40\n\t});\n\n\tts.addWidget({\n\t\tid: 'filter',\n\t\tpriority: 50,\n\t\toptions : {\n\t\t\tfilter_cellFilter : '', // css class name added to the filter cell ( string or array )\n\t\t\tfilter_childRows : false, // if true, filter includes child row content in the search\n\t\t\tfilter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped\n\t\t\tfilter_childWithSibs : true, // if true, include matching child row siblings\n\t\t\tfilter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query )\n\t\t\tfilter_columnFilters : true, // if true, a filter will be added to the top of each table column\n\t\t\tfilter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added )\n\t\t\tfilter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value\n\t\t\tfilter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND.\n\t\t\tfilter_excludeFilter : {}, // filters to exclude, per column\n\t\t\tfilter_external : '', // jQuery selector string ( or jQuery object ) of external filters\n\t\t\tfilter_filteredRow : 'filtered', // class added to filtered rows; define in css with \"display:none\" to hide the filtered-out rows\n\t\t\tfilter_filterLabel : 'Filter \"{{label}}\" column by...', // Aria-label added to filter input/select; see #1495\n\t\t\tfilter_formatter : null, // add custom filter elements to the filter row\n\t\t\tfilter_functions : null, // add custom filter functions using this option\n\t\t\tfilter_hideEmpty : true, // hide filter row when table is empty\n\t\t\tfilter_hideFilters : false, // collapse filter row when mouse leaves the area\n\t\t\tfilter_ignoreCase : true, // if true, make all searches case-insensitive\n\t\t\tfilter_liveSearch : true, // if true, search column content while the user types ( with a delay )\n\t\t\tfilter_matchType : { 'input': 'exact', 'select': 'exact' }, // global query settings ('exact' or 'match'); overridden by \"filter-match\" or \"filter-exact\" class\n\t\t\tfilter_onlyAvail : 'filter-onlyAvail', // a header with a select dropdown & this class name will only show available ( visible ) options within the drop down\n\t\t\tfilter_placeholder : { search : '', select : '' }, // default placeholder text ( overridden by any header 'data-placeholder' setting )\n\t\t\tfilter_reset : null, // jQuery selector string of an element used to reset the filters\n\t\t\tfilter_resetOnEsc : true, // Reset filter input when the user presses escape - normalized across browsers\n\t\t\tfilter_saveFilters : false, // Use the $.tablesorter.storage utility to save the most recent filters\n\t\t\tfilter_searchDelay : 300, // typing delay in milliseconds before starting a search\n\t\t\tfilter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true\n\t\t\tfilter_selectSource : null, // include a function to return an array of values to be added to the column filter select\n\t\t\tfilter_selectSourceSeparator : '|', // filter_selectSource array text left of the separator is added to the option value, right into the option text\n\t\t\tfilter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used.\n\t\t\tfilter_startsWith : false, // if true, filter start from the beginning of the cell contents\n\t\t\tfilter_useParsedData : false // filter all data using parsed content\n\t\t},\n\t\tformat: function( table, c, wo ) {\n\t\t\tif ( !c.$table.hasClass( 'hasFilters' ) ) {\n\t\t\t\ttsf.init( table, c, wo );\n\t\t\t}\n\t\t},\n\t\tremove: function( table, c, wo, refreshing ) {\n\t\t\tvar tbodyIndex, $tbody,\n\t\t\t\t$table = c.$table,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\tevents = (\n\t\t\t\t\t'addRows updateCell update updateRows updateComplete appendCache filterReset ' +\n\t\t\t\t\t'filterAndSortReset filterFomatterUpdate filterEnd search stickyHeadersInit '\n\t\t\t\t).split( ' ' ).join( c.namespace + 'filter ' );\n\t\t\t$table\n\t\t\t\t.removeClass( 'hasFilters' )\n\t\t\t\t// add filter namespace to all BUT search\n\t\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) )\n\t\t\t\t// remove the filter row even if refreshing, because the column might have been moved\n\t\t\t\t.find( '.' + tscss.filterRow ).remove();\n\t\t\two.filter_initialized = false;\n\t\t\tif ( refreshing ) { return; }\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( wo.filter_filteredRow ).show();\n\t\t\t\tts.processTbody( table, $tbody, false ); // restore tbody\n\t\t\t}\n\t\t\tif ( wo.filter_reset ) {\n\t\t\t\t$( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' );\n\t\t\t}\n\t\t}\n\t});\n\n\ttsf = ts.filter = {\n\n\t\t// regex used in filter 'check' functions - not for general use and not documented\n\t\tregex: {\n\t\t\tregex : /^\\/((?:\\\\\\/|[^\\/])+)\\/([migyu]{0,5})?$/, // regex to test for regex\n\t\t\tchild : /tablesorter-childRow/, // child row class name; this gets updated in the script\n\t\t\tfiltered : /filtered/, // filtered (hidden) row class name; updated in the script\n\t\t\ttype : /undefined|number/, // check type\n\t\t\texact : /(^[\\\"\\'=]+)|([\\\"\\'=]+$)/g, // exact match (allow '==')\n\t\t\toperators : /[<>=]/g, // replace operators\n\t\t\tquery : '(q|query)', // replace filter queries\n\t\t\twild01 : /\\?/g, // wild card match 0 or 1\n\t\t\twild0More : /\\*/g, // wild care match 0 or more\n\t\t\tquote : /\\\"/g,\n\t\t\tisNeg1 : /(>=?\\s*-\\d)/,\n\t\t\tisNeg2 : /(<=?\\s*\\d)/\n\t\t},\n\t\t// function( c, data ) { }\n\t\t// c = table.config\n\t\t// data.$row = jQuery object of the row currently being processed\n\t\t// data.$cells = jQuery object of all cells within the current row\n\t\t// data.filters = array of filters for all columns ( some may be undefined )\n\t\t// data.filter = filter for the current column\n\t\t// data.iFilter = same as data.filter, except lowercase ( if wo.filter_ignoreCase is true )\n\t\t// data.exact = table cell text ( or parsed data if column parser enabled; may be a number & not a string )\n\t\t// data.iExact = same as data.exact, except lowercase ( if wo.filter_ignoreCase is true; may be a number & not a string )\n\t\t// data.cache = table cell text from cache, so it has been parsed ( & in all lower case if c.ignoreCase is true )\n\t\t// data.cacheArray = An array of parsed content from each table cell in the row being processed\n\t\t// data.index = column index; table = table element ( DOM )\n\t\t// data.parsed = array ( by column ) of boolean values ( from filter_useParsedData or 'filter-parsed' class )\n\t\ttypes: {\n\t\t\tor : function( c, data, vars ) {\n\t\t\t\t// look for \"|\", but not if it is inside of a regular expression\n\t\t\t\tif ( ( tsfRegex.orTest.test( data.iFilter ) || tsfRegex.orSplit.test( data.filter ) ) &&\n\t\t\t\t\t// this test for regex has potential to slow down the overall search\n\t\t\t\t\t!tsfRegex.regex.test( data.filter ) ) {\n\t\t\t\t\tvar indx, filterMatched, query, regex,\n\t\t\t\t\t\t// duplicate data but split filter\n\t\t\t\t\t\tdata2 = $.extend( {}, data ),\n\t\t\t\t\t\tfilter = data.filter.split( tsfRegex.orSplit ),\n\t\t\t\t\t\tiFilter = data.iFilter.split( tsfRegex.orSplit ),\n\t\t\t\t\t\tlen = filter.length;\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\t\tdata2.nestedFilters = true;\n\t\t\t\t\t\tdata2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' );\n\t\t\t\t\t\tdata2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' );\n\t\t\t\t\t\tquery = '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// use try/catch, because query may not be a valid regex if \"|\" is contained within a partial regex search,\n\t\t\t\t\t\t\t// e.g \"/(Alex|Aar\" -> Uncaught SyntaxError: Invalid regular expression: /(/(Alex)/: Unterminated group\n\t\t\t\t\t\t\tregex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' );\n\t\t\t\t\t\t\t// filterMatched = data2.filter === '' && indx > 0 ? true\n\t\t\t\t\t\t\t// look for an exact match with the 'or' unless the 'filter-match' class is found\n\t\t\t\t\t\t\tfilterMatched = regex.test( data2.exact ) || tsf.processTypes( c, data2, vars );\n\t\t\t\t\t\t\tif ( filterMatched ) {\n\t\t\t\t\t\t\t\treturn filterMatched;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// may be null from processing types\n\t\t\t\t\treturn filterMatched || false;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for an AND or && operator ( logical and )\n\t\t\tand : function( c, data, vars ) {\n\t\t\t\tif ( tsfRegex.andTest.test( data.filter ) ) {\n\t\t\t\t\tvar indx, filterMatched, result, query, regex,\n\t\t\t\t\t\t// duplicate data but split filter\n\t\t\t\t\t\tdata2 = $.extend( {}, data ),\n\t\t\t\t\t\tfilter = data.filter.split( tsfRegex.andSplit ),\n\t\t\t\t\t\tiFilter = data.iFilter.split( tsfRegex.andSplit ),\n\t\t\t\t\t\tlen = filter.length;\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\t\tdata2.nestedFilters = true;\n\t\t\t\t\t\tdata2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' );\n\t\t\t\t\t\tdata2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' );\n\t\t\t\t\t\tquery = ( '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')' )\n\t\t\t\t\t\t\t// replace wild cards since /(a*)/i will match anything\n\t\t\t\t\t\t\t.replace( tsfRegex.wild01, '\\\\S{1}' ).replace( tsfRegex.wild0More, '\\\\S*' );\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// use try/catch just in case RegExp is invalid\n\t\t\t\t\t\t\tregex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' );\n\t\t\t\t\t\t\t// look for an exact match with the 'and' unless the 'filter-match' class is found\n\t\t\t\t\t\t\tresult = ( regex.test( data2.exact ) || tsf.processTypes( c, data2, vars ) );\n\t\t\t\t\t\t\tif ( indx === 0 ) {\n\t\t\t\t\t\t\t\tfilterMatched = result;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfilterMatched = filterMatched && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// may be null from processing types\n\t\t\t\t\treturn filterMatched || false;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for regex\n\t\t\tregex: function( c, data ) {\n\t\t\t\tif ( tsfRegex.regex.test( data.filter ) ) {\n\t\t\t\t\tvar matches,\n\t\t\t\t\t\t// cache regex per column for optimal speed\n\t\t\t\t\t\tregex = data.filter_regexCache[ data.index ] || tsfRegex.regex.exec( data.filter ),\n\t\t\t\t\t\tisRegex = regex instanceof RegExp;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !isRegex ) {\n\t\t\t\t\t\t\t// force case insensitive search if ignoreCase option set?\n\t\t\t\t\t\t\t// if ( c.ignoreCase && !regex[2] ) { regex[2] = 'i'; }\n\t\t\t\t\t\t\tdata.filter_regexCache[ data.index ] = regex = new RegExp( regex[1], regex[2] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatches = regex.test( data.exact );\n\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\tmatches = false;\n\t\t\t\t\t}\n\t\t\t\t\treturn matches;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for operators >, >=, < or <=\n\t\t\toperators: function( c, data ) {\n\t\t\t\t// ignore empty strings... because '' < 10 is true\n\t\t\t\tif ( tsfRegex.operTest.test( data.iFilter ) && data.iExact !== '' ) {\n\t\t\t\t\tvar cachedValue, result, txt,\n\t\t\t\t\t\ttable = c.table,\n\t\t\t\t\t\tparsed = data.parsed[ data.index ],\n\t\t\t\t\t\tquery = ts.formatFloat( data.iFilter.replace( tsfRegex.operators, '' ), table ),\n\t\t\t\t\t\tparser = c.parsers[ data.index ] || {},\n\t\t\t\t\t\tsavedSearch = query;\n\t\t\t\t\t// parse filter value in case we're comparing numbers ( dates )\n\t\t\t\t\tif ( parsed || parser.type === 'numeric' ) {\n\t\t\t\t\t\ttxt = $.trim( '' + data.iFilter.replace( tsfRegex.operators, '' ) );\n\t\t\t\t\t\tresult = tsf.parseFilter( c, txt, data, true );\n\t\t\t\t\t\tquery = ( typeof result === 'number' && result !== '' && !isNaN( result ) ) ? result : query;\n\t\t\t\t\t}\n\t\t\t\t\t// iExact may be numeric - see issue #149;\n\t\t\t\t\t// check if cached is defined, because sometimes j goes out of range? ( numeric columns )\n\t\t\t\t\tif ( ( parsed || parser.type === 'numeric' ) && !isNaN( query ) &&\n\t\t\t\t\t\ttypeof data.cache !== 'undefined' ) {\n\t\t\t\t\t\tcachedValue = data.cache;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttxt = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact;\n\t\t\t\t\t\tcachedValue = ts.formatFloat( txt, table );\n\t\t\t\t\t}\n\t\t\t\t\tif ( tsfRegex.gtTest.test( data.iFilter ) ) {\n\t\t\t\t\t\tresult = tsfRegex.gteTest.test( data.iFilter ) ? cachedValue >= query : cachedValue > query;\n\t\t\t\t\t} else if ( tsfRegex.ltTest.test( data.iFilter ) ) {\n\t\t\t\t\t\tresult = tsfRegex.lteTest.test( data.iFilter ) ? cachedValue <= query : cachedValue < query;\n\t\t\t\t\t}\n\t\t\t\t\t// keep showing all rows if nothing follows the operator\n\t\t\t\t\tif ( !result && savedSearch === '' ) {\n\t\t\t\t\t\tresult = true;\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for a not match\n\t\t\tnotMatch: function( c, data ) {\n\t\t\t\tif ( tsfRegex.notTest.test( data.iFilter ) ) {\n\t\t\t\t\tvar indx,\n\t\t\t\t\t\ttxt = data.iFilter.replace( '!', '' ),\n\t\t\t\t\t\tfilter = tsf.parseFilter( c, txt, data ) || '';\n\t\t\t\t\tif ( tsfRegex.exact.test( filter ) ) {\n\t\t\t\t\t\t// look for exact not matches - see #628\n\t\t\t\t\t\tfilter = filter.replace( tsfRegex.exact, '' );\n\t\t\t\t\t\treturn filter === '' ? true : $.trim( filter ) !== data.iExact;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindx = data.iExact.search( $.trim( filter ) );\n\t\t\t\t\t\treturn filter === '' ? true :\n\t\t\t\t\t\t\t// return true if not found\n\t\t\t\t\t\t\tdata.anyMatch ? indx < 0 :\n\t\t\t\t\t\t\t// return false if found\n\t\t\t\t\t\t\t!( c.widgetOptions.filter_startsWith ? indx === 0 : indx >= 0 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for quotes or equals to get an exact match; ignore type since iExact could be numeric\n\t\t\texact: function( c, data ) {\n\t\t\t\t/*jshint eqeqeq:false */\n\t\t\t\tif ( tsfRegex.exact.test( data.iFilter ) ) {\n\t\t\t\t\tvar txt = data.iFilter.replace( tsfRegex.exact, '' ),\n\t\t\t\t\t\tfilter = tsf.parseFilter( c, txt, data ) || '';\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\treturn data.anyMatch ? $.inArray( filter, data.rowArray ) >= 0 : filter == data.iExact;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for a range ( using ' to ' or ' - ' ) - see issue #166; thanks matzhu!\n\t\t\trange : function( c, data ) {\n\t\t\t\tif ( tsfRegex.toTest.test( data.iFilter ) ) {\n\t\t\t\t\tvar result, tmp, range1, range2,\n\t\t\t\t\t\ttable = c.table,\n\t\t\t\t\t\tindex = data.index,\n\t\t\t\t\t\tparsed = data.parsed[index],\n\t\t\t\t\t\t// make sure the dash is for a range and not indicating a negative number\n\t\t\t\t\t\tquery = data.iFilter.split( tsfRegex.toSplit );\n\n\t\t\t\t\ttmp = query[0].replace( ts.regex.nondigit, '' ) || '';\n\t\t\t\t\trange1 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table );\n\t\t\t\t\ttmp = query[1].replace( ts.regex.nondigit, '' ) || '';\n\t\t\t\t\trange2 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table );\n\t\t\t\t\t// parse filter value in case we're comparing numbers ( dates )\n\t\t\t\t\tif ( parsed || c.parsers[ index ].type === 'numeric' ) {\n\t\t\t\t\t\tresult = c.parsers[ index ].format( '' + query[0], table, c.$headers.eq( index ), index );\n\t\t\t\t\t\trange1 = ( result !== '' && !isNaN( result ) ) ? result : range1;\n\t\t\t\t\t\tresult = c.parsers[ index ].format( '' + query[1], table, c.$headers.eq( index ), index );\n\t\t\t\t\t\trange2 = ( result !== '' && !isNaN( result ) ) ? result : range2;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( parsed || c.parsers[ index ].type === 'numeric' ) && !isNaN( range1 ) && !isNaN( range2 ) ) {\n\t\t\t\t\t\tresult = data.cache;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmp = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact;\n\t\t\t\t\t\tresult = ts.formatFloat( tmp, table );\n\t\t\t\t\t}\n\t\t\t\t\tif ( range1 > range2 ) {\n\t\t\t\t\t\ttmp = range1; range1 = range2; range2 = tmp; // swap\n\t\t\t\t\t}\n\t\t\t\t\treturn ( result >= range1 && result <= range2 ) || ( range1 === '' || range2 === '' );\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// Look for wild card: ? = single, * = multiple, or | = logical OR\n\t\t\twild : function( c, data ) {\n\t\t\t\tif ( tsfRegex.wildOrTest.test( data.iFilter ) ) {\n\t\t\t\t\tvar query = '' + ( tsf.parseFilter( c, data.iFilter, data ) || '' );\n\t\t\t\t\t// look for an exact match with the 'or' unless the 'filter-match' class is found\n\t\t\t\t\tif ( !tsfRegex.wildTest.test( query ) && data.nestedFilters ) {\n\t\t\t\t\t\tquery = data.isMatch ? query : '^(' + query + ')$';\n\t\t\t\t\t}\n\t\t\t\t\t// parsing the filter may not work properly when using wildcards =/\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn new RegExp(\n\t\t\t\t\t\t\tquery.replace( tsfRegex.wild01, '\\\\S{1}' ).replace( tsfRegex.wild0More, '\\\\S*' ),\n\t\t\t\t\t\t\tc.widgetOptions.filter_ignoreCase ? 'i' : ''\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.test( data.exact );\n\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t// fuzzy text search; modified from https://github.com/mattyork/fuzzy ( MIT license )\n\t\t\tfuzzy: function( c, data ) {\n\t\t\t\tif ( tsfRegex.fuzzyTest.test( data.iFilter ) ) {\n\t\t\t\t\tvar indx,\n\t\t\t\t\t\tpatternIndx = 0,\n\t\t\t\t\t\tlen = data.iExact.length,\n\t\t\t\t\t\ttxt = data.iFilter.slice( 1 ),\n\t\t\t\t\t\tpattern = tsf.parseFilter( c, txt, data ) || '';\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\t\tif ( data.iExact[ indx ] === pattern[ patternIndx ] ) {\n\t\t\t\t\t\t\tpatternIndx += 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn patternIndx === pattern.length;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tinit: function( table ) {\n\t\t\t// filter language options\n\t\t\tts.language = $.extend( true, {}, {\n\t\t\t\tto : 'to',\n\t\t\t\tor : 'or',\n\t\t\t\tand : 'and'\n\t\t\t}, ts.language );\n\n\t\t\tvar options, string, txt, $header, column, val, fxn, noSelect,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tprocessStr = function(prefix, str, suffix) {\n\t\t\t\t\tstr = str.trim();\n\t\t\t\t\t// don't include prefix/suffix if str is empty\n\t\t\t\t\treturn str === '' ? '' : (prefix || '') + str + (suffix || '');\n\t\t\t\t};\n\t\t\tc.$table.addClass( 'hasFilters' );\n\t\t\tc.lastSearch = [];\n\n\t\t\t// define timers so using clearTimeout won't cause an undefined error\n\t\t\two.filter_searchTimer = null;\n\t\t\two.filter_initTimer = null;\n\t\t\two.filter_formatterCount = 0;\n\t\t\two.filter_formatterInit = [];\n\t\t\two.filter_anyColumnSelector = '[data-column=\"all\"],[data-column=\"any\"]';\n\t\t\two.filter_multipleColumnSelector = '[data-column*=\"-\"],[data-column*=\",\"]';\n\n\t\t\tval = '\\\\{' + tsfRegex.query + '\\\\}';\n\t\t\t$.extend( tsfRegex, {\n\t\t\t\tchild : new RegExp( c.cssChildRow ),\n\t\t\t\tfiltered : new RegExp( wo.filter_filteredRow ),\n\t\t\t\talreadyFiltered : new RegExp( '(\\\\s+(-' + processStr('|', ts.language.or) + processStr('|', ts.language.to) + ')\\\\s+)', 'i' ),\n\t\t\t\ttoTest : new RegExp( '\\\\s+(-' + processStr('|', ts.language.to) + ')\\\\s+', 'i' ),\n\t\t\t\ttoSplit : new RegExp( '(?:\\\\s+(?:-' + processStr('|', ts.language.to) + ')\\\\s+)', 'gi' ),\n\t\t\t\tandTest : new RegExp( '\\\\s+(' + processStr('', ts.language.and, '|') + '&&)\\\\s+', 'i' ),\n\t\t\t\tandSplit : new RegExp( '(?:\\\\s+(?:' + processStr('', ts.language.and, '|') + '&&)\\\\s+)', 'gi' ),\n\t\t\t\torTest : new RegExp( '(\\\\|' + processStr('|\\\\s+', ts.language.or, '\\\\s+') + ')', 'i' ),\n\t\t\t\torSplit : new RegExp( '(?:\\\\|' + processStr('|\\\\s+(?:', ts.language.or, ')\\\\s+') + ')', 'gi' ),\n\t\t\t\tiQuery : new RegExp( val, 'i' ),\n\t\t\t\tigQuery : new RegExp( val, 'ig' ),\n\t\t\t\toperTest : /^[<>]=?/,\n\t\t\t\tgtTest : />/,\n\t\t\t\tgteTest : />=/,\n\t\t\t\tltTest : /</,\n\t\t\t\tlteTest : /<=/,\n\t\t\t\tnotTest : /^\\!/,\n\t\t\t\twildOrTest : /[\\?\\*\\|]/,\n\t\t\t\twildTest : /\\?\\*/,\n\t\t\t\tfuzzyTest : /^~/,\n\t\t\t\texactTest : /[=\\\"\\|!]/\n\t\t\t});\n\n\t\t\t// don't build filter row if columnFilters is false or all columns are set to 'filter-false'\n\t\t\t// see issue #156\n\t\t\tval = c.$headers.filter( '.filter-false, .parser-false' ).length;\n\t\t\tif ( wo.filter_columnFilters !== false && val !== c.$headers.length ) {\n\t\t\t\t// build filter row\n\t\t\t\ttsf.buildRow( table, c, wo );\n\t\t\t}\n\n\t\t\ttxt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +\n\t\t\t\t'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );\n\t\t\tc.$table.bind( txt, function( event, filter ) {\n\t\t\t\tval = wo.filter_hideEmpty &&\n\t\t\t\t\t$.isEmptyObject( c.cache ) &&\n\t\t\t\t\t!( c.delayInit && event.type === 'appendCache' );\n\t\t\t\t// hide filter row using the 'filtered' class name\n\t\t\t\tc.$table.find( '.' + tscss.filterRow ).toggleClass( wo.filter_filteredRow, val ); // fixes #450\n\t\t\t\tif ( !/(search|filter)/.test( event.type ) ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\ttsf.buildDefault( table, true );\n\t\t\t\t}\n\t\t\t\t// Add filterAndSortReset - see #1361\n\t\t\t\tif ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {\n\t\t\t\t\tc.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );\n\t\t\t\t\tif ( event.type === 'filterAndSortReset' ) {\n\t\t\t\t\t\tts.sortReset( this.config, function() {\n\t\t\t\t\t\t\ttsf.searching( table, [] );\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttsf.searching( table, [] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( event.type === 'filterResetSaved' ) {\n\t\t\t\t\tts.storage( table, 'tablesorter-filters', '' );\n\t\t\t\t} else if ( event.type === 'filterEnd' ) {\n\t\t\t\t\ttsf.buildDefault( table, true );\n\t\t\t\t} else {\n\t\t\t\t\t// send false argument to force a new search; otherwise if the filter hasn't changed,\n\t\t\t\t\t// it will return\n\t\t\t\t\tfilter = event.type === 'search' ? filter :\n\t\t\t\t\t\tevent.type === 'updateComplete' ? c.$table.data( 'lastSearch' ) : '';\n\t\t\t\t\tif ( /(update|add)/.test( event.type ) && event.type !== 'updateComplete' ) {\n\t\t\t\t\t\t// force a new search since content has changed\n\t\t\t\t\t\tc.lastCombinedFilter = null;\n\t\t\t\t\t\tc.lastSearch = [];\n\t\t\t\t\t\t// update filterFormatters after update (& small delay) - Fixes #1237\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\n\t\t\t\t\t\t}, 100);\n\t\t\t\t\t}\n\t\t\t\t\t// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first\n\t\t\t\t\t// input ensures all inputs are updated when a search is triggered on the table\n\t\t\t\t\t// $( 'table' ).trigger( 'search', [...] );\n\t\t\t\t\ttsf.searching( table, filter, true );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// reset button/link\n\t\t\tif ( wo.filter_reset ) {\n\t\t\t\tif ( wo.filter_reset instanceof $ ) {\n\t\t\t\t\t// reset contains a jQuery object, bind to it\n\t\t\t\t\two.filter_reset.click( function() {\n\t\t\t\t\t\tc.$table.triggerHandler( 'filterReset' );\n\t\t\t\t\t});\n\t\t\t\t} else if ( $( wo.filter_reset ).length ) {\n\t\t\t\t\t// reset is a jQuery selector, use event delegation\n\t\t\t\t\t$( document )\n\t\t\t\t\t\t.undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' )\n\t\t\t\t\t\t.delegate( wo.filter_reset, 'click' + c.namespace + 'filter', function() {\n\t\t\t\t\t\t\t// trigger a reset event, so other functions ( filter_formatter ) know when to reset\n\t\t\t\t\t\t\tc.$table.triggerHandler( 'filterReset' );\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( wo.filter_functions ) {\n\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t\tfxn = ts.getColumnData( table, wo.filter_functions, column );\n\t\t\t\t\tif ( fxn ) {\n\t\t\t\t\t\t// remove 'filter-select' from header otherwise the options added here are replaced with\n\t\t\t\t\t\t// all options\n\t\t\t\t\t\t$header = c.$headerIndexed[ column ].removeClass( 'filter-select' );\n\t\t\t\t\t\t// don't build select if 'filter-false' or 'parser-false' set\n\t\t\t\t\t\tnoSelect = !( $header.hasClass( 'filter-false' ) || $header.hasClass( 'parser-false' ) );\n\t\t\t\t\t\toptions = '';\n\t\t\t\t\t\tif ( fxn === true && noSelect ) {\n\t\t\t\t\t\t\ttsf.buildSelect( table, column );\n\t\t\t\t\t\t} else if ( typeof fxn === 'object' && noSelect ) {\n\t\t\t\t\t\t\t// add custom drop down list\n\t\t\t\t\t\t\tfor ( string in fxn ) {\n\t\t\t\t\t\t\t\tif ( typeof string === 'string' ) {\n\t\t\t\t\t\t\t\t\toptions += options === '' ?\n\t\t\t\t\t\t\t\t\t\t'<option value=\"\">' +\n\t\t\t\t\t\t\t\t\t\t\t( $header.data( 'placeholder' ) ||\n\t\t\t\t\t\t\t\t\t\t\t\t$header.attr( 'data-placeholder' ) ||\n\t\t\t\t\t\t\t\t\t\t\t\two.filter_placeholder.select ||\n\t\t\t\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t'</option>' : '';\n\t\t\t\t\t\t\t\t\tval = string;\n\t\t\t\t\t\t\t\t\ttxt = string;\n\t\t\t\t\t\t\t\t\tif ( string.indexOf( wo.filter_selectSourceSeparator ) >= 0 ) {\n\t\t\t\t\t\t\t\t\t\tval = string.split( wo.filter_selectSourceSeparator );\n\t\t\t\t\t\t\t\t\t\ttxt = val[1];\n\t\t\t\t\t\t\t\t\t\tval = val[0];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\toptions += '<option ' +\n\t\t\t\t\t\t\t\t\t\t( txt === val ? '' : 'data-function-name=\"' + string + '\" ' ) +\n\t\t\t\t\t\t\t\t\t\t'value=\"' + val + '\">' + txt + '</option>';\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.$table\n\t\t\t\t\t\t\t\t.find( 'thead' )\n\t\t\t\t\t\t\t\t.find( 'select.' + tscss.filter + '[data-column=\"' + column + '\"]' )\n\t\t\t\t\t\t\t\t.append( options );\n\t\t\t\t\t\t\ttxt = wo.filter_selectSource;\n\t\t\t\t\t\t\tfxn = typeof txt === 'function' ? true : ts.getColumnData( table, txt, column );\n\t\t\t\t\t\t\tif ( fxn ) {\n\t\t\t\t\t\t\t\t// updating so the extra options are appended\n\t\t\t\t\t\t\t\ttsf.buildSelect( c.table, column, '', true, $header.hasClass( wo.filter_onlyAvail ) );\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// not really updating, but if the column has both the 'filter-select' class &\n\t\t\t// filter_functions set to true, it would append the same options twice.\n\t\t\ttsf.buildDefault( table, true );\n\n\t\t\ttsf.bindSearch( table, c.$table.find( '.' + tscss.filter ), true );\n\t\t\tif ( wo.filter_external ) {\n\t\t\t\ttsf.bindSearch( table, wo.filter_external );\n\t\t\t}\n\n\t\t\tif ( wo.filter_hideFilters ) {\n\t\t\t\ttsf.hideFilters( c );\n\t\t\t}\n\n\t\t\t// show processing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\ttxt = 'filterStart filterEnd '.split( ' ' ).join( c.namespace + 'filter-sp ' );\n\t\t\t\tc.$table\n\t\t\t\t\t.unbind( txt.replace( ts.regex.spaces, ' ' ) )\n\t\t\t\t\t.bind( txt, function( event, columns ) {\n\t\t\t\t\t// only add processing to certain columns to all columns\n\t\t\t\t\t$header = ( columns ) ?\n\t\t\t\t\t\tc.$table\n\t\t\t\t\t\t\t.find( '.' + tscss.header )\n\t\t\t\t\t\t\t.filter( '[data-column]' )\n\t\t\t\t\t\t\t.filter( function() {\n\t\t\t\t\t\t\t\treturn columns[ $( this ).data( 'column' ) ] !== '';\n\t\t\t\t\t\t\t}) : '';\n\t\t\t\t\tts.isProcessing( table, event.type === 'filterStart', columns ? $header : '' );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// set filtered rows count ( intially unfiltered )\n\t\t\tc.filteredRows = c.totalRows;\n\n\t\t\t// add default values\n\t\t\ttxt = 'tablesorter-initialized pagerBeforeInitialized '.split( ' ' ).join( c.namespace + 'filter ' );\n\t\t\tc.$table\n\t\t\t.unbind( txt.replace( ts.regex.spaces, ' ' ) )\n\t\t\t.bind( txt, function() {\n\t\t\t\ttsf.completeInit( this );\n\t\t\t});\n\t\t\t// if filter widget is added after pager has initialized; then set filter init flag\n\t\t\tif ( c.pager && c.pager.initialized && !wo.filter_initialized ) {\n\t\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\ttsf.filterInitComplete( c );\n\t\t\t\t}, 100 );\n\t\t\t} else if ( !wo.filter_initialized ) {\n\t\t\t\ttsf.completeInit( table );\n\t\t\t}\n\t\t},\n\t\tcompleteInit: function( table ) {\n\t\t\t// redefine 'c' & 'wo' so they update properly inside this callback\n\t\t\tvar c = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tfilters = tsf.setDefaults( table, c, wo ) || [];\n\t\t\tif ( filters.length ) {\n\t\t\t\t// prevent delayInit from triggering a cache build if filters are empty\n\t\t\t\tif ( !( c.delayInit && filters.join( '' ) === '' ) ) {\n\t\t\t\t\tts.setFilters( table, filters, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\n\t\t\t// trigger init after setTimeout to prevent multiple filterStart/End/Init triggers\n\t\t\tsetTimeout( function() {\n\t\t\t\tif ( !wo.filter_initialized ) {\n\t\t\t\t\ttsf.filterInitComplete( c );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t},\n\n\t\t// $cell parameter, but not the config, is passed to the filter_formatters,\n\t\t// so we have to work with it instead\n\t\tformatterUpdated: function( $cell, column ) {\n\t\t\t// prevent error if $cell is undefined - see #1056\n\t\t\tvar $table = $cell && $cell.closest( 'table' );\n\t\t\tvar config = $table.length && $table[0].config,\n\t\t\t\two = config && config.widgetOptions;\n\t\t\tif ( wo && !wo.filter_initialized ) {\n\t\t\t\t// add updates by column since this function\n\t\t\t\t// may be called numerous times before initialization\n\t\t\t\two.filter_formatterInit[ column ] = 1;\n\t\t\t}\n\t\t},\n\t\tfilterInitComplete: function( c ) {\n\t\t\tvar indx, len,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tcount = 0,\n\t\t\t\tcompleted = function() {\n\t\t\t\t\two.filter_initialized = true;\n\t\t\t\t\t// update lastSearch - it gets cleared often\n\t\t\t\t\tc.lastSearch = c.$table.data( 'lastSearch' );\n\t\t\t\t\tc.$table.triggerHandler( 'filterInit', c );\n\t\t\t\t\ttsf.findRows( c.table, c.lastSearch || [] );\n\t\t\t\t\tif (ts.debug(c, 'filter')) {\n\t\t\t\t\t\tconsole.log('Filter >> Widget initialized');\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tif ( $.isEmptyObject( wo.filter_formatter ) ) {\n\t\t\t\tcompleted();\n\t\t\t} else {\n\t\t\t\tlen = wo.filter_formatterInit.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tif ( wo.filter_formatterInit[ indx ] === 1 ) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclearTimeout( wo.filter_initTimer );\n\t\t\t\tif ( !wo.filter_initialized && count === wo.filter_formatterCount ) {\n\t\t\t\t\t// filter widget initialized\n\t\t\t\t\tcompleted();\n\t\t\t\t} else if ( !wo.filter_initialized ) {\n\t\t\t\t\t// fall back in case a filter_formatter doesn't call\n\t\t\t\t\t// $.tablesorter.filter.formatterUpdated( $cell, column ), and the count is off\n\t\t\t\t\two.filter_initTimer = setTimeout( function() {\n\t\t\t\t\t\tcompleted();\n\t\t\t\t\t}, 500 );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// encode or decode filters for storage; see #1026\n\t\tprocessFilters: function( filters, encode ) {\n\t\t\tvar indx,\n\t\t\t\t// fixes #1237; previously returning an encoded \"filters\" value\n\t\t\t\tresult = [],\n\t\t\t\tmode = encode ? encodeURIComponent : decodeURIComponent,\n\t\t\t\tlen = filters.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( filters[ indx ] ) {\n\t\t\t\t\tresult[ indx ] = mode( filters[ indx ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tsetDefaults: function( table, c, wo ) {\n\t\t\tvar isArray, saved, indx, col, $filters,\n\t\t\t\t// get current ( default ) filters\n\t\t\t\tfilters = ts.getFilters( table ) || [];\n\t\t\tif ( wo.filter_saveFilters && ts.storage ) {\n\t\t\t\tsaved = ts.storage( table, 'tablesorter-filters' ) || [];\n\t\t\t\tisArray = $.isArray( saved );\n\t\t\t\t// make sure we're not just getting an empty array\n\t\t\t\tif ( !( isArray && saved.join( '' ) === '' || !isArray ) ) {\n\t\t\t\t\tfilters = tsf.processFilters( saved );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// if no filters saved, then check default settings\n\t\t\tif ( filters.join( '' ) === '' ) {\n\t\t\t\t// allow adding default setting to external filters\n\t\t\t\t$filters = c.$headers.add( wo.filter_$externalFilters )\n\t\t\t\t\t.filter( '[' + wo.filter_defaultAttrib + ']' );\n\t\t\t\tfor ( indx = 0; indx <= c.columns; indx++ ) {\n\t\t\t\t\t// include data-column='all' external filters\n\t\t\t\t\tcol = indx === c.columns ? 'all' : indx;\n\t\t\t\t\tfilters[ indx ] = $filters\n\t\t\t\t\t\t.filter( '[data-column=\"' + col + '\"]' )\n\t\t\t\t\t\t.attr( wo.filter_defaultAttrib ) || filters[indx] || '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.$table.data( 'lastSearch', filters );\n\t\t\treturn filters;\n\t\t},\n\t\tparseFilter: function( c, filter, data, parsed ) {\n\t\t\treturn parsed || data.parsed[ data.index ] ?\n\t\t\t\tc.parsers[ data.index ].format( filter, c.table, [], data.index ) :\n\t\t\t\tfilter;\n\t\t},\n\t\tbuildRow: function( table, c, wo ) {\n\t\t\tvar $filter, col, column, $header, makeSelect, disabled, name, ffxn, tmp,\n\t\t\t\t// c.columns defined in computeThIndexes()\n\t\t\t\tcellFilter = wo.filter_cellFilter,\n\t\t\t\tcolumns = c.columns,\n\t\t\t\tarry = $.isArray( cellFilter ),\n\t\t\t\tbuildFilter = '<tr role=\"search\" class=\"' + tscss.filterRow + ' ' + c.cssIgnoreRow + '\">';\n\t\t\tfor ( column = 0; column < columns; column++ ) {\n\t\t\t\tif ( c.$headerIndexed[ column ].length ) {\n\t\t\t\t\t// account for entire column set with colspan. See #1047\n\t\t\t\t\ttmp = c.$headerIndexed[ column ] && c.$headerIndexed[ column ][0].colSpan || 0;\n\t\t\t\t\tif ( tmp > 1 ) {\n\t\t\t\t\t\tbuildFilter += '<td data-column=\"' + column + '-' + ( column + tmp - 1 ) + '\" colspan=\"' + tmp + '\"';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuildFilter += '<td data-column=\"' + column + '\"';\n\t\t\t\t\t}\n\t\t\t\t\tif ( arry ) {\n\t\t\t\t\t\tbuildFilter += ( cellFilter[ column ] ? ' class=\"' + cellFilter[ column ] + '\"' : '' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuildFilter += ( cellFilter !== '' ? ' class=\"' + cellFilter + '\"' : '' );\n\t\t\t\t\t}\n\t\t\t\t\tbuildFilter += '></td>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.$filters = $( buildFilter += '</tr>' )\n\t\t\t\t.appendTo( c.$table.children( 'thead' ).eq( 0 ) )\n\t\t\t\t.children( 'td' );\n\t\t\t// build each filter input\n\t\t\tfor ( column = 0; column < columns; column++ ) {\n\t\t\t\tdisabled = false;\n\t\t\t\t// assuming last cell of a column is the main column\n\t\t\t\t$header = c.$headerIndexed[ column ];\n\t\t\t\tif ( $header && $header.length ) {\n\t\t\t\t\t// $filter = c.$filters.filter( '[data-column=\"' + column + '\"]' );\n\t\t\t\t\t$filter = tsf.getColumnElm( c, c.$filters, column );\n\t\t\t\t\tffxn = ts.getColumnData( table, wo.filter_functions, column );\n\t\t\t\t\tmakeSelect = ( wo.filter_functions && ffxn && typeof ffxn !== 'function' ) ||\n\t\t\t\t\t\t$header.hasClass( 'filter-select' );\n\t\t\t\t\t// get data from jQuery data, metadata, headers option or header class name\n\t\t\t\t\tcol = ts.getColumnData( table, c.headers, column );\n\t\t\t\t\tdisabled = ts.getData( $header[0], col, 'filter' ) === 'false' ||\n\t\t\t\t\t\tts.getData( $header[0], col, 'parser' ) === 'false';\n\n\t\t\t\t\tif ( makeSelect ) {\n\t\t\t\t\t\tbuildFilter = $( '<select>' ).appendTo( $filter );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tffxn = ts.getColumnData( table, wo.filter_formatter, column );\n\t\t\t\t\t\tif ( ffxn ) {\n\t\t\t\t\t\t\two.filter_formatterCount++;\n\t\t\t\t\t\t\tbuildFilter = ffxn( $filter, column );\n\t\t\t\t\t\t\t// no element returned, so lets go find it\n\t\t\t\t\t\t\tif ( buildFilter && buildFilter.length === 0 ) {\n\t\t\t\t\t\t\t\tbuildFilter = $filter.children( 'input' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// element not in DOM, so lets attach it\n\t\t\t\t\t\t\tif ( buildFilter && ( buildFilter.parent().length === 0 ||\n\t\t\t\t\t\t\t\t( buildFilter.parent().length && buildFilter.parent()[0] !== $filter[0] ) ) ) {\n\t\t\t\t\t\t\t\t$filter.append( buildFilter );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuildFilter = $( '<input type=\"search\">' ).appendTo( $filter );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( buildFilter ) {\n\t\t\t\t\t\t\ttmp = $header.data( 'placeholder' ) ||\n\t\t\t\t\t\t\t\t$header.attr( 'data-placeholder' ) ||\n\t\t\t\t\t\t\t\two.filter_placeholder.search || '';\n\t\t\t\t\t\t\tbuildFilter.attr( 'placeholder', tmp );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( buildFilter ) {\n\t\t\t\t\t\t// add filter class name\n\t\t\t\t\t\tname = ( $.isArray( wo.filter_cssFilter ) ?\n\t\t\t\t\t\t\t( typeof wo.filter_cssFilter[column] !== 'undefined' ? wo.filter_cssFilter[column] || '' : '' ) :\n\t\t\t\t\t\t\two.filter_cssFilter ) || '';\n\t\t\t\t\t\t// copy data-column from table cell (it will include colspan)\n\t\t\t\t\t\tbuildFilter.addClass( tscss.filter + ' ' + name );\n\t\t\t\t\t\tname = wo.filter_filterLabel;\n\t\t\t\t\t\ttmp = name.match(/{{([^}]+?)}}/g);\n\t\t\t\t\t\tif (!tmp) {\n\t\t\t\t\t\t\ttmp = [ '{{label}}' ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$.each(tmp, function(indx, attr) {\n\t\t\t\t\t\t\tvar regex = new RegExp(attr, 'g'),\n\t\t\t\t\t\t\t\tdata = $header.attr('data-' + attr.replace(/{{|}}/g, '')),\n\t\t\t\t\t\t\t\ttext = typeof data === 'undefined' ? $header.text() : data;\n\t\t\t\t\t\t\tname = name.replace( regex, $.trim( text ) );\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbuildFilter.attr({\n\t\t\t\t\t\t\t'data-column': $filter.attr( 'data-column' ),\n\t\t\t\t\t\t\t'aria-label': name\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif ( disabled ) {\n\t\t\t\t\t\t\tbuildFilter.attr( 'placeholder', '' ).addClass( tscss.filterDisabled )[0].disabled = true;\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},\n\t\tbindSearch: function( table, $el, internal ) {\n\t\t\ttable = $( table )[0];\n\t\t\t$el = $( $el ); // allow passing a selector string\n\t\t\tif ( !$el.length ) { return; }\n\t\t\tvar tmp,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tnamespace = c.namespace + 'filter',\n\t\t\t\t$ext = wo.filter_$externalFilters;\n\t\t\tif ( internal !== true ) {\n\t\t\t\t// save anyMatch element\n\t\t\t\ttmp = wo.filter_anyColumnSelector + ',' + wo.filter_multipleColumnSelector;\n\t\t\t\two.filter_$anyMatch = $el.filter( tmp );\n\t\t\t\tif ( $ext && $ext.length ) {\n\t\t\t\t\two.filter_$externalFilters = wo.filter_$externalFilters.add( $el );\n\t\t\t\t} else {\n\t\t\t\t\two.filter_$externalFilters = $el;\n\t\t\t\t}\n\t\t\t\t// update values ( external filters added after table initialization )\n\t\t\t\tts.setFilters( table, c.$table.data( 'lastSearch' ) || [], internal === false );\n\t\t\t}\n\t\t\t// unbind events\n\t\t\ttmp = ( 'keypress keyup keydown search change input '.split( ' ' ).join( namespace + ' ' ) );\n\t\t\t$el\n\t\t\t// use data attribute instead of jQuery data since the head is cloned without including\n\t\t\t// the data/binding\n\t\t\t.attr( 'data-lastSearchTime', new Date().getTime() )\n\t\t\t.unbind( tmp.replace( ts.regex.spaces, ' ' ) )\n\t\t\t.bind( 'keydown' + namespace, function( event ) {\n\t\t\t\tif ( event.which === tskeyCodes.escape && !table.config.widgetOptions.filter_resetOnEsc ) {\n\t\t\t\t\t// prevent keypress event\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( 'keyup' + namespace, function( event ) {\n\t\t\t\two = table.config.widgetOptions; // make sure \"wo\" isn't cached\n\t\t\t\tvar column = parseInt( $( this ).attr( 'data-column' ), 10 ),\n\t\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :\n\t\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\n\t\t\t\tif ( typeof liveSearch === 'undefined' ) {\n\t\t\t\t\tliveSearch = wo.filter_liveSearch.fallback || false;\n\t\t\t\t}\n\t\t\t\t$( this ).attr( 'data-lastSearchTime', new Date().getTime() );\n\t\t\t\t// emulate what webkit does.... escape clears the filter\n\t\t\t\tif ( event.which === tskeyCodes.escape ) {\n\t\t\t\t\t// make sure to restore the last value on escape\n\t\t\t\t\tthis.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];\n\t\t\t\t\t// don't return if the search value is empty ( all rows need to be revealed )\n\t\t\t\t} else if ( this.value !== '' && (\n\t\t\t\t\t// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace\n\t\t\t\t\t( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||\n\t\t\t\t\t// let return & backspace continue on, but ignore arrows & non-valid characters\n\t\t\t\t\t( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&\n\t\t\t\t\t\t( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t\t// live search\n\t\t\t\t} else if ( liveSearch === false ) {\n\t\t\t\t\tif ( this.value !== '' && event.which !== tskeyCodes.enter ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// change event = no delay; last true flag tells getFilters to skip newest timed input\n\t\t\t\ttsf.searching( table, true, true, column );\n\t\t\t})\n\t\t\t// include change for select - fixes #473\n\t\t\t.bind( 'search change keypress input blur '.split( ' ' ).join( namespace + ' ' ), function( event ) {\n\t\t\t\t// don't get cached data, in case data-column changes dynamically\n\t\t\t\tvar column = parseInt( $( this ).attr( 'data-column' ), 10 ),\n\t\t\t\t\teventType = event.type,\n\t\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ?\n\t\t\t\t\t\two.filter_liveSearch :\n\t\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\n\t\t\t\tif ( table.config.widgetOptions.filter_initialized &&\n\t\t\t\t\t// immediate search if user presses enter\n\t\t\t\t\t( event.which === tskeyCodes.enter ||\n\t\t\t\t\t\t// immediate search if a \"search\" or \"blur\" is triggered on the input\n\t\t\t\t\t\t( eventType === 'search' || eventType === 'blur' ) ||\n\t\t\t\t\t\t// change & input events must be ignored if liveSearch !== true\n\t\t\t\t\t\t( eventType === 'change' || eventType === 'input' ) &&\n\t\t\t\t\t\t// prevent search if liveSearch is a number\n\t\t\t\t\t\t( liveSearch === true || liveSearch !== true && event.target.nodeName !== 'INPUT' ) &&\n\t\t\t\t\t\t// don't allow 'change' or 'input' event to process if the input value\n\t\t\t\t\t\t// is the same - fixes #685\n\t\t\t\t\t\tthis.value !== c.lastSearch[column]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t// init search with no delay\n\t\t\t\t\t$( this ).attr( 'data-lastSearchTime', new Date().getTime() );\n\t\t\t\t\ttsf.searching( table, eventType !== 'keypress', true, column );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsearching: function( table, filter, skipFirst, column ) {\n\t\t\tvar liveSearch,\n\t\t\t\two = table.config.widgetOptions;\n\t\t\tif (typeof column === 'undefined') {\n\t\t\t\t// no delay\n\t\t\t\tliveSearch = false;\n\t\t\t} else {\n\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ?\n\t\t\t\t\two.filter_liveSearch :\n\t\t\t\t\t// get column setting, or set to fallback value, or default to false\n\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\n\t\t\t\tif ( typeof liveSearch === 'undefined' ) {\n\t\t\t\t\tliveSearch = wo.filter_liveSearch.fallback || false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tclearTimeout( wo.filter_searchTimer );\n\t\t\tif ( typeof filter === 'undefined' || filter === true ) {\n\t\t\t\t// delay filtering\n\t\t\t\two.filter_searchTimer = setTimeout( function() {\n\t\t\t\t\ttsf.checkFilters( table, filter, skipFirst );\n\t\t\t\t}, liveSearch ? wo.filter_searchDelay : 10 );\n\t\t\t} else {\n\t\t\t\t// skip delay\n\t\t\t\ttsf.checkFilters( table, filter, skipFirst );\n\t\t\t}\n\t\t},\n\t\tequalFilters: function (c, filter1, filter2) {\n\t\t\tvar indx,\n\t\t\t\tf1 = [],\n\t\t\t\tf2 = [],\n\t\t\t\tlen = c.columns + 1; // add one to include anyMatch filter\n\t\t\tfilter1 = $.isArray(filter1) ? filter1 : [];\n\t\t\tfilter2 = $.isArray(filter2) ? filter2 : [];\n\t\t\tfor (indx = 0; indx < len; indx++) {\n\t\t\t\tf1[indx] = filter1[indx] || '';\n\t\t\t\tf2[indx] = filter2[indx] || '';\n\t\t\t}\n\t\t\treturn f1.join(',') === f2.join(',');\n\t\t},\n\t\tcheckFilters: function( table, filter, skipFirst ) {\n\t\t\tvar c = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tfilterArray = $.isArray( filter ),\n\t\t\t\tfilters = ( filterArray ) ? filter : ts.getFilters( table, true ),\n\t\t\t\tcurrentFilters = filters || []; // current filter values\n\t\t\t// prevent errors if delay init is set\n\t\t\tif ( $.isEmptyObject( c.cache ) ) {\n\t\t\t\t// update cache if delayInit set & pager has initialized ( after user initiates a search )\n\t\t\t\tif ( c.delayInit && ( !c.pager || c.pager && c.pager.initialized ) ) {\n\t\t\t\t\tts.updateCache( c, function() {\n\t\t\t\t\t\ttsf.checkFilters( table, false, skipFirst );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// add filter array back into inputs\n\t\t\tif ( filterArray ) {\n\t\t\t\tts.setFilters( table, filters, false, skipFirst !== true );\n\t\t\t\tif ( !wo.filter_initialized ) {\n\t\t\t\t\tc.lastSearch = [];\n\t\t\t\t\tc.lastCombinedFilter = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( wo.filter_hideFilters ) {\n\t\t\t\t// show/hide filter row as needed\n\t\t\t\tc.$table\n\t\t\t\t\t.find( '.' + tscss.filterRow )\n\t\t\t\t\t.triggerHandler( tsf.hideFiltersCheck( c ) ? 'mouseleave' : 'mouseenter' );\n\t\t\t}\n\t\t\t// return if the last search is the same; but filter === false when updating the search\n\t\t\t// see example-widget-filter.html filter toggle buttons\n\t\t\tif ( tsf.equalFilters(c, c.lastSearch, currentFilters) && filter !== false ) {\n\t\t\t\treturn;\n\t\t\t} else if ( filter === false ) {\n\t\t\t\t// force filter refresh\n\t\t\t\tc.lastCombinedFilter = '';\n\t\t\t\tc.lastSearch = [];\n\t\t\t}\n\t\t\t// define filter inside it is false\n\t\t\tfilters = filters || [];\n\t\t\t// convert filters to strings - see #1070\n\t\t\tfilters = Array.prototype.map ?\n\t\t\t\tfilters.map( String ) :\n\t\t\t\t// for IE8 & older browsers - maybe not the best method\n\t\t\t\tfilters.join( '\\ufffd' ).split( '\\ufffd' );\n\n\t\t\tif ( wo.filter_initialized ) {\n\t\t\t\tc.$table.triggerHandler( 'filterStart', [ filters ] );\n\t\t\t}\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\t// give it time for the processing icon to kick in\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\ttsf.findRows( table, filters, currentFilters );\n\t\t\t\t\treturn false;\n\t\t\t\t}, 30 );\n\t\t\t} else {\n\t\t\t\ttsf.findRows( table, filters, currentFilters );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\thideFiltersCheck: function( c ) {\n\t\t\tif (typeof c.widgetOptions.filter_hideFilters === 'function') {\n\t\t\t\tvar val = c.widgetOptions.filter_hideFilters( c );\n\t\t\t\tif (typeof val === 'boolean') {\n\t\t\t\t\treturn val;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ts.getFilters( c.$table ).join( '' ) === '';\n\t\t},\n\t\thideFilters: function( c, $table ) {\n\t\t\tvar timer;\n\t\t\t( $table || c.$table )\n\t\t\t\t.find( '.' + tscss.filterRow )\n\t\t\t\t.addClass( tscss.filterRowHide )\n\t\t\t\t.bind( 'mouseenter mouseleave', function( e ) {\n\t\t\t\t\t// save event object - http://bugs.jquery.com/ticket/12140\n\t\t\t\t\tvar event = e,\n\t\t\t\t\t\t$row = $( this );\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t\ttimer = setTimeout( function() {\n\t\t\t\t\t\tif ( /enter|over/.test( event.type ) ) {\n\t\t\t\t\t\t\t$row.removeClass( tscss.filterRowHide );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// don't hide if input has focus\n\t\t\t\t\t\t\t// $( ':focus' ) needs jQuery 1.6+\n\t\t\t\t\t\t\tif ( $( document.activeElement ).closest( 'tr' )[0] !== $row[0] ) {\n\t\t\t\t\t\t\t\t// don't hide row if any filter has a value\n\t\t\t\t\t\t\t\t$row.toggleClass( tscss.filterRowHide, tsf.hideFiltersCheck( c ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 200 );\n\t\t\t\t})\n\t\t\t\t.find( 'input, select' ).bind( 'focus blur', function( e ) {\n\t\t\t\t\tvar event = e,\n\t\t\t\t\t\t$row = $( this ).closest( 'tr' );\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t\ttimer = setTimeout( function() {\n\t\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t\t\t// don't hide row if any filter has a value\n\t\t\t\t\t\t$row.toggleClass( tscss.filterRowHide, tsf.hideFiltersCheck( c ) && event.type !== 'focus' );\n\t\t\t\t\t}, 200 );\n\t\t\t\t});\n\t\t},\n\t\tdefaultFilter: function( filter, mask ) {\n\t\t\tif ( filter === '' ) { return filter; }\n\t\t\tvar regex = tsfRegex.iQuery,\n\t\t\t\tmaskLen = mask.match( tsfRegex.igQuery ).length,\n\t\t\t\tquery = maskLen > 1 ? $.trim( filter ).split( /\\s/ ) : [ $.trim( filter ) ],\n\t\t\t\tlen = query.length - 1,\n\t\t\t\tindx = 0,\n\t\t\t\tval = mask;\n\t\t\tif ( len < 1 && maskLen > 1 ) {\n\t\t\t\t// only one 'word' in query but mask has >1 slots\n\t\t\t\tquery[1] = query[0];\n\t\t\t}\n\t\t\t// replace all {query} with query words...\n\t\t\t// if query = 'Bob', then convert mask from '!{query}' to '!Bob'\n\t\t\t// if query = 'Bob Joe Frank', then convert mask '{q} OR {q}' to 'Bob OR Joe OR Frank'\n\t\t\twhile ( regex.test( val ) ) {\n\t\t\t\tval = val.replace( regex, query[indx++] || '' );\n\t\t\t\tif ( regex.test( val ) && indx < len && ( query[indx] || '' ) !== '' ) {\n\t\t\t\t\tval = mask.replace( regex, val );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\t\tgetLatestSearch: function( $input ) {\n\t\t\tif ( $input ) {\n\t\t\t\treturn $input.sort( function( a, b ) {\n\t\t\t\t\treturn $( b ).attr( 'data-lastSearchTime' ) - $( a ).attr( 'data-lastSearchTime' );\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn $input || $();\n\t\t},\n\t\tfindRange: function( c, val, ignoreRanges ) {\n\t\t\t// look for multiple columns '1-3,4-6,8' in data-column\n\t\t\tvar temp, ranges, range, start, end, singles, i, indx, len,\n\t\t\t\tcolumns = [];\n\t\t\tif ( /^[0-9]+$/.test( val ) ) {\n\t\t\t\t// always return an array\n\t\t\t\treturn [ parseInt( val, 10 ) ];\n\t\t\t}\n\t\t\t// process column range\n\t\t\tif ( !ignoreRanges && /-/.test( val ) ) {\n\t\t\t\tranges = val.match( /(\\d+)\\s*-\\s*(\\d+)/g );\n\t\t\t\tlen = ranges ? ranges.length : 0;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\trange = ranges[indx].split( /\\s*-\\s*/ );\n\t\t\t\t\tstart = parseInt( range[0], 10 ) || 0;\n\t\t\t\t\tend = parseInt( range[1], 10 ) || ( c.columns - 1 );\n\t\t\t\t\tif ( start > end ) {\n\t\t\t\t\t\ttemp = start; start = end; end = temp; // swap\n\t\t\t\t\t}\n\t\t\t\t\tif ( end >= c.columns ) {\n\t\t\t\t\t\tend = c.columns - 1;\n\t\t\t\t\t}\n\t\t\t\t\tfor ( ; start <= end; start++ ) {\n\t\t\t\t\t\tcolumns[ columns.length ] = start;\n\t\t\t\t\t}\n\t\t\t\t\t// remove processed range from val\n\t\t\t\t\tval = val.replace( ranges[ indx ], '' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// process single columns\n\t\t\tif ( !ignoreRanges && /,/.test( val ) ) {\n\t\t\t\tsingles = val.split( /\\s*,\\s*/ );\n\t\t\t\tlen = singles.length;\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( singles[ i ] !== '' ) {\n\t\t\t\t\t\tindx = parseInt( singles[ i ], 10 );\n\t\t\t\t\t\tif ( indx < c.columns ) {\n\t\t\t\t\t\t\tcolumns[ columns.length ] = indx;\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// return all columns\n\t\t\tif ( !columns.length ) {\n\t\t\t\tfor ( indx = 0; indx < c.columns; indx++ ) {\n\t\t\t\t\tcolumns[ columns.length ] = indx;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn columns;\n\t\t},\n\t\tgetColumnElm: function( c, $elements, column ) {\n\t\t\t// data-column may contain multiple columns '1-3,5-6,8'\n\t\t\t// replaces: c.$filters.filter( '[data-column=\"' + column + '\"]' );\n\t\t\treturn $elements.filter( function() {\n\t\t\t\tvar cols = tsf.findRange( c, $( this ).attr( 'data-column' ) );\n\t\t\t\treturn $.inArray( column, cols ) > -1;\n\t\t\t});\n\t\t},\n\t\tmultipleColumns: function( c, $input ) {\n\t\t\t// look for multiple columns '1-3,4-6,8' in data-column\n\t\t\tvar wo = c.widgetOptions,\n\t\t\t\t// only target 'all' column inputs on initialization\n\t\t\t\t// & don't target 'all' column inputs if they don't exist\n\t\t\t\ttargets = wo.filter_initialized || !$input.filter( wo.filter_anyColumnSelector ).length,\n\t\t\t\tval = $.trim( tsf.getLatestSearch( $input ).attr( 'data-column' ) || '' );\n\t\t\treturn tsf.findRange( c, val, !targets );\n\t\t},\n\t\tprocessTypes: function( c, data, vars ) {\n\t\t\tvar ffxn,\n\t\t\t\tfilterMatched = null,\n\t\t\t\tmatches = null;\n\t\t\tfor ( ffxn in tsf.types ) {\n\t\t\t\tif ( $.inArray( ffxn, vars.excludeMatch ) < 0 && matches === null ) {\n\t\t\t\t\tmatches = tsf.types[ffxn]( c, data, vars );\n\t\t\t\t\tif ( matches !== null ) {\n\t\t\t\t\t\tdata.matchedOn = ffxn;\n\t\t\t\t\t\tfilterMatched = matches;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn filterMatched;\n\t\t},\n\t\tmatchType: function( c, columnIndex ) {\n\t\t\tvar isMatch,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\t$el = c.$headerIndexed[ columnIndex ];\n\t\t\t// filter-exact > filter-match > filter_matchType for type\n\t\t\tif ( $el.hasClass( 'filter-exact' ) ) {\n\t\t\t\tisMatch = false;\n\t\t\t} else if ( $el.hasClass( 'filter-match' ) ) {\n\t\t\t\tisMatch = true;\n\t\t\t} else {\n\t\t\t\t// filter-select is not applied when filter_functions are used, so look for a select\n\t\t\t\tif ( wo.filter_columnFilters ) {\n\t\t\t\t\t$el = c.$filters\n\t\t\t\t\t\t.find( '.' + tscss.filter )\n\t\t\t\t\t\t.add( wo.filter_$externalFilters )\n\t\t\t\t\t\t.filter( '[data-column=\"' + columnIndex + '\"]' );\n\t\t\t\t} else if ( wo.filter_$externalFilters ) {\n\t\t\t\t\t$el = wo.filter_$externalFilters.filter( '[data-column=\"' + columnIndex + '\"]' );\n\t\t\t\t}\n\t\t\t\tisMatch = $el.length ?\n\t\t\t\t\tc.widgetOptions.filter_matchType[ ( $el[ 0 ].nodeName || '' ).toLowerCase() ] === 'match' :\n\t\t\t\t\t// default to exact, if no inputs found\n\t\t\t\t\tfalse;\n\t\t\t}\n\t\t\treturn isMatch;\n\t\t},\n\t\tprocessRow: function( c, data, vars ) {\n\t\t\tvar result, filterMatched,\n\t\t\t\tfxn, ffxn, txt,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tshowRow = true,\n\t\t\t\thasAnyMatchInput = wo.filter_$anyMatch && wo.filter_$anyMatch.length,\n\n\t\t\t\t// if wo.filter_$anyMatch data-column attribute is changed dynamically\n\t\t\t\t// we don't want to do an \"anyMatch\" search on one column using data\n\t\t\t\t// for the entire row - see #998\n\t\t\t\tcolumnIndex = wo.filter_$anyMatch && wo.filter_$anyMatch.length ?\n\t\t\t\t\t// look for multiple columns '1-3,4-6,8'\n\t\t\t\t\ttsf.multipleColumns( c, wo.filter_$anyMatch ) :\n\t\t\t\t\t[];\n\t\t\tdata.$cells = data.$row.children();\n\t\t\tdata.matchedOn = null;\n\t\t\tif ( data.anyMatchFlag && columnIndex.length > 1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {\n\t\t\t\tdata.anyMatch = true;\n\t\t\t\tdata.isMatch = true;\n\t\t\t\tdata.rowArray = data.$cells.map( function( i ) {\n\t\t\t\t\tif ( $.inArray( i, columnIndex ) > -1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {\n\t\t\t\t\t\tif ( data.parsed[ i ] ) {\n\t\t\t\t\t\t\ttxt = data.cacheArray[ i ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttxt = data.rawArray[ i ];\n\t\t\t\t\t\t\ttxt = $.trim( wo.filter_ignoreCase ? txt.toLowerCase() : txt );\n\t\t\t\t\t\t\tif ( c.sortLocaleCompare ) {\n\t\t\t\t\t\t\t\ttxt = ts.replaceAccents( txt );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn txt;\n\t\t\t\t\t}\n\t\t\t\t}).get();\n\t\t\t\tdata.filter = data.anyMatchFilter;\n\t\t\t\tdata.iFilter = data.iAnyMatchFilter;\n\t\t\t\tdata.exact = data.rowArray.join( ' ' );\n\t\t\t\tdata.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact;\n\t\t\t\tdata.cache = data.cacheArray.slice( 0, -1 ).join( ' ' );\n\t\t\t\tvars.excludeMatch = vars.noAnyMatch;\n\t\t\t\tfilterMatched = tsf.processTypes( c, data, vars );\n\t\t\t\tif ( filterMatched !== null ) {\n\t\t\t\t\tshowRow = filterMatched;\n\t\t\t\t} else {\n\t\t\t\t\tif ( wo.filter_startsWith ) {\n\t\t\t\t\t\tshowRow = false;\n\t\t\t\t\t\t// data.rowArray may not contain all columns\n\t\t\t\t\t\tcolumnIndex = Math.min( c.columns, data.rowArray.length );\n\t\t\t\t\t\twhile ( !showRow && columnIndex > 0 ) {\n\t\t\t\t\t\t\tcolumnIndex--;\n\t\t\t\t\t\t\tshowRow = showRow || data.rowArray[ columnIndex ].indexOf( data.iFilter ) === 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowRow = ( data.iExact + data.childRowText ).indexOf( data.iFilter ) >= 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdata.anyMatch = false;\n\t\t\t\t// no other filters to process\n\t\t\t\tif ( data.filters.join( '' ) === data.filter ) {\n\t\t\t\t\treturn showRow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) {\n\t\t\t\tdata.filter = data.filters[ columnIndex ];\n\t\t\t\tdata.index = columnIndex;\n\n\t\t\t\t// filter types to exclude, per column\n\t\t\t\tvars.excludeMatch = vars.excludeFilter[ columnIndex ];\n\n\t\t\t\t// ignore if filter is empty or disabled\n\t\t\t\tif ( data.filter ) {\n\t\t\t\t\tdata.cache = data.cacheArray[ columnIndex ];\n\t\t\t\t\tresult = data.parsed[ columnIndex ] ? data.cache : data.rawArray[ columnIndex ] || '';\n\t\t\t\t\tdata.exact = c.sortLocaleCompare ? ts.replaceAccents( result ) : result; // issue #405\n\t\t\t\t\tdata.iExact = !tsfRegex.type.test( typeof data.exact ) && wo.filter_ignoreCase ?\n\t\t\t\t\t\tdata.exact.toLowerCase() : data.exact;\n\t\t\t\t\tdata.isMatch = tsf.matchType( c, columnIndex );\n\n\t\t\t\t\tresult = showRow; // if showRow is true, show that row\n\n\t\t\t\t\t// in case select filter option has a different value vs text 'a - z|A through Z'\n\t\t\t\t\tffxn = wo.filter_columnFilters ?\n\t\t\t\t\t\tc.$filters.add( wo.filter_$externalFilters )\n\t\t\t\t\t\t\t.filter( '[data-column=\"' + columnIndex + '\"]' )\n\t\t\t\t\t\t\t.find( 'select option:selected' )\n\t\t\t\t\t\t\t.attr( 'data-function-name' ) || '' : '';\n\t\t\t\t\t// replace accents - see #357\n\t\t\t\t\tif ( c.sortLocaleCompare ) {\n\t\t\t\t\t\tdata.filter = ts.replaceAccents( data.filter );\n\t\t\t\t\t}\n\n\t\t\t\t\t// replace column specific default filters - see #1088\n\t\t\t\t\tif ( wo.filter_defaultFilter && tsfRegex.iQuery.test( vars.defaultColFilter[ columnIndex ] ) ) {\n\t\t\t\t\t\tdata.filter = tsf.defaultFilter( data.filter, vars.defaultColFilter[ columnIndex ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// data.iFilter = case insensitive ( if wo.filter_ignoreCase is true ),\n\t\t\t\t\t// data.filter = case sensitive\n\t\t\t\t\tdata.iFilter = wo.filter_ignoreCase ? ( data.filter || '' ).toLowerCase() : data.filter;\n\t\t\t\t\tfxn = vars.functions[ columnIndex ];\n\t\t\t\t\tfilterMatched = null;\n\t\t\t\t\tif ( fxn ) {\n\t\t\t\t\t\tif ( typeof fxn === 'function' ) {\n\t\t\t\t\t\t\t// filter callback( exact cell content, parser normalized content,\n\t\t\t\t\t\t\t// filter input value, column index, jQuery row object )\n\t\t\t\t\t\t\tfilterMatched = fxn( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data );\n\t\t\t\t\t\t} else if ( typeof fxn[ ffxn || data.filter ] === 'function' ) {\n\t\t\t\t\t\t\t// selector option function\n\t\t\t\t\t\t\ttxt = ffxn || data.filter;\n\t\t\t\t\t\t\tfilterMatched =\n\t\t\t\t\t\t\t\tfxn[ txt ]( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( filterMatched === null ) {\n\t\t\t\t\t\t// cycle through the different filters\n\t\t\t\t\t\t// filters return a boolean or null if nothing matches\n\t\t\t\t\t\tfilterMatched = tsf.processTypes( c, data, vars );\n\t\t\t\t\t\t// select with exact match; ignore \"and\" or \"or\" within the text; fixes #1486\n\t\t\t\t\t\ttxt = fxn === true && (data.matchedOn === 'and' || data.matchedOn === 'or');\n\t\t\t\t\t\tif ( filterMatched !== null && !txt) {\n\t\t\t\t\t\t\tresult = filterMatched;\n\t\t\t\t\t\t// Look for match, and add child row data for matching\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// check fxn (filter-select in header) after filter types are checked\n\t\t\t\t\t\t\t// without this, the filter + jQuery UI selectmenu demo was breaking\n\t\t\t\t\t\t\tif ( fxn === true ) {\n\t\t\t\t\t\t\t\t// default selector uses exact match unless 'filter-match' class is found\n\t\t\t\t\t\t\t\tresult = data.isMatch ?\n\t\t\t\t\t\t\t\t\t// data.iExact may be a number\n\t\t\t\t\t\t\t\t\t( '' + data.iExact ).search( data.iFilter ) >= 0 :\n\t\t\t\t\t\t\t\t\tdata.filter === data.exact;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttxt = ( data.iExact + data.childRowText ).indexOf( tsf.parseFilter( c, data.iFilter, data ) );\n\t\t\t\t\t\t\t\tresult = ( ( !wo.filter_startsWith && txt >= 0 ) || ( wo.filter_startsWith && txt === 0 ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = filterMatched;\n\t\t\t\t\t}\n\t\t\t\t\tshowRow = ( result ) ? showRow : false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn showRow;\n\t\t},\n\t\tfindRows: function( table, filters, currentFilters ) {\n\t\t\tif (\n\t\t\t\ttsf.equalFilters(table.config, table.config.lastSearch, currentFilters) ||\n\t\t\t\t!table.config.widgetOptions.filter_initialized\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex,\n\t\t\t\tisChild, childRow, lastSearch, showRow, showParent, time, val, indx,\n\t\t\t\tnotFiltered, searchFiltered, query, injected, res, id, txt,\n\t\t\t\tstoredFilters = $.extend( [], filters ),\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tdebug = ts.debug(c, 'filter'),\n\t\t\t\t// data object passed to filters; anyMatch is a flag for the filters\n\t\t\t\tdata = {\n\t\t\t\t\tanyMatch: false,\n\t\t\t\t\tfilters: filters,\n\t\t\t\t\t// regex filter type cache\n\t\t\t\t\tfilter_regexCache : []\n\t\t\t\t},\n\t\t\t\tvars = {\n\t\t\t\t\t// anyMatch really screws up with these types of filters\n\t\t\t\t\tnoAnyMatch: [ 'range', 'operators' ],\n\t\t\t\t\t// cache filter variables that use ts.getColumnData in the main loop\n\t\t\t\t\tfunctions : [],\n\t\t\t\t\texcludeFilter : [],\n\t\t\t\t\tdefaultColFilter : [],\n\t\t\t\t\tdefaultAnyFilter : ts.getColumnData( table, wo.filter_defaultFilter, c.columns, true ) || ''\n\t\t\t\t};\n\t\t\t// parse columns after formatter, in case the class is added at that point\n\t\t\tdata.parsed = [];\n\t\t\tfor ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) {\n\t\t\t\tdata.parsed[ columnIndex ] = wo.filter_useParsedData ||\n\t\t\t\t\t// parser has a \"parsed\" parameter\n\t\t\t\t\t( c.parsers && c.parsers[ columnIndex ] && c.parsers[ columnIndex ].parsed ||\n\t\t\t\t\t// getData may not return 'parsed' if other 'filter-' class names exist\n\t\t\t\t\t// ( e.g. <th class=\"filter-select filter-parsed\"> )\n\t\t\t\t\tts.getData && ts.getData( c.$headerIndexed[ columnIndex ],\n\t\t\t\t\t\tts.getColumnData( table, c.headers, columnIndex ), 'filter' ) === 'parsed' ||\n\t\t\t\t\tc.$headerIndexed[ columnIndex ].hasClass( 'filter-parsed' ) );\n\n\t\t\t\tvars.functions[ columnIndex ] =\n\t\t\t\t\tts.getColumnData( table, wo.filter_functions, columnIndex ) ||\n\t\t\t\t\tc.$headerIndexed[ columnIndex ].hasClass( 'filter-select' );\n\t\t\t\tvars.defaultColFilter[ columnIndex ] =\n\t\t\t\t\tts.getColumnData( table, wo.filter_defaultFilter, columnIndex ) || '';\n\t\t\t\tvars.excludeFilter[ columnIndex ] =\n\t\t\t\t\t( ts.getColumnData( table, wo.filter_excludeFilter, columnIndex, true ) || '' ).split( /\\s+/ );\n\t\t\t}\n\n\t\t\tif ( debug ) {\n\t\t\t\tconsole.log( 'Filter >> Starting filter widget search', filters );\n\t\t\t\ttime = new Date();\n\t\t\t}\n\t\t\t// filtered rows count\n\t\t\tc.filteredRows = 0;\n\t\t\tc.totalRows = 0;\n\t\t\tcurrentFilters = ( storedFilters || [] );\n\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true );\n\t\t\t\t// skip child rows & widget added ( removable ) rows - fixes #448 thanks to @hempel!\n\t\t\t\t// $rows = $tbody.children( 'tr' ).not( c.selectorRemove );\n\t\t\t\tcolumnIndex = c.columns;\n\t\t\t\t// convert stored rows into a jQuery object\n\t\t\t\tnorm_rows = c.cache[ tbodyIndex ].normalized;\n\t\t\t\t$rows = $( $.map( norm_rows, function( el ) {\n\t\t\t\t\treturn el[ columnIndex ].$row.get();\n\t\t\t\t}) );\n\n\t\t\t\tif ( currentFilters.join('') === '' || wo.filter_serversideFiltering ) {\n\t\t\t\t\t$rows\n\t\t\t\t\t\t.removeClass( wo.filter_filteredRow )\n\t\t\t\t\t\t.not( '.' + c.cssChildRow )\n\t\t\t\t\t\t.css( 'display', '' );\n\t\t\t\t} else {\n\t\t\t\t\t// filter out child rows\n\t\t\t\t\t$rows = $rows.not( '.' + c.cssChildRow );\n\t\t\t\t\tlen = $rows.length;\n\n\t\t\t\t\tif ( ( wo.filter_$anyMatch && wo.filter_$anyMatch.length ) ||\n\t\t\t\t\t\ttypeof filters[c.columns] !== 'undefined' ) {\n\t\t\t\t\t\tdata.anyMatchFlag = true;\n\t\t\t\t\t\tdata.anyMatchFilter = '' + (\n\t\t\t\t\t\t\tfilters[ c.columns ] ||\n\t\t\t\t\t\t\two.filter_$anyMatch && tsf.getLatestSearch( wo.filter_$anyMatch ).val() ||\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( wo.filter_columnAnyMatch ) {\n\t\t\t\t\t\t\t// specific columns search\n\t\t\t\t\t\t\tquery = data.anyMatchFilter.split( tsfRegex.andSplit );\n\t\t\t\t\t\t\tinjected = false;\n\t\t\t\t\t\t\tfor ( indx = 0; indx < query.length; indx++ ) {\n\t\t\t\t\t\t\t\tres = query[ indx ].split( ':' );\n\t\t\t\t\t\t\t\tif ( res.length > 1 ) {\n\t\t\t\t\t\t\t\t\t// make the column a one-based index ( non-developers start counting from one :P )\n\t\t\t\t\t\t\t\t\tif ( isNaN( res[0] ) ) {\n\t\t\t\t\t\t\t\t\t\t$.each( c.headerContent, function( i, txt ) {\n\t\t\t\t\t\t\t\t\t\t\t// multiple matches are possible\n\t\t\t\t\t\t\t\t\t\t\tif ( txt.toLowerCase().indexOf( res[0] ) > -1 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tid = i;\n\t\t\t\t\t\t\t\t\t\t\t\tfilters[ id ] = res[1];\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tid = parseInt( res[0], 10 ) - 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( id >= 0 && id < c.columns ) { // if id is an integer\n\t\t\t\t\t\t\t\t\t\tfilters[ id ] = res[1];\n\t\t\t\t\t\t\t\t\t\tquery.splice( indx, 1 );\n\t\t\t\t\t\t\t\t\t\tindx--;\n\t\t\t\t\t\t\t\t\t\tinjected = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( injected ) {\n\t\t\t\t\t\t\t\tdata.anyMatchFilter = query.join( ' && ' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// optimize searching only through already filtered rows - see #313\n\t\t\t\t\tsearchFiltered = wo.filter_searchFiltered;\n\t\t\t\t\tlastSearch = c.lastSearch || c.$table.data( 'lastSearch' ) || [];\n\t\t\t\t\tif ( searchFiltered ) {\n\t\t\t\t\t\t// cycle through all filters; include last ( columnIndex + 1 = match any column ). Fixes #669\n\t\t\t\t\t\tfor ( indx = 0; indx < columnIndex + 1; indx++ ) {\n\t\t\t\t\t\t\tval = filters[indx] || '';\n\t\t\t\t\t\t\t// break out of loop if we've already determined not to search filtered rows\n\t\t\t\t\t\t\tif ( !searchFiltered ) { indx = columnIndex; }\n\t\t\t\t\t\t\t// search already filtered rows if...\n\t\t\t\t\t\t\tsearchFiltered = searchFiltered && lastSearch.length &&\n\t\t\t\t\t\t\t\t// there are no changes from beginning of filter\n\t\t\t\t\t\t\t\tval.indexOf( lastSearch[indx] || '' ) === 0 &&\n\t\t\t\t\t\t\t\t// if there is NOT a logical 'or', or range ( 'to' or '-' ) in the string\n\t\t\t\t\t\t\t\t!tsfRegex.alreadyFiltered.test( val ) &&\n\t\t\t\t\t\t\t\t// if we are not doing exact matches, using '|' ( logical or ) or not '!'\n\t\t\t\t\t\t\t\t!tsfRegex.exactTest.test( val ) &&\n\t\t\t\t\t\t\t\t// don't search only filtered if the value is negative\n\t\t\t\t\t\t\t\t// ( '> -10' => '> -100' will ignore hidden rows )\n\t\t\t\t\t\t\t\t!( tsfRegex.isNeg1.test( val ) || tsfRegex.isNeg2.test( val ) ) &&\n\t\t\t\t\t\t\t\t// if filtering using a select without a 'filter-match' class ( exact match ) - fixes #593\n\t\t\t\t\t\t\t\t!( val !== '' && c.$filters && c.$filters.filter( '[data-column=\"' + indx + '\"]' ).find( 'select' ).length &&\n\t\t\t\t\t\t\t\t\t!tsf.matchType( c, indx ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnotFiltered = $rows.not( '.' + wo.filter_filteredRow ).length;\n\t\t\t\t\t// can't search when all rows are hidden - this happens when looking for exact matches\n\t\t\t\t\tif ( searchFiltered && notFiltered === 0 ) { searchFiltered = false; }\n\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\tconsole.log( 'Filter >> Searching through ' +\n\t\t\t\t\t\t\t( searchFiltered && notFiltered < len ? notFiltered : 'all' ) + ' rows' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( data.anyMatchFlag ) {\n\t\t\t\t\t\tif ( c.sortLocaleCompare ) {\n\t\t\t\t\t\t\t// replace accents\n\t\t\t\t\t\t\tdata.anyMatchFilter = ts.replaceAccents( data.anyMatchFilter );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( wo.filter_defaultFilter && tsfRegex.iQuery.test( vars.defaultAnyFilter ) ) {\n\t\t\t\t\t\t\tdata.anyMatchFilter = tsf.defaultFilter( data.anyMatchFilter, vars.defaultAnyFilter );\n\t\t\t\t\t\t\t// clear search filtered flag because default filters are not saved to the last search\n\t\t\t\t\t\t\tsearchFiltered = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// make iAnyMatchFilter lowercase unless both filter widget & core ignoreCase options are true\n\t\t\t\t\t\t// when c.ignoreCase is true, the cache contains all lower case data\n\t\t\t\t\t\tdata.iAnyMatchFilter = !( wo.filter_ignoreCase && c.ignoreCase ) ?\n\t\t\t\t\t\t\tdata.anyMatchFilter :\n\t\t\t\t\t\t\tdata.anyMatchFilter.toLowerCase();\n\t\t\t\t\t}\n\n\t\t\t\t\t// loop through the rows\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\n\n\t\t\t\t\t\ttxt = $rows[ rowIndex ].className;\n\t\t\t\t\t\t// the first row can never be a child row\n\t\t\t\t\t\tisChild = rowIndex && tsfRegex.child.test( txt );\n\t\t\t\t\t\t// skip child rows & already filtered rows\n\t\t\t\t\t\tif ( isChild || ( searchFiltered && tsfRegex.filtered.test( txt ) ) ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.$row = $rows.eq( rowIndex );\n\t\t\t\t\t\tdata.rowIndex = rowIndex;\n\t\t\t\t\t\tdata.cacheArray = norm_rows[ rowIndex ];\n\t\t\t\t\t\trowData = data.cacheArray[ c.columns ];\n\t\t\t\t\t\tdata.rawArray = rowData.raw;\n\t\t\t\t\t\tdata.childRowText = '';\n\n\t\t\t\t\t\tif ( !wo.filter_childByColumn ) {\n\t\t\t\t\t\t\ttxt = '';\n\t\t\t\t\t\t\t// child row cached text\n\t\t\t\t\t\t\tchildRow = rowData.child;\n\t\t\t\t\t\t\t// so, if 'table.config.widgetOptions.filter_childRows' is true and there is\n\t\t\t\t\t\t\t// a match anywhere in the child row, then it will make the row visible\n\t\t\t\t\t\t\t// checked here so the option can be changed dynamically\n\t\t\t\t\t\t\tfor ( indx = 0; indx < childRow.length; indx++ ) {\n\t\t\t\t\t\t\t\ttxt += ' ' + childRow[indx].join( ' ' ) || '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata.childRowText = wo.filter_childRows ?\n\t\t\t\t\t\t\t\t( wo.filter_ignoreCase ? txt.toLowerCase() : txt ) :\n\t\t\t\t\t\t\t\t'';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tshowRow = false;\n\t\t\t\t\t\tshowParent = tsf.processRow( c, data, vars );\n\t\t\t\t\t\t$row = rowData.$row;\n\n\t\t\t\t\t\t// don't pass reference to val\n\t\t\t\t\t\tval = showParent ? true : false;\n\t\t\t\t\t\tchildRow = rowData.$row.filter( ':gt(0)' );\n\t\t\t\t\t\tif ( wo.filter_childRows && childRow.length ) {\n\t\t\t\t\t\t\tif ( wo.filter_childByColumn ) {\n\t\t\t\t\t\t\t\tif ( !wo.filter_childWithSibs ) {\n\t\t\t\t\t\t\t\t\t// hide all child rows\n\t\t\t\t\t\t\t\t\tchildRow.addClass( wo.filter_filteredRow );\n\t\t\t\t\t\t\t\t\t// if only showing resulting child row, only include parent\n\t\t\t\t\t\t\t\t\t$row = $row.eq( 0 );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// cycle through each child row\n\t\t\t\t\t\t\t\tfor ( indx = 0; indx < childRow.length; indx++ ) {\n\t\t\t\t\t\t\t\t\tdata.$row = childRow.eq( indx );\n\t\t\t\t\t\t\t\t\tdata.cacheArray = rowData.child[ indx ];\n\t\t\t\t\t\t\t\t\tdata.rawArray = data.cacheArray;\n\t\t\t\t\t\t\t\t\tval = tsf.processRow( c, data, vars );\n\t\t\t\t\t\t\t\t\t// use OR comparison on child rows\n\t\t\t\t\t\t\t\t\tshowRow = showRow || val;\n\t\t\t\t\t\t\t\t\tif ( !wo.filter_childWithSibs && val ) {\n\t\t\t\t\t\t\t\t\t\tchildRow.eq( indx ).removeClass( wo.filter_filteredRow );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// keep parent row match even if no child matches... see #1020\n\t\t\t\t\t\t\tshowRow = showRow || showParent;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tshowRow = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$row\n\t\t\t\t\t\t\t.toggleClass( wo.filter_filteredRow, !showRow )[0]\n\t\t\t\t\t\t\t.display = showRow ? '' : 'none';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tc.filteredRows += $rows.not( '.' + wo.filter_filteredRow ).length;\n\t\t\t\tc.totalRows += $rows.length;\n\t\t\t\tts.processTbody( table, $tbody, false );\n\t\t\t}\n\t\t\t// lastCombinedFilter is no longer used internally\n\t\t\tc.lastCombinedFilter = storedFilters.join(''); // save last search\n\t\t\t// don't save 'filters' directly since it may have altered ( AnyMatch column searches )\n\t\t\tc.lastSearch = storedFilters;\n\t\t\tc.$table.data( 'lastSearch', storedFilters );\n\t\t\tif ( wo.filter_saveFilters && ts.storage ) {\n\t\t\t\tts.storage( table, 'tablesorter-filters', tsf.processFilters( storedFilters, true ) );\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tconsole.log( 'Filter >> Completed search' + ts.benchmark(time) );\n\t\t\t}\n\t\t\tif ( wo.filter_initialized ) {\n\t\t\t\tc.$table.triggerHandler( 'filterBeforeEnd', c );\n\t\t\t\tc.$table.triggerHandler( 'filterEnd', c );\n\t\t\t}\n\t\t\tsetTimeout( function() {\n\t\t\t\tts.applyWidget( c.table ); // make sure zebra widget is applied\n\t\t\t}, 0 );\n\t\t},\n\t\tgetOptionSource: function( table, column, onlyAvail ) {\n\t\t\ttable = $( table )[0];\n\t\t\tvar c = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tarry = false,\n\t\t\t\tsource = wo.filter_selectSource,\n\t\t\t\tlast = c.$table.data( 'lastSearch' ) || [],\n\t\t\t\tfxn = typeof source === 'function' ? true : ts.getColumnData( table, source, column );\n\n\t\t\tif ( onlyAvail && last[column] !== '' ) {\n\t\t\t\tonlyAvail = false;\n\t\t\t}\n\n\t\t\t// filter select source option\n\t\t\tif ( fxn === true ) {\n\t\t\t\t// OVERALL source\n\t\t\t\tarry = source( table, column, onlyAvail );\n\t\t\t} else if ( fxn instanceof $ || ( $.type( fxn ) === 'string' && fxn.indexOf( '</option>' ) >= 0 ) ) {\n\t\t\t\t// selectSource is a jQuery object or string of options\n\t\t\t\treturn fxn;\n\t\t\t} else if ( $.isArray( fxn ) ) {\n\t\t\t\tarry = fxn;\n\t\t\t} else if ( $.type( source ) === 'object' && fxn ) {\n\t\t\t\t// custom select source function for a SPECIFIC COLUMN\n\t\t\t\tarry = fxn( table, column, onlyAvail );\n\t\t\t\t// abort - updating the selects from an external method\n\t\t\t\tif (arry === null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( arry === false ) {\n\t\t\t\t// fall back to original method\n\t\t\t\tarry = tsf.getOptions( table, column, onlyAvail );\n\t\t\t}\n\n\t\t\treturn tsf.processOptions( table, column, arry );\n\n\t\t},\n\t\tprocessOptions: function( table, column, arry ) {\n\t\t\tif ( !$.isArray( arry ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttable = $( table )[0];\n\t\t\tvar cts, txt, indx, len, parsedTxt, str,\n\t\t\t\tc = table.config,\n\t\t\t\tvalidColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns,\n\t\t\t\tdirection = validColumn ? c.$headerIndexed[ column ].hasClass( 'filter-select-sort-desc' ) : false,\n\t\t\t\tparsed = [];\n\t\t\t// get unique elements and sort the list\n\t\t\t// if $.tablesorter.sortText exists ( not in the original tablesorter ),\n\t\t\t// then natural sort the list otherwise use a basic sort\n\t\t\tarry = $.grep( arry, function( value, indx ) {\n\t\t\t\tif ( value.text ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn $.inArray( value, arry ) === indx;\n\t\t\t});\n\t\t\tif ( validColumn && c.$headerIndexed[ column ].hasClass( 'filter-select-nosort' ) ) {\n\t\t\t\t// unsorted select options\n\t\t\t\treturn arry;\n\t\t\t} else {\n\t\t\t\tlen = arry.length;\n\t\t\t\t// parse select option values\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\ttxt = arry[ indx ];\n\t\t\t\t\t// check for object\n\t\t\t\t\tstr = txt.text ? txt.text : txt;\n\t\t\t\t\t// sortNatural breaks if you don't pass it strings\n\t\t\t\t\tparsedTxt = ( validColumn && c.parsers && c.parsers.length &&\n\t\t\t\t\t\tc.parsers[ column ].format( str, table, [], column ) || str ).toString();\n\t\t\t\t\tparsedTxt = c.widgetOptions.filter_ignoreCase ? parsedTxt.toLowerCase() : parsedTxt;\n\t\t\t\t\t// parse array data using set column parser; this DOES NOT pass the original\n\t\t\t\t\t// table cell to the parser format function\n\t\t\t\t\tif ( txt.text ) {\n\t\t\t\t\t\ttxt.parsed = parsedTxt;\n\t\t\t\t\t\tparsed[ parsed.length ] = txt;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparsed[ parsed.length ] = {\n\t\t\t\t\t\t\ttext : txt,\n\t\t\t\t\t\t\t// check parser length - fixes #934\n\t\t\t\t\t\t\tparsed : parsedTxt\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// sort parsed select options\n\t\t\t\tcts = c.textSorter || '';\n\t\t\t\tparsed.sort( function( a, b ) {\n\t\t\t\t\tvar x = direction ? b.parsed : a.parsed,\n\t\t\t\t\t\ty = direction ? a.parsed : b.parsed;\n\t\t\t\t\tif ( validColumn && typeof cts === 'function' ) {\n\t\t\t\t\t\t// custom OVERALL text sorter\n\t\t\t\t\t\treturn cts( x, y, true, column, table );\n\t\t\t\t\t} else if ( validColumn && typeof cts === 'object' && cts.hasOwnProperty( column ) ) {\n\t\t\t\t\t\t// custom text sorter for a SPECIFIC COLUMN\n\t\t\t\t\t\treturn cts[column]( x, y, true, column, table );\n\t\t\t\t\t} else if ( ts.sortNatural ) {\n\t\t\t\t\t\t// fall back to natural sort\n\t\t\t\t\t\treturn ts.sortNatural( x, y );\n\t\t\t\t\t}\n\t\t\t\t\t// using an older version! do a basic sort\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\t// rebuild arry from sorted parsed data\n\t\t\t\tarry = [];\n\t\t\t\tlen = parsed.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tarry[ arry.length ] = parsed[indx];\n\t\t\t\t}\n\t\t\t\treturn arry;\n\t\t\t}\n\t\t},\n\t\tgetOptions: function( table, column, onlyAvail ) {\n\t\t\ttable = $( table )[0];\n\t\t\tvar rowIndex, tbodyIndex, len, row, cache, indx, child, childLen,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tarry = [];\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {\n\t\t\t\tcache = c.cache[tbodyIndex];\n\t\t\t\tlen = c.cache[tbodyIndex].normalized.length;\n\t\t\t\t// loop through the rows\n\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\n\t\t\t\t\t// get cached row from cache.row ( old ) or row data object\n\t\t\t\t\t// ( new; last item in normalized array )\n\t\t\t\t\trow = cache.row ?\n\t\t\t\t\t\tcache.row[ rowIndex ] :\n\t\t\t\t\t\tcache.normalized[ rowIndex ][ c.columns ].$row[0];\n\t\t\t\t\t// check if has class filtered\n\t\t\t\t\tif ( onlyAvail && row.className.match( wo.filter_filteredRow ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// get non-normalized cell content\n\t\t\t\t\tif ( wo.filter_useParsedData ||\n\t\t\t\t\t\tc.parsers[column].parsed ||\n\t\t\t\t\t\tc.$headerIndexed[column].hasClass( 'filter-parsed' ) ) {\n\t\t\t\t\t\tarry[ arry.length ] = '' + cache.normalized[ rowIndex ][ column ];\n\t\t\t\t\t\t// child row parsed data\n\t\t\t\t\t\tif ( wo.filter_childRows && wo.filter_childByColumn ) {\n\t\t\t\t\t\t\tchildLen = cache.normalized[ rowIndex ][ c.columns ].$row.length - 1;\n\t\t\t\t\t\t\tfor ( indx = 0; indx < childLen; indx++ ) {\n\t\t\t\t\t\t\t\tarry[ arry.length ] = '' + cache.normalized[ rowIndex ][ c.columns ].child[ indx ][ column ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// get raw cached data instead of content directly from the cells\n\t\t\t\t\t\tarry[ arry.length ] = cache.normalized[ rowIndex ][ c.columns ].raw[ column ];\n\t\t\t\t\t\t// child row unparsed data\n\t\t\t\t\t\tif ( wo.filter_childRows && wo.filter_childByColumn ) {\n\t\t\t\t\t\t\tchildLen = cache.normalized[ rowIndex ][ c.columns ].$row.length;\n\t\t\t\t\t\t\tfor ( indx = 1; indx < childLen; indx++ ) {\n\t\t\t\t\t\t\t\tchild = cache.normalized[ rowIndex ][ c.columns ].$row.eq( indx ).children().eq( column );\n\t\t\t\t\t\t\t\tarry[ arry.length ] = '' + ts.getElementText( c, child, column );\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\treturn arry;\n\t\t},\n\t\tbuildSelect: function( table, column, arry, updating, onlyAvail ) {\n\t\t\ttable = $( table )[0];\n\t\t\tcolumn = parseInt( column, 10 );\n\t\t\tif ( !table.config.cache || $.isEmptyObject( table.config.cache ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar indx, val, txt, t, $filters, $filter, option,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tnode = c.$headerIndexed[ column ],\n\t\t\t\t// t.data( 'placeholder' ) won't work in jQuery older than 1.4.3\n\t\t\t\toptions = '<option value=\"\">' +\n\t\t\t\t\t( node.data( 'placeholder' ) ||\n\t\t\t\t\t\tnode.attr( 'data-placeholder' ) ||\n\t\t\t\t\t\two.filter_placeholder.select || ''\n\t\t\t\t\t) + '</option>',\n\t\t\t\t// Get curent filter value\n\t\t\t\tcurrentValue = c.$table\n\t\t\t\t\t.find( 'thead' )\n\t\t\t\t\t.find( 'select.' + tscss.filter + '[data-column=\"' + column + '\"]' )\n\t\t\t\t\t.val();\n\n\t\t\t// nothing included in arry ( external source ), so get the options from\n\t\t\t// filter_selectSource or column data\n\t\t\tif ( typeof arry === 'undefined' || arry === '' ) {\n\t\t\t\tarry = tsf.getOptionSource( table, column, onlyAvail );\n\t\t\t\t// abort, selects are updated by an external method\n\t\t\t\tif (arry === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $.isArray( arry ) ) {\n\t\t\t\t// build option list\n\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\n\t\t\t\t\toption = arry[ indx ];\n\t\t\t\t\tif ( option.text ) {\n\t\t\t\t\t\t// OBJECT!! add data-function-name in case the value is set in filter_functions\n\t\t\t\t\t\toption['data-function-name'] = typeof option.value === 'undefined' ? option.text : option.value;\n\n\t\t\t\t\t\t// support jQuery < v1.8, otherwise the below code could be shortened to\n\t\t\t\t\t\t// options += $( '<option>', option )[ 0 ].outerHTML;\n\t\t\t\t\t\toptions += '<option';\n\t\t\t\t\t\tfor ( val in option ) {\n\t\t\t\t\t\t\tif ( option.hasOwnProperty( val ) && val !== 'text' ) {\n\t\t\t\t\t\t\t\toptions += ' ' + val + '=\"' + option[ val ].replace( tsfRegex.quote, '&quot;' ) + '\"';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( !option.value ) {\n\t\t\t\t\t\t\toptions += ' value=\"' + option.text.replace( tsfRegex.quote, '&quot;' ) + '\"';\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions += '>' + option.text.replace( tsfRegex.quote, '&quot;' ) + '</option>';\n\t\t\t\t\t\t// above code is needed in jQuery < v1.8\n\n\t\t\t\t\t\t// make sure we don't turn an object into a string (objects without a \"text\" property)\n\t\t\t\t\t} else if ( '' + option !== '[object Object]' ) {\n\t\t\t\t\t\ttxt = option = ( '' + option ).replace( tsfRegex.quote, '&quot;' );\n\t\t\t\t\t\tval = txt;\n\t\t\t\t\t\t// allow including a symbol in the selectSource array\n\t\t\t\t\t\t// 'a-z|A through Z' so that 'a-z' becomes the option value\n\t\t\t\t\t\t// and 'A through Z' becomes the option text\n\t\t\t\t\t\tif ( txt.indexOf( wo.filter_selectSourceSeparator ) >= 0 ) {\n\t\t\t\t\t\t\tt = txt.split( wo.filter_selectSourceSeparator );\n\t\t\t\t\t\t\tval = t[0];\n\t\t\t\t\t\t\ttxt = t[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// replace quotes - fixes #242 & ignore empty strings\n\t\t\t\t\t\t// see http://stackoverflow.com/q/14990971/145346\n\t\t\t\t\t\toptions += option !== '' ?\n\t\t\t\t\t\t\t'<option ' +\n\t\t\t\t\t\t\t\t( val === txt ? '' : 'data-function-name=\"' + option + '\" ' ) +\n\t\t\t\t\t\t\t\t'value=\"' + val + '\">' + txt +\n\t\t\t\t\t\t\t'</option>' : '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// clear arry so it doesn't get appended twice\n\t\t\t\tarry = [];\n\t\t\t}\n\n\t\t\t// update all selects in the same column ( clone thead in sticky headers &\n\t\t\t// any external selects ) - fixes 473\n\t\t\t$filters = ( c.$filters ? c.$filters : c.$table.children( 'thead' ) )\n\t\t\t\t.find( '.' + tscss.filter );\n\t\t\tif ( wo.filter_$externalFilters ) {\n\t\t\t\t$filters = $filters && $filters.length ?\n\t\t\t\t\t$filters.add( wo.filter_$externalFilters ) :\n\t\t\t\t\two.filter_$externalFilters;\n\t\t\t}\n\t\t\t$filter = $filters.filter( 'select[data-column=\"' + column + '\"]' );\n\n\t\t\t// make sure there is a select there!\n\t\t\tif ( $filter.length ) {\n\t\t\t\t$filter[ updating ? 'html' : 'append' ]( options );\n\t\t\t\tif ( !$.isArray( arry ) ) {\n\t\t\t\t\t// append options if arry is provided externally as a string or jQuery object\n\t\t\t\t\t// options ( default value ) was already added\n\t\t\t\t\t$filter.append( arry ).val( currentValue );\n\t\t\t\t}\n\t\t\t\t$filter.val( currentValue );\n\t\t\t}\n\t\t},\n\t\tbuildDefault: function( table, updating ) {\n\t\t\tvar columnIndex, $header, noSelect,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tcolumns = c.columns;\n\t\t\t// build default select dropdown\n\t\t\tfor ( columnIndex = 0; columnIndex < columns; columnIndex++ ) {\n\t\t\t\t$header = c.$headerIndexed[columnIndex];\n\t\t\t\tnoSelect = !( $header.hasClass( 'filter-false' ) || $header.hasClass( 'parser-false' ) );\n\t\t\t\t// look for the filter-select class; build/update it if found\n\t\t\t\tif ( ( $header.hasClass( 'filter-select' ) ||\n\t\t\t\t\tts.getColumnData( table, wo.filter_functions, columnIndex ) === true ) && noSelect ) {\n\t\t\t\t\ttsf.buildSelect( table, columnIndex, '', updating, $header.hasClass( wo.filter_onlyAvail ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// filter regex variable\n\ttsfRegex = tsf.regex;\n\n\tts.getFilters = function( table, getRaw, setFilters, skipFirst ) {\n\t\tvar i, $filters, $column, cols,\n\t\t\tfilters = [],\n\t\t\tc = table ? $( table )[0].config : '',\n\t\t\two = c ? c.widgetOptions : '';\n\t\tif ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||\n\t\t\t// setFilters called, but last search is exactly the same as the current\n\t\t\t// fixes issue #733 & #903 where calling update causes the input values to reset\n\t\t\t( $.isArray(setFilters) && tsf.equalFilters(c, setFilters, c.lastSearch) )\n\t\t) {\n\t\t\treturn $( table ).data( 'lastSearch' ) || [];\n\t\t}\n\t\tif ( c ) {\n\t\t\tif ( c.$filters ) {\n\t\t\t\t$filters = c.$filters.find( '.' + tscss.filter );\n\t\t\t}\n\t\t\tif ( wo.filter_$externalFilters ) {\n\t\t\t\t$filters = $filters && $filters.length ?\n\t\t\t\t\t$filters.add( wo.filter_$externalFilters ) :\n\t\t\t\t\two.filter_$externalFilters;\n\t\t\t}\n\t\t\tif ( $filters && $filters.length ) {\n\t\t\t\tfilters = setFilters || [];\n\t\t\t\tfor ( i = 0; i < c.columns + 1; i++ ) {\n\t\t\t\t\tcols = ( i === c.columns ?\n\t\t\t\t\t\t// 'all' columns can now include a range or set of columms ( data-column='0-2,4,6-7' )\n\t\t\t\t\t\two.filter_anyColumnSelector + ',' + wo.filter_multipleColumnSelector :\n\t\t\t\t\t\t'[data-column=\"' + i + '\"]' );\n\t\t\t\t\t$column = $filters.filter( cols );\n\t\t\t\t\tif ( $column.length ) {\n\t\t\t\t\t\t// move the latest search to the first slot in the array\n\t\t\t\t\t\t$column = tsf.getLatestSearch( $column );\n\t\t\t\t\t\tif ( $.isArray( setFilters ) ) {\n\t\t\t\t\t\t\t// skip first ( latest input ) to maintain cursor position while typing\n\t\t\t\t\t\t\tif ( skipFirst && $column.length > 1 ) {\n\t\t\t\t\t\t\t\t$column = $column.slice( 1 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( i === c.columns ) {\n\t\t\t\t\t\t\t\t// prevent data-column='all' from filling data-column='0,1' ( etc )\n\t\t\t\t\t\t\t\tcols = $column.filter( wo.filter_anyColumnSelector );\n\t\t\t\t\t\t\t\t$column = cols.length ? cols : $column;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$column\n\t\t\t\t\t\t\t\t.val( setFilters[ i ] )\n\t\t\t\t\t\t\t\t// must include a namespace here; but not c.namespace + 'filter'?\n\t\t\t\t\t\t\t\t.trigger( 'change' + c.namespace );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilters[i] = $column.val() || '';\n\t\t\t\t\t\t\t// don't change the first... it will move the cursor\n\t\t\t\t\t\t\tif ( i === c.columns ) {\n\t\t\t\t\t\t\t\t// don't update range columns from 'all' setting\n\t\t\t\t\t\t\t\t$column\n\t\t\t\t\t\t\t\t\t.slice( 1 )\n\t\t\t\t\t\t\t\t\t.filter( '[data-column*=\"' + $column.attr( 'data-column' ) + '\"]' )\n\t\t\t\t\t\t\t\t\t.val( filters[ i ] );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$column\n\t\t\t\t\t\t\t\t\t.slice( 1 )\n\t\t\t\t\t\t\t\t\t.val( filters[ i ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// save any match input dynamically\n\t\t\t\t\t\tif ( i === c.columns && $column.length ) {\n\t\t\t\t\t\t\two.filter_$anyMatch = $column;\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}\n\t\treturn filters;\n\t};\n\n\tts.setFilters = function( table, filter, apply, skipFirst ) {\n\t\tvar c = table ? $( table )[0].config : '',\n\t\t\tvalid = ts.getFilters( table, true, filter, skipFirst );\n\t\t// default apply to \"true\"\n\t\tif ( typeof apply === 'undefined' ) {\n\t\t\tapply = true;\n\t\t}\n\t\tif ( c && apply ) {\n\t\t\t// ensure new set filters are applied, even if the search is the same\n\t\t\tc.lastCombinedFilter = null;\n\t\t\tc.lastSearch = [];\n\t\t\ttsf.searching( c.table, filter, skipFirst );\n\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\n\t\t}\n\t\treturn valid.length !== 0;\n\t};\n\n})( jQuery );\n\n/*! Widget: stickyHeaders - updated 9/27/2017 (v2.29.0) *//*\n * Requires tablesorter v2.8+ and jQuery 1.4.3+\n * by Rob Garrison\n */\n;(function ($, window) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\t$.extend(ts.css, {\n\t\tsticky : 'tablesorter-stickyHeader', // stickyHeader\n\t\tstickyVis : 'tablesorter-sticky-visible',\n\t\tstickyHide: 'tablesorter-sticky-hidden',\n\t\tstickyWrap: 'tablesorter-sticky-wrapper'\n\t});\n\n\t// Add a resize event to table headers\n\tts.addHeaderResizeEvent = function(table, disable, settings) {\n\t\ttable = $(table)[0]; // make sure we're using a dom element\n\t\tif ( !table.config ) { return; }\n\t\tvar defaults = {\n\t\t\t\ttimer : 250\n\t\t\t},\n\t\t\toptions = $.extend({}, defaults, settings),\n\t\t\tc = table.config,\n\t\t\two = c.widgetOptions,\n\t\t\tcheckSizes = function( triggerEvent ) {\n\t\t\t\tvar index, headers, $header, sizes, width, height,\n\t\t\t\t\tlen = c.$headers.length;\n\t\t\t\two.resize_flag = true;\n\t\t\t\theaders = [];\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t$header = c.$headers.eq( index );\n\t\t\t\t\tsizes = $header.data( 'savedSizes' ) || [ 0, 0 ]; // fixes #394\n\t\t\t\t\twidth = $header[0].offsetWidth;\n\t\t\t\t\theight = $header[0].offsetHeight;\n\t\t\t\t\tif ( width !== sizes[0] || height !== sizes[1] ) {\n\t\t\t\t\t\t$header.data( 'savedSizes', [ width, height ] );\n\t\t\t\t\t\theaders.push( $header[0] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( headers.length && triggerEvent !== false ) {\n\t\t\t\t\tc.$table.triggerHandler( 'resize', [ headers ] );\n\t\t\t\t}\n\t\t\t\two.resize_flag = false;\n\t\t\t};\n\t\tclearInterval(wo.resize_timer);\n\t\tif (disable) {\n\t\t\two.resize_flag = false;\n\t\t\treturn false;\n\t\t}\n\t\tcheckSizes( false );\n\t\two.resize_timer = setInterval(function() {\n\t\t\tif (wo.resize_flag) { return; }\n\t\t\tcheckSizes();\n\t\t}, options.timer);\n\t};\n\n\tfunction getStickyOffset(c, wo) {\n\t\tvar $el = isNaN(wo.stickyHeaders_offset) ? $(wo.stickyHeaders_offset) : [];\n\t\treturn $el.length ?\n\t\t\t$el.height() || 0 :\n\t\t\tparseInt(wo.stickyHeaders_offset, 10) || 0;\n\t}\n\n\t// Sticky headers based on this awesome article:\n\t// http://css-tricks.com/13465-persistent-headers/\n\t// and https://github.com/jmosbech/StickyTableHeaders by Jonas Mosbech\n\t// **************************\n\tts.addWidget({\n\t\tid: 'stickyHeaders',\n\t\tpriority: 54, // sticky widget must be initialized after the filter & before pager widget!\n\t\toptions: {\n\t\t\tstickyHeaders : '', // extra class name added to the sticky header row\n\t\t\tstickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers\n\t\t\tstickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)\n\t\t\tstickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)\n\t\t\tstickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)\n\t\t\tstickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element\n\t\t\tstickyHeaders_filteredToTop: true, // scroll table top into view after filtering\n\t\t\tstickyHeaders_cloneId : '-sticky', // added to table ID, if it exists\n\t\t\tstickyHeaders_addResizeEvent : true, // trigger 'resize' event on headers\n\t\t\tstickyHeaders_includeCaption : true, // if false and a caption exist, it won't be included in the sticky header\n\t\t\tstickyHeaders_zIndex : 2 // The zIndex of the stickyHeaders, allows the user to adjust this to their needs\n\t\t},\n\t\tformat: function(table, c, wo) {\n\t\t\t// filter widget doesn't initialize on an empty table. Fixes #449\n\t\t\tif ( c.$table.hasClass('hasStickyHeaders') || ($.inArray('filter', c.widgets) >= 0 && !c.$table.hasClass('hasFilters')) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar index, len, $t,\n\t\t\t\t$table = c.$table,\n\t\t\t\t// add position: relative to attach element, hopefully it won't cause trouble.\n\t\t\t\t$attach = $(wo.stickyHeaders_attachTo || wo.stickyHeaders_appendTo),\n\t\t\t\tnamespace = c.namespace + 'stickyheaders ',\n\t\t\t\t// element to watch for the scroll event\n\t\t\t\t$yScroll = $(wo.stickyHeaders_yScroll || wo.stickyHeaders_attachTo || window),\n\t\t\t\t$xScroll = $(wo.stickyHeaders_xScroll || wo.stickyHeaders_attachTo || window),\n\t\t\t\t$thead = $table.children('thead:first'),\n\t\t\t\t$header = $thead.children('tr').not('.sticky-false').children(),\n\t\t\t\t$tfoot = $table.children('tfoot'),\n\t\t\t\tstickyOffset = getStickyOffset(c, wo),\n\t\t\t\t// is this table nested? If so, find parent sticky header wrapper (div, not table)\n\t\t\t\t$nestedSticky = $table.parent().closest('.' + ts.css.table).hasClass('hasStickyHeaders') ?\n\t\t\t\t\t$table.parent().closest('table.tablesorter')[0].config.widgetOptions.$sticky.parent() : [],\n\t\t\t\tnestedStickyTop = $nestedSticky.length ? $nestedSticky.height() : 0,\n\t\t\t\t// clone table, then wrap to make sticky header\n\t\t\t\t$stickyTable = wo.$sticky = $table.clone()\n\t\t\t\t\t.addClass('containsStickyHeaders ' + ts.css.sticky + ' ' + wo.stickyHeaders + ' ' + c.namespace.slice(1) + '_extra_table' )\n\t\t\t\t\t.wrap('<div class=\"' + ts.css.stickyWrap + '\">'),\n\t\t\t\t$stickyWrap = $stickyTable.parent()\n\t\t\t\t\t.addClass(ts.css.stickyHide)\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition : $attach.length ? 'absolute' : 'fixed',\n\t\t\t\t\t\tpadding : parseInt( $stickyTable.parent().parent().css('padding-left'), 10 ),\n\t\t\t\t\t\ttop : stickyOffset + nestedStickyTop,\n\t\t\t\t\t\tleft : 0,\n\t\t\t\t\t\tvisibility : 'hidden',\n\t\t\t\t\t\tzIndex : wo.stickyHeaders_zIndex || 2\n\t\t\t\t\t}),\n\t\t\t\t$stickyThead = $stickyTable.children('thead:first'),\n\t\t\t\t$stickyCells,\n\t\t\t\tlaststate = '',\n\t\t\t\tsetWidth = function($orig, $clone) {\n\t\t\t\t\tvar index, width, border, $cell, $this,\n\t\t\t\t\t\t$cells = $orig.filter(':visible'),\n\t\t\t\t\t\tlen = $cells.length;\n\t\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t\t$cell = $clone.filter(':visible').eq(index);\n\t\t\t\t\t\t$this = $cells.eq(index);\n\t\t\t\t\t\t// code from https://github.com/jmosbech/StickyTableHeaders\n\t\t\t\t\t\tif ($this.css('box-sizing') === 'border-box') {\n\t\t\t\t\t\t\twidth = $this.outerWidth();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif ($cell.css('border-collapse') === 'collapse') {\n\t\t\t\t\t\t\t\tif (window.getComputedStyle) {\n\t\t\t\t\t\t\t\t\twidth = parseFloat( window.getComputedStyle($this[0], null).width );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// ie8 only\n\t\t\t\t\t\t\t\t\tborder = parseFloat( $this.css('border-width') );\n\t\t\t\t\t\t\t\t\twidth = $this.outerWidth() - parseFloat( $this.css('padding-left') ) - parseFloat( $this.css('padding-right') ) - border;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twidth = $this.width();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$cell.css({\n\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t'min-width': width,\n\t\t\t\t\t\t\t'max-width': width\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetLeftPosition = function(yWindow) {\n\t\t\t\t\tif (yWindow === false && $nestedSticky.length) {\n\t\t\t\t\t\treturn $table.position().left;\n\t\t\t\t\t}\n\t\t\t\t\treturn $attach.length ?\n\t\t\t\t\t\tparseInt($attach.css('padding-left'), 10) || 0 :\n\t\t\t\t\t\t$table.offset().left - parseInt($table.css('margin-left'), 10) - $(window).scrollLeft();\n\t\t\t\t},\n\t\t\t\tresizeHeader = function() {\n\t\t\t\t\t$stickyWrap.css({\n\t\t\t\t\t\tleft : getLeftPosition(),\n\t\t\t\t\t\twidth: $table.outerWidth()\n\t\t\t\t\t});\n\t\t\t\t\tsetWidth( $table, $stickyTable );\n\t\t\t\t\tsetWidth( $header, $stickyCells );\n\t\t\t\t},\n\t\t\t\tscrollSticky = function( resizing ) {\n\t\t\t\t\tif (!$table.is(':visible')) { return; } // fixes #278\n\t\t\t\t\t// Detect nested tables - fixes #724\n\t\t\t\t\tnestedStickyTop = $nestedSticky.length ? $nestedSticky.offset().top - $yScroll.scrollTop() + $nestedSticky.height() : 0;\n\t\t\t\t\tvar tmp,\n\t\t\t\t\t\toffset = $table.offset(),\n\t\t\t\t\t\tstickyOffset = getStickyOffset(c, wo),\n\t\t\t\t\t\tyWindow = $.isWindow( $yScroll[0] ), // $.isWindow needs jQuery 1.4.3\n\t\t\t\t\t\tyScroll = yWindow ?\n\t\t\t\t\t\t\t$yScroll.scrollTop() :\n\t\t\t\t\t\t\t// use parent sticky position if nested AND inside of a scrollable element - see #1512\n\t\t\t\t\t\t\t$nestedSticky.length ? parseInt($nestedSticky[0].style.top, 10) : $yScroll.offset().top,\n\t\t\t\t\t\tattachTop = $attach.length ? yScroll : $yScroll.scrollTop(),\n\t\t\t\t\t\tcaptionHeight = wo.stickyHeaders_includeCaption ? 0 : $table.children( 'caption' ).height() || 0,\n\t\t\t\t\t\tscrollTop = attachTop + stickyOffset + nestedStickyTop - captionHeight,\n\t\t\t\t\t\ttableHeight = $table.height() - ($stickyWrap.height() + ($tfoot.height() || 0)) - captionHeight,\n\t\t\t\t\t\tisVisible = ( scrollTop > offset.top ) && ( scrollTop < offset.top + tableHeight ) ? 'visible' : 'hidden',\n\t\t\t\t\t\tstate = isVisible === 'visible' ? ts.css.stickyVis : ts.css.stickyHide,\n\t\t\t\t\t\tneedsUpdating = !$stickyWrap.hasClass( state ),\n\t\t\t\t\t\tcssSettings = { visibility : isVisible };\n\t\t\t\t\tif ($attach.length) {\n\t\t\t\t\t\t// attached sticky headers always need updating\n\t\t\t\t\t\tneedsUpdating = true;\n\t\t\t\t\t\tcssSettings.top = yWindow ? scrollTop - $attach.offset().top : $attach.scrollTop();\n\t\t\t\t\t}\n\t\t\t\t\t// adjust when scrolling horizontally - fixes issue #143\n\t\t\t\t\ttmp = getLeftPosition(yWindow);\n\t\t\t\t\tif (tmp !== parseInt($stickyWrap.css('left'), 10)) {\n\t\t\t\t\t\tneedsUpdating = true;\n\t\t\t\t\t\tcssSettings.left = tmp;\n\t\t\t\t\t}\n\t\t\t\t\tcssSettings.top = ( cssSettings.top || 0 ) +\n\t\t\t\t\t\t// If nested AND inside of a scrollable element, only add parent sticky height\n\t\t\t\t\t\t(!yWindow && $nestedSticky.length ? $nestedSticky.height() : stickyOffset + nestedStickyTop);\n\t\t\t\t\tif (needsUpdating) {\n\t\t\t\t\t\t$stickyWrap\n\t\t\t\t\t\t\t.removeClass( ts.css.stickyVis + ' ' + ts.css.stickyHide )\n\t\t\t\t\t\t\t.addClass( state )\n\t\t\t\t\t\t\t.css(cssSettings);\n\t\t\t\t\t}\n\t\t\t\t\tif (isVisible !== laststate || resizing) {\n\t\t\t\t\t\t// make sure the column widths match\n\t\t\t\t\t\tresizeHeader();\n\t\t\t\t\t\tlaststate = isVisible;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t// only add a position relative if a position isn't already defined\n\t\t\tif ($attach.length && !$attach.css('position')) {\n\t\t\t\t$attach.css('position', 'relative');\n\t\t\t}\n\t\t\t// fix clone ID, if it exists - fixes #271\n\t\t\tif ($stickyTable.attr('id')) { $stickyTable[0].id += wo.stickyHeaders_cloneId; }\n\t\t\t// clear out cloned table, except for sticky header\n\t\t\t// include caption & filter row (fixes #126 & #249) - don't remove cells to get correct cell indexing\n\t\t\t$stickyTable.find('> thead:gt(0), tr.sticky-false').hide();\n\t\t\t$stickyTable.find('> tbody, > tfoot').remove();\n\t\t\t$stickyTable.find('caption').toggle(wo.stickyHeaders_includeCaption);\n\t\t\t// issue #172 - find td/th in sticky header\n\t\t\t$stickyCells = $stickyThead.children().children();\n\t\t\t$stickyTable.css({ height:0, width:0, margin: 0 });\n\t\t\t// remove resizable block\n\t\t\t$stickyCells.find('.' + ts.css.resizer).remove();\n\t\t\t// update sticky header class names to match real header after sorting\n\t\t\t$table\n\t\t\t\t.addClass('hasStickyHeaders')\n\t\t\t\t.bind('pagerComplete' + namespace, function() {\n\t\t\t\t\tresizeHeader();\n\t\t\t\t});\n\n\t\t\tts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));\n\n\t\t\tif (wo.stickyHeaders_appendTo) {\n\t\t\t\t$(wo.stickyHeaders_appendTo).append( $stickyWrap );\n\t\t\t} else {\n\t\t\t\t// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.\n\t\t\t\t$table.after( $stickyWrap );\n\t\t\t}\n\n\t\t\t// onRenderHeader is defined, we need to do something about it (fixes #641)\n\t\t\tif (c.onRenderHeader) {\n\t\t\t\t$t = $stickyThead.children('tr').children();\n\t\t\t\tlen = $t.length;\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t// send second parameter\n\t\t\t\t\tc.onRenderHeader.apply( $t.eq( index ), [ index, c, $stickyTable ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// make it sticky!\n\t\t\t$xScroll.add($yScroll)\n\t\t\t\t.unbind( ('scroll resize '.split(' ').join( namespace )).replace(/\\s+/g, ' ') )\n\t\t\t\t.bind('scroll resize '.split(' ').join( namespace ), function( event ) {\n\t\t\t\t\tscrollSticky( event.type === 'resize' );\n\t\t\t\t});\n\t\t\tc.$table\n\t\t\t\t.unbind('stickyHeadersUpdate' + namespace)\n\t\t\t\t.bind('stickyHeadersUpdate' + namespace, function() {\n\t\t\t\t\tscrollSticky( true );\n\t\t\t\t});\n\n\t\t\tif (wo.stickyHeaders_addResizeEvent) {\n\t\t\t\tts.addHeaderResizeEvent(table);\n\t\t\t}\n\n\t\t\t// look for filter widget\n\t\t\tif ($table.hasClass('hasFilters') && wo.filter_columnFilters) {\n\t\t\t\t// scroll table into view after filtering, if sticky header is active - #482\n\t\t\t\t$table.bind('filterEnd' + namespace, function() {\n\t\t\t\t\t// $(':focus') needs jQuery 1.6+\n\t\t\t\t\tvar $td = $(document.activeElement).closest('td'),\n\t\t\t\t\t\tcolumn = $td.parent().children().index($td);\n\t\t\t\t\t// only scroll if sticky header is active\n\t\t\t\t\tif ($stickyWrap.hasClass(ts.css.stickyVis) && wo.stickyHeaders_filteredToTop) {\n\t\t\t\t\t\t// scroll to original table (not sticky clone)\n\t\t\t\t\t\twindow.scrollTo(0, $table.position().top);\n\t\t\t\t\t\t// give same input/select focus; check if c.$filters exists; fixes #594\n\t\t\t\t\t\tif (column >= 0 && c.$filters) {\n\t\t\t\t\t\t\tc.$filters.eq(column).find('a, select, input').filter(':visible').focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tts.filter.bindSearch( $table, $stickyCells.find('.' + ts.css.filter) );\n\t\t\t\t// support hideFilters\n\t\t\t\tif (wo.filter_hideFilters) {\n\t\t\t\t\tts.filter.hideFilters(c, $stickyTable);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// resize table (Firefox)\n\t\t\tif (wo.stickyHeaders_addResizeEvent) {\n\t\t\t\t$table.bind('resize' + c.namespace + 'stickyheaders', function() {\n\t\t\t\t\tresizeHeader();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// make sure sticky is visible if page is partially scrolled\n\t\t\tscrollSticky( true );\n\t\t\t$table.triggerHandler('stickyHeadersInit');\n\n\t\t},\n\t\tremove: function(table, c, wo) {\n\t\t\tvar namespace = c.namespace + 'stickyheaders ';\n\t\t\tc.$table\n\t\t\t\t.removeClass('hasStickyHeaders')\n\t\t\t\t.unbind( ('pagerComplete resize filterEnd stickyHeadersUpdate '.split(' ').join(namespace)).replace(/\\s+/g, ' ') )\n\t\t\t\t.next('.' + ts.css.stickyWrap).remove();\n\t\t\tif (wo.$sticky && wo.$sticky.length) { wo.$sticky.remove(); } // remove cloned table\n\t\t\t$(window)\n\t\t\t\t.add(wo.stickyHeaders_xScroll)\n\t\t\t\t.add(wo.stickyHeaders_yScroll)\n\t\t\t\t.add(wo.stickyHeaders_attachTo)\n\t\t\t\t.unbind( ('scroll resize '.split(' ').join(namespace)).replace(/\\s+/g, ' ') );\n\t\t\tts.addHeaderResizeEvent(table, true);\n\t\t}\n\t});\n\n})(jQuery, window);\n\n/*! Widget: resizable - updated 2018-03-26 (v2.30.2) */\n/*jshint browser:true, jquery:true, unused:false */\n;(function ($, window) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\t$.extend(ts.css, {\n\t\tresizableContainer : 'tablesorter-resizable-container',\n\t\tresizableHandle : 'tablesorter-resizable-handle',\n\t\tresizableNoSelect : 'tablesorter-disableSelection',\n\t\tresizableStorage : 'tablesorter-resizable'\n\t});\n\n\t// Add extra scroller css\n\t$(function() {\n\t\tvar s = '<style>' +\n\t\t\t'body.' + ts.css.resizableNoSelect + ' { -ms-user-select: none; -moz-user-select: -moz-none;' +\n\t\t\t\t'-khtml-user-select: none; -webkit-user-select: none; user-select: none; }' +\n\t\t\t'.' + ts.css.resizableContainer + ' { position: relative; height: 1px; }' +\n\t\t\t// make handle z-index > than stickyHeader z-index, so the handle stays above sticky header\n\t\t\t'.' + ts.css.resizableHandle + ' { position: absolute; display: inline-block; width: 8px;' +\n\t\t\t\t'top: 1px; cursor: ew-resize; z-index: 3; user-select: none; -moz-user-select: none; }' +\n\t\t\t'</style>';\n\t\t$('head').append(s);\n\t});\n\n\tts.resizable = {\n\t\tinit : function( c, wo ) {\n\t\t\tif ( c.$table.hasClass( 'hasResizable' ) ) { return; }\n\t\t\tc.$table.addClass( 'hasResizable' );\n\n\t\t\tvar noResize, $header, column, storedSizes, tmp,\n\t\t\t\t$table = c.$table,\n\t\t\t\t$parent = $table.parent(),\n\t\t\t\tmarginTop = parseInt( $table.css( 'margin-top' ), 10 ),\n\n\t\t\t// internal variables\n\t\t\tvars = wo.resizable_vars = {\n\t\t\t\tuseStorage : ts.storage && wo.resizable !== false,\n\t\t\t\t$wrap : $parent,\n\t\t\t\tmouseXPosition : 0,\n\t\t\t\t$target : null,\n\t\t\t\t$next : null,\n\t\t\t\toverflow : $parent.css('overflow') === 'auto' ||\n\t\t\t\t\t$parent.css('overflow') === 'scroll' ||\n\t\t\t\t\t$parent.css('overflow-x') === 'auto' ||\n\t\t\t\t\t$parent.css('overflow-x') === 'scroll',\n\t\t\t\tstoredSizes : []\n\t\t\t};\n\n\t\t\t// set default widths\n\t\t\tts.resizableReset( c.table, true );\n\n\t\t\t// now get measurements!\n\t\t\tvars.tableWidth = $table.width();\n\t\t\t// attempt to autodetect\n\t\t\tvars.fullWidth = Math.abs( $parent.width() - vars.tableWidth ) < 20;\n\n\t\t\t/*\n\t\t\t// Hacky method to determine if table width is set to 'auto'\n\t\t\t// http://stackoverflow.com/a/20892048/145346\n\t\t\tif ( !vars.fullWidth ) {\n\t\t\t\ttmp = $table.width();\n\t\t\t\t$header = $table.wrap('<span>').parent(); // temp variable\n\t\t\t\tstoredSizes = parseInt( $table.css( 'margin-left' ), 10 ) || 0;\n\t\t\t\t$table.css( 'margin-left', storedSizes + 50 );\n\t\t\t\tvars.tableWidth = $header.width() > tmp ? 'auto' : tmp;\n\t\t\t\t$table.css( 'margin-left', storedSizes ? storedSizes : '' );\n\t\t\t\t$header = null;\n\t\t\t\t$table.unwrap('<span>');\n\t\t\t}\n\t\t\t*/\n\n\t\t\tif ( vars.useStorage && vars.overflow ) {\n\t\t\t\t// save table width\n\t\t\t\tts.storage( c.table, 'tablesorter-table-original-css-width', vars.tableWidth );\n\t\t\t\ttmp = ts.storage( c.table, 'tablesorter-table-resized-width' ) || 'auto';\n\t\t\t\tts.resizable.setWidth( $table, tmp, true );\n\t\t\t}\n\t\t\two.resizable_vars.storedSizes = storedSizes = ( vars.useStorage ?\n\t\t\t\tts.storage( c.table, ts.css.resizableStorage ) :\n\t\t\t\t[] ) || [];\n\t\t\tts.resizable.setWidths( c, wo, storedSizes );\n\t\t\tts.resizable.updateStoredSizes( c, wo );\n\n\t\t\two.$resizable_container = $( '<div class=\"' + ts.css.resizableContainer + '\">' )\n\t\t\t\t.css({ top : marginTop })\n\t\t\t\t.insertBefore( $table );\n\t\t\t// add container\n\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t$header = c.$headerIndexed[ column ];\n\t\t\t\ttmp = ts.getColumnData( c.table, c.headers, column );\n\t\t\t\tnoResize = ts.getData( $header, tmp, 'resizable' ) === 'false';\n\t\t\t\tif ( !noResize ) {\n\t\t\t\t\t$( '<div class=\"' + ts.css.resizableHandle + '\">' )\n\t\t\t\t\t\t.appendTo( wo.$resizable_container )\n\t\t\t\t\t\t.attr({\n\t\t\t\t\t\t\t'data-column' : column,\n\t\t\t\t\t\t\t'unselectable' : 'on'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.data( 'header', $header )\n\t\t\t\t\t\t.bind( 'selectstart', false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.resizable.bindings( c, wo );\n\t\t},\n\n\t\tupdateStoredSizes : function( c, wo ) {\n\t\t\tvar column, $header,\n\t\t\t\tlen = c.columns,\n\t\t\t\tvars = wo.resizable_vars;\n\t\t\tvars.storedSizes = [];\n\t\t\tfor ( column = 0; column < len; column++ ) {\n\t\t\t\t$header = c.$headerIndexed[ column ];\n\t\t\t\tvars.storedSizes[ column ] = $header.is(':visible') ? $header.width() : 0;\n\t\t\t}\n\t\t},\n\n\t\tsetWidth : function( $el, width, overflow ) {\n\t\t\t// overflow tables need min & max width set as well\n\t\t\t$el.css({\n\t\t\t\t'width' : width,\n\t\t\t\t'min-width' : overflow ? width : '',\n\t\t\t\t'max-width' : overflow ? width : ''\n\t\t\t});\n\t\t},\n\n\t\tsetWidths : function( c, wo, storedSizes ) {\n\t\t\tvar column, $temp,\n\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t$extra = $( c.namespace + '_extra_headers' ),\n\t\t\t\t$col = c.$table.children( 'colgroup' ).children( 'col' );\n\t\t\tstoredSizes = storedSizes || vars.storedSizes || [];\n\t\t\t// process only if table ID or url match\n\t\t\tif ( storedSizes.length ) {\n\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t\t// set saved resizable widths\n\t\t\t\t\tts.resizable.setWidth( c.$headerIndexed[ column ], storedSizes[ column ], vars.overflow );\n\t\t\t\t\tif ( $extra.length ) {\n\t\t\t\t\t\t// stickyHeaders needs to modify min & max width as well\n\t\t\t\t\t\t$temp = $extra.eq( column ).add( $col.eq( column ) );\n\t\t\t\t\t\tts.resizable.setWidth( $temp, storedSizes[ column ], vars.overflow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$temp = $( c.namespace + '_extra_table' );\n\t\t\t\tif ( $temp.length && !ts.hasWidget( c.table, 'scroller' ) ) {\n\t\t\t\t\tts.resizable.setWidth( $temp, c.$table.outerWidth(), vars.overflow );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetHandlePosition : function( c, wo ) {\n\t\t\tvar startPosition,\n\t\t\t\ttableHeight = c.$table.height(),\n\t\t\t\t$handles = wo.$resizable_container.children(),\n\t\t\t\thandleCenter = Math.floor( $handles.width() / 2 );\n\n\t\t\tif ( ts.hasWidget( c.table, 'scroller' ) ) {\n\t\t\t\ttableHeight = 0;\n\t\t\t\tc.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t// center table has a max-height set\n\t\t\t\t\ttableHeight += $this.filter('[style*=\"height\"]').length ? $this.height() : $this.children('table').height();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( !wo.resizable_includeFooter && c.$table.children('tfoot').length ) {\n\t\t\t\ttableHeight -= c.$table.children('tfoot').height();\n\t\t\t}\n\t\t\t// subtract out table left position from resizable handles. Fixes #864\n\t\t\t// jQuery v3.3.0+ appears to include the start position with the $header.position().left; see #1544\n\t\t\tstartPosition = parseFloat($.fn.jquery) >= 3.3 ? 0 : c.$table.position().left;\n\t\t\t$handles.each( function() {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tcolumn = parseInt( $this.attr( 'data-column' ), 10 ),\n\t\t\t\t\tcolumns = c.columns - 1,\n\t\t\t\t\t$header = $this.data( 'header' );\n\t\t\t\tif ( !$header ) { return; } // see #859\n\t\t\t\tif (\n\t\t\t\t\t!$header.is(':visible') ||\n\t\t\t\t\t( !wo.resizable_addLastColumn && ts.resizable.checkVisibleColumns(c, column) )\n\t\t\t\t) {\n\t\t\t\t\t$this.hide();\n\t\t\t\t} else if ( column < columns || column === columns && wo.resizable_addLastColumn ) {\n\t\t\t\t\t$this.css({\n\t\t\t\t\t\tdisplay: 'inline-block',\n\t\t\t\t\t\theight : tableHeight,\n\t\t\t\t\t\tleft : $header.position().left - startPosition + $header.outerWidth() - handleCenter\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t// Fixes #1485\n\t\tcheckVisibleColumns: function( c, column ) {\n\t\t\tvar i,\n\t\t\t\tlen = 0;\n\t\t\tfor ( i = column + 1; i < c.columns; i++ ) {\n\t\t\t\tlen += c.$headerIndexed[i].is( ':visible' ) ? 1 : 0;\n\t\t\t}\n\t\t\treturn len === 0;\n\t\t},\n\n\t\t// prevent text selection while dragging resize bar\n\t\ttoggleTextSelection : function( c, wo, toggle ) {\n\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\two.resizable_vars.disabled = toggle;\n\t\t\t$( 'body' ).toggleClass( ts.css.resizableNoSelect, toggle );\n\t\t\tif ( toggle ) {\n\t\t\t\t$( 'body' )\n\t\t\t\t\t.attr( 'unselectable', 'on' )\n\t\t\t\t\t.bind( 'selectstart' + namespace, false );\n\t\t\t} else {\n\t\t\t\t$( 'body' )\n\t\t\t\t\t.removeAttr( 'unselectable' )\n\t\t\t\t\t.unbind( 'selectstart' + namespace );\n\t\t\t}\n\t\t},\n\n\t\tbindings : function( c, wo ) {\n\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\two.$resizable_container.children().bind( 'mousedown', function( event ) {\n\t\t\t\t// save header cell and mouse position\n\t\t\t\tvar column,\n\t\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t\t$extras = $( c.namespace + '_extra_headers' ),\n\t\t\t\t\t$header = $( event.target ).data( 'header' );\n\n\t\t\t\tcolumn = parseInt( $header.attr( 'data-column' ), 10 );\n\t\t\t\tvars.$target = $header = $header.add( $extras.filter('[data-column=\"' + column + '\"]') );\n\t\t\t\tvars.target = column;\n\n\t\t\t\t// if table is not as wide as it's parent, then resize the table\n\t\t\t\tvars.$next = event.shiftKey || wo.resizable_targetLast ?\n\t\t\t\t\t$header.parent().children().not( '.resizable-false' ).filter( ':last' ) :\n\t\t\t\t\t$header.nextAll( ':not(.resizable-false)' ).eq( 0 );\n\n\t\t\t\tcolumn = parseInt( vars.$next.attr( 'data-column' ), 10 );\n\t\t\t\tvars.$next = vars.$next.add( $extras.filter('[data-column=\"' + column + '\"]') );\n\t\t\t\tvars.next = column;\n\n\t\t\t\tvars.mouseXPosition = event.pageX;\n\t\t\t\tts.resizable.updateStoredSizes( c, wo );\n\t\t\t\tts.resizable.toggleTextSelection(c, wo, true );\n\t\t\t});\n\n\t\t\t$( document )\n\t\t\t\t.bind( 'mousemove' + namespace, function( event ) {\n\t\t\t\t\tvar vars = wo.resizable_vars;\n\t\t\t\t\t// ignore mousemove if no mousedown\n\t\t\t\t\tif ( !vars.disabled || vars.mouseXPosition === 0 || !vars.$target ) { return; }\n\t\t\t\t\tif ( wo.resizable_throttle ) {\n\t\t\t\t\t\tclearTimeout( vars.timer );\n\t\t\t\t\t\tvars.timer = setTimeout( function() {\n\t\t\t\t\t\t\tts.resizable.mouseMove( c, wo, event );\n\t\t\t\t\t\t}, isNaN( wo.resizable_throttle ) ? 5 : wo.resizable_throttle );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tts.resizable.mouseMove( c, wo, event );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( 'mouseup' + namespace, function() {\n\t\t\t\t\tif (!wo.resizable_vars.disabled) { return; }\n\t\t\t\t\tts.resizable.toggleTextSelection( c, wo, false );\n\t\t\t\t\tts.resizable.stopResize( c, wo );\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t});\n\n\t\t\t// resizeEnd event triggered by scroller widget\n\t\t\t$( window ).bind( 'resize' + namespace + ' resizeEnd' + namespace, function() {\n\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t});\n\n\t\t\t// right click to reset columns to default widths\n\t\t\tc.$table\n\t\t\t\t.bind( 'columnUpdate pagerComplete resizableUpdate '.split( ' ' ).join( namespace + ' ' ), function() {\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t})\n\t\t\t\t.bind( 'resizableReset' + namespace, function() {\n\t\t\t\t\tts.resizableReset( c.table );\n\t\t\t\t})\n\t\t\t\t.find( 'thead:first' )\n\t\t\t\t.add( $( c.namespace + '_extra_table' ).find( 'thead:first' ) )\n\t\t\t\t.bind( 'contextmenu' + namespace, function() {\n\t\t\t\t\t// $.isEmptyObject() needs jQuery 1.4+; allow right click if already reset\n\t\t\t\t\tvar allowClick = wo.resizable_vars.storedSizes.length === 0;\n\t\t\t\t\tts.resizableReset( c.table );\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t\two.resizable_vars.storedSizes = [];\n\t\t\t\t\treturn allowClick;\n\t\t\t\t});\n\n\t\t},\n\n\t\tmouseMove : function( c, wo, event ) {\n\t\t\tif ( wo.resizable_vars.mouseXPosition === 0 || !wo.resizable_vars.$target ) { return; }\n\t\t\t// resize columns\n\t\t\tvar column,\n\t\t\t\ttotal = 0,\n\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t$next = vars.$next,\n\t\t\t\ttar = vars.storedSizes[ vars.target ],\n\t\t\t\tleftEdge = event.pageX - vars.mouseXPosition;\n\t\t\tif ( vars.overflow ) {\n\t\t\t\tif ( tar + leftEdge > 0 ) {\n\t\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\t\tts.resizable.setWidth( vars.$target, vars.storedSizes[ vars.target ], true );\n\t\t\t\t\t// update the entire table width\n\t\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t\t\ttotal += vars.storedSizes[ column ];\n\t\t\t\t\t}\n\t\t\t\t\tts.resizable.setWidth( c.$table.add( $( c.namespace + '_extra_table' ) ), total );\n\t\t\t\t}\n\t\t\t\tif ( !$next.length ) {\n\t\t\t\t\t// if expanding right-most column, scroll the wrapper\n\t\t\t\t\tvars.$wrap[0].scrollLeft = c.$table.width();\n\t\t\t\t}\n\t\t\t} else if ( vars.fullWidth ) {\n\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\tvars.storedSizes[ vars.next ] -= leftEdge;\n\t\t\t\tts.resizable.setWidths( c, wo );\n\t\t\t} else {\n\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\tts.resizable.setWidths( c, wo );\n\t\t\t}\n\t\t\tvars.mouseXPosition = event.pageX;\n\t\t\t// dynamically update sticky header widths\n\t\t\tc.$table.triggerHandler('stickyHeadersUpdate');\n\t\t},\n\n\t\tstopResize : function( c, wo ) {\n\t\t\tvar vars = wo.resizable_vars;\n\t\t\tts.resizable.updateStoredSizes( c, wo );\n\t\t\tif ( vars.useStorage ) {\n\t\t\t\t// save all column widths\n\t\t\t\tts.storage( c.table, ts.css.resizableStorage, vars.storedSizes );\n\t\t\t\tts.storage( c.table, 'tablesorter-table-resized-width', c.$table.width() );\n\t\t\t}\n\t\t\tvars.mouseXPosition = 0;\n\t\t\tvars.$target = vars.$next = null;\n\t\t\t// will update stickyHeaders, just in case, see #912\n\t\t\tc.$table.triggerHandler('stickyHeadersUpdate');\n\t\t\tc.$table.triggerHandler('resizableComplete');\n\t\t}\n\t};\n\n\t// this widget saves the column widths if\n\t// $.tablesorter.storage function is included\n\t// **************************\n\tts.addWidget({\n\t\tid: 'resizable',\n\t\tpriority: 40,\n\t\toptions: {\n\t\t\tresizable : true, // save column widths to storage\n\t\t\tresizable_addLastColumn : false,\n\t\t\tresizable_includeFooter: true,\n\t\t\tresizable_widths : [],\n\t\t\tresizable_throttle : false, // set to true (5ms) or any number 0-10 range\n\t\t\tresizable_targetLast : false\n\t\t},\n\t\tinit: function(table, thisWidget, c, wo) {\n\t\t\tts.resizable.init( c, wo );\n\t\t},\n\t\tformat: function( table, c, wo ) {\n\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t},\n\t\tremove: function( table, c, wo, refreshing ) {\n\t\t\tif (wo.$resizable_container) {\n\t\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\t\tc.$table.add( $( c.namespace + '_extra_table' ) )\n\t\t\t\t\t.removeClass('hasResizable')\n\t\t\t\t\t.children( 'thead' )\n\t\t\t\t\t.unbind( 'contextmenu' + namespace );\n\n\t\t\t\two.$resizable_container.remove();\n\t\t\t\tts.resizable.toggleTextSelection( c, wo, false );\n\t\t\t\tts.resizableReset( table, refreshing );\n\t\t\t\t$( document ).unbind( 'mousemove' + namespace + ' mouseup' + namespace );\n\t\t\t}\n\t\t}\n\t});\n\n\tts.resizableReset = function( table, refreshing ) {\n\t\t$( table ).each(function() {\n\t\t\tvar index, $t,\n\t\t\t\tc = this.config,\n\t\t\t\two = c && c.widgetOptions,\n\t\t\t\tvars = wo.resizable_vars;\n\t\t\tif ( table && c && c.$headerIndexed.length ) {\n\t\t\t\t// restore the initial table width\n\t\t\t\tif ( vars.overflow && vars.tableWidth ) {\n\t\t\t\t\tts.resizable.setWidth( c.$table, vars.tableWidth, true );\n\t\t\t\t\tif ( vars.useStorage ) {\n\t\t\t\t\t\tts.storage( table, 'tablesorter-table-resized-width', vars.tableWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor ( index = 0; index < c.columns; index++ ) {\n\t\t\t\t\t$t = c.$headerIndexed[ index ];\n\t\t\t\t\tif ( wo.resizable_widths && wo.resizable_widths[ index ] ) {\n\t\t\t\t\t\tts.resizable.setWidth( $t, wo.resizable_widths[ index ], vars.overflow );\n\t\t\t\t\t} else if ( !$t.hasClass( 'resizable-false' ) ) {\n\t\t\t\t\t\t// don't clear the width of any column that is not resizable\n\t\t\t\t\t\tts.resizable.setWidth( $t, '', vars.overflow );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// reset stickyHeader widths\n\t\t\t\tc.$table.triggerHandler( 'stickyHeadersUpdate' );\n\t\t\t\tif ( ts.storage && !refreshing ) {\n\t\t\t\t\tts.storage( this, ts.css.resizableStorage, [] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n})( jQuery, window );\n\n/*! Widget: saveSort - updated 2018-03-19 (v2.30.1) *//*\n* Requires tablesorter v2.16+\n* by Rob Garrison\n*/\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tfunction getStoredSortList(c) {\n\t\tvar stored = ts.storage( c.table, 'tablesorter-savesort' );\n\t\treturn (stored && stored.hasOwnProperty('sortList') && $.isArray(stored.sortList)) ? stored.sortList : [];\n\t}\n\n\tfunction sortListChanged(c, sortList) {\n\t\treturn (sortList || getStoredSortList(c)).join(',') !== c.sortList.join(',');\n\t}\n\n\t// this widget saves the last sort only if the\n\t// saveSort widget option is true AND the\n\t// $.tablesorter.storage function is included\n\t// **************************\n\tts.addWidget({\n\t\tid: 'saveSort',\n\t\tpriority: 20,\n\t\toptions: {\n\t\t\tsaveSort : true\n\t\t},\n\t\tinit: function(table, thisWidget, c, wo) {\n\t\t\t// run widget format before all other widgets are applied to the table\n\t\t\tthisWidget.format(table, c, wo, true);\n\t\t},\n\t\tformat: function(table, c, wo, init) {\n\t\t\tvar time,\n\t\t\t\t$table = c.$table,\n\t\t\t\tsaveSort = wo.saveSort !== false, // make saveSort active/inactive; default to true\n\t\t\t\tsortList = { 'sortList' : c.sortList },\n\t\t\t\tdebug = ts.debug(c, 'saveSort');\n\t\t\tif (debug) {\n\t\t\t\ttime = new Date();\n\t\t\t}\n\t\t\tif ($table.hasClass('hasSaveSort')) {\n\t\t\t\tif (saveSort && table.hasInitialized && ts.storage && sortListChanged(c)) {\n\t\t\t\t\tts.storage( table, 'tablesorter-savesort', sortList );\n\t\t\t\t\tif (debug) {\n\t\t\t\t\t\tconsole.log('saveSort >> Saving last sort: ' + c.sortList + ts.benchmark(time));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// set table sort on initial run of the widget\n\t\t\t\t$table.addClass('hasSaveSort');\n\t\t\t\tsortList = '';\n\t\t\t\t// get data\n\t\t\t\tif (ts.storage) {\n\t\t\t\t\tsortList = getStoredSortList(c);\n\t\t\t\t\tif (debug) {\n\t\t\t\t\t\tconsole.log('saveSort >> Last sort loaded: \"' + sortList + '\"' + ts.benchmark(time));\n\t\t\t\t\t}\n\t\t\t\t\t$table.bind('saveSortReset', function(event) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tts.storage( table, 'tablesorter-savesort', '' );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// init is true when widget init is run, this will run this widget before all other widgets have initialized\n\t\t\t\t// this method allows using this widget in the original tablesorter plugin; but then it will run all widgets twice.\n\t\t\t\tif (init && sortList && sortList.length > 0) {\n\t\t\t\t\tc.sortList = sortList;\n\t\t\t\t} else if (table.hasInitialized && sortList && sortList.length > 0) {\n\t\t\t\t\t// update sort change\n\t\t\t\t\tif (sortListChanged(c, sortList)) {\n\t\t\t\t\t\tts.sortOn(c, sortList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c) {\n\t\t\tc.$table.removeClass('hasSaveSort');\n\t\t\t// clear storage\n\t\t\tif (ts.storage) { ts.storage( table, 'tablesorter-savesort', '' ); }\n\t\t}\n\t});\n\n})(jQuery);\nreturn jQuery.tablesorter;}));\n","(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){\n\n/*! Widget: grouping - updated 9/27/2017 (v2.29.0) */\n!function(i){\"use strict\";var l=i.tablesorter,g=l.grouping={types:{number:function(r,o,e,u){var p,t=o.hasClass(l.css.sortAsc);return 1<u&&\"\"!==e?(p=t?Math.floor(parseFloat(e)/u)*u:Math.ceil(parseFloat(e)/u)*u,p+=\" - \"+(p+(u-1)*(t?1:-1))):p=parseFloat(e)||e,p},separator:function(r,o,e,u){var p=(e+\"\").split(r.widgetOptions.group_separator);return i.trim(p[u-1]||\"\")},text:function(r,o,e){return e},word:function(r,o,e,u){return((e+\" \").match(/\\w+/g)||[])[u-1]||\"\"},letter:function(r,o,e,u){return e?(e+\" \").substring(0,u):\"\"},date:function(r,o,e,u){var p,t,a=r.widgetOptions,s=new Date(e||\"\");return s instanceof Date&&isFinite(s)?(p=s.getFullYear(),t=g.findMonth(a,s.getMonth()),\"year\"===u?p:\"month\"===u?t:\"monthyear\"===u?t+\" \"+p:\"day\"===u?t+\" \"+s.getDate():\"week\"===u?g.findWeek(a,s.getDay()):\"time\"===u?g.findTime(a,s):\"hour\"===u?g.findTime(a,s,\"hour\"):a.group_dateString(s,r,o)):a.group_dateInvalid}},findMonth:function(r,o){return r.group_months[o+(\"\"===(r.group_months[0]||\"\")?1:0)]},findWeek:function(r,o){if(i.isArray(r.group_week))return r.group_week[o];if(!i.isEmptyObject(r.group_week)){return r.group_week[[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"][o]]}},findTime:function(r,o,e){var u,p=r.group_time.am&&r.group_time.pm,t=o.getHours(),a=12<=t?1:0,s=(\"00\"+(r.group_time24Hour&&12<t?t-12:r.group_time24Hour&&0===t?t+12:t)).slice(-2),n=(\"00\"+o.getMinutes()).slice(-2);return u=r.group_time[p?[\"am\",\"pm\"][a]:a],\"hour\"===e?s:s+\":\"+n+(r.group_time24Hour?\"\":\" \"+(u||\"\"))},update:function(r){if(!i.isEmptyObject(r.config.cache)){var o=r.config,e=o.widgetOptions,u=void 0!==o.sortList[0],p={},t=i.isArray(e.group_forceColumn)&&void 0!==e.group_forceColumn[0]?e.group_enforceSort&&!u?-1:e.group_forceColumn[0]:u?o.sortList[0][0]:-1;o.$table.find(\"tr.group-hidden\").removeClass(\"group-hidden\").end().find(\"tr.group-header\").remove(),e.group_collapsible&&o.$table.data(\"pagerSavedHeight\",0),0<=t&&t<o.columns&&!o.$headerIndexed[t].hasClass(\"group-false\")&&(e.group_collapsedGroup=\"\",e.group_collapsedGroups={},p.column=t,p.groupClass=(o.$headerIndexed[t].attr(\"class\")||\"\").match(/(group-\\w+(-\\w+)?)/g),p.grouping=p.groupClass?p.groupClass[0].split(\"-\"):[\"group\",\"letter\",1],p.savedGroup=g.saveCurrentGrouping(o,e,p),g.findColumnGroups(o,e,p),g.processHeaders(o,e,p),o.$table.triggerHandler(e.group_complete))}},processHeaders:function(r,o,e){var u,p,t,a,s,n,l=r.$table.find(\"tr.group-header\"),g=l.length;for(l.bind(\"selectstart\",!1),u=0;u<g;u++)s=(n=l.eq(u)).nextUntil(\"tr.group-header\").filter(\":visible\"),(o.group_count||i.isFunction(o.group_callback))&&(t=n.find(\".group-count\")).length&&(o.group_count&&t.html(o.group_count.toString().replace(/\\{num\\}/g,s.length)),i.isFunction(o.group_callback)&&o.group_callback(n.find(\"td\"),s,e.column,r.table)),o.group_saveGroups&&!i.isEmptyObject(o.group_collapsedGroups)&&o.group_collapsedGroups[o.group_collapsedGroup].length?(a=n.find(\".group-name\").text().toLowerCase()+n.attr(\"data-group-index\"),p=-1<i.inArray(a,o.group_collapsedGroups[o.group_collapsedGroup]),n.toggleClass(\"collapsed\",p),s.toggleClass(\"group-hidden\",p)):o.group_collapsed&&o.group_collapsible&&(n.addClass(\"collapsed\"),s.addClass(\"group-hidden\"))},groupHeaderHTML:function(r,o,e){var u=(e.currentGroup||\"\").toString().replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\");return'<tr class=\"group-header '+r.selectorRemove.slice(1)+\" \"+(o.columnSelector_classHasSpan||\"hasSpan\")+'\" unselectable=\"on\" '+(r.tabIndex?'tabindex=\"0\" ':\"\")+'data-group-index=\"'+e.groupIndex+'\"><td colspan=\"'+r.columns+'\">'+(o.group_collapsible?\"<i/>\":\"\")+'<span class=\"group-name\">'+u+'</span><span class=\"group-count\"></span></td></tr>'},saveCurrentGrouping:function(r,o,e){var u,p,t=!1;return o.group_collapsible&&o.group_saveGroups&&(o.group_collapsedGroups=l.storage&&l.storage(r.table,\"tablesorter-groups\")||{},p=\"dir\"+r.sortList[0][1],u=o.group_collapsedGroup=\"\"+r.sortList[0][0]+p+e.grouping.join(\"\"),o.group_collapsedGroups[u]?t=!0:o.group_collapsedGroups[u]=[]),t},findColumnGroups:function(r,o,e){var u,p,t,a,s=l.hasWidget(r.table,\"pager\"),n=r.pager||{};for(u=e.groupIndex=0;u<r.$tbodies.length;u++)for(p=r.cache[u].normalized,e.group=void 0,t=s&&!n.ajax?n.startRow-1:0,a=s?n.endRow-(n.ajax?n.startRow:0):p.length;t<a;t++)e.rowData=p[t],e.rowData&&(e.$row=e.rowData[r.columns].$row,e.$row.is(\":visible\")&&g.types[e.grouping[1]]&&g.insertGroupHeader(r,o,e));l.hasWidget(r.table,\"columnSelector\")&&l.columnSelector.setUpColspan(r,o)},insertGroupHeader:function(r,o,e){var u=r.$headerIndexed[e.column],p=e.rowData[e.column],t=/date/.test(e.groupClass)?e.grouping[2]:parseInt(e.grouping[2]||1,10)||1;e.currentGroup=e.rowData?g.types[e.grouping[1]](r,u,p,t,e.group):e.currentGroup,e.group!==e.currentGroup&&(e.group=e.currentGroup,i.isFunction(o.group_formatter)&&(e.currentGroup=o.group_formatter((e.group||\"\").toString(),e.column,r.table,r,o,e)||e.group),e.$row.first().before(g.groupHeaderHTML(r,o,e)),o.group_saveGroups&&!e.savedGroup&&o.group_collapsed&&o.group_collapsible&&o.group_collapsedGroups[o.group_collapsedGroup].push(e.currentGroup+e.groupIndex),e.groupIndex++)},bindEvents:function(t,a,s){s.group_collapsible&&(s.group_collapsedGroups=[],a.$table.on(\"click toggleGroup keyup\",\"tr.group-header\",function(r){if(r.stopPropagation(),\"keyup\"!==r.type||13===r.which){var o,e,u=i(this),p=u.find(\".group-name\").text().toLowerCase()+u.attr(\"data-group-index\");!r.shiftKey||\"click\"!==r.type&&\"keyup\"!==r.type||u.siblings(\".group-header\").trigger(\"toggleGroup\"),u.toggleClass(\"collapsed\"),u.nextUntil(\"tr.group-header\").toggleClass(\"group-hidden\",u.hasClass(\"collapsed\")),!(o=u.hasClass(\"collapsed\"))&&l.hasWidget(a.$table,\"zebra\")&&l.applyWidgetId(a.$table,\"zebra\"),s.group_saveGroups&&l.storage&&(s.group_collapsedGroups[s.group_collapsedGroup]||(s.group_collapsedGroups[s.group_collapsedGroup]=[]),o&&s.group_collapsedGroup?s.group_collapsedGroups[s.group_collapsedGroup].push(p):s.group_collapsedGroup&&-1<(e=i.inArray(p,s.group_collapsedGroups[s.group_collapsedGroup]))&&s.group_collapsedGroups[s.group_collapsedGroup].splice(e,1),l.storage(t,\"tablesorter-groups\",s.group_collapsedGroups))}})),i(s.group_saveReset).on(\"click\",function(){g.clearSavedGroups(t)}),a.$table.on(\"pagerChange.tsgrouping\",function(){g.update(t)})},clearSavedGroups:function(r){r&&l.storage&&(l.storage(r,\"tablesorter-groups\",\"\"),g.update(r))}};l.addWidget({id:\"group\",priority:100,options:{group_collapsible:!0,group_collapsed:!1,group_saveGroups:!0,group_saveReset:null,group_count:\" ({num})\",group_separator:\"-\",group_formatter:null,group_callback:null,group_complete:\"groupingComplete\",group_forceColumn:[],group_enforceSort:!0,group_checkbox:[\"checked\",\"unchecked\"],group_months:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],group_week:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],group_time:[\"AM\",\"PM\"],group_time24Hour:!1,group_dateInvalid:\"Invalid Date\",group_dateString:function(r){return r.toLocaleString()}},init:function(r,o,e,u){g.bindEvents(r,e,u)},format:function(r){g.update(r)},remove:function(r,o){o.$table.off(\"click\",\"tr.group-header\").off(\"pagerChange.tsgrouping\").find(\".group-hidden\").removeClass(\"group-hidden\").end().find(\"tr.group-header\").remove()}})}(jQuery);return jQuery;}));\n","(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){\n\n/*! Widget: uitheme - updated 2018-03-18 (v2.30.0) */\n!function(A){\"use strict\";var N=A.tablesorter||{};N.themes={bootstrap:{table:\"table table-bordered table-striped\",caption:\"caption\",header:\"bootstrap-header\",sortNone:\"\",sortAsc:\"\",sortDesc:\"\",active:\"\",hover:\"\",icons:\"\",iconSortNone:\"bootstrap-icon-unsorted\",iconSortAsc:\"glyphicon glyphicon-chevron-up\",iconSortDesc:\"glyphicon glyphicon-chevron-down\",filterRow:\"\",footerRow:\"\",footerCells:\"\",even:\"\",odd:\"\"},jui:{table:\"ui-widget ui-widget-content ui-corner-all\",caption:\"ui-widget-content\",header:\"ui-widget-header ui-corner-all ui-state-default\",sortNone:\"\",sortAsc:\"\",sortDesc:\"\",active:\"ui-state-active\",hover:\"ui-state-hover\",icons:\"ui-icon\",iconSortNone:\"ui-icon-carat-2-n-s ui-icon-caret-2-n-s\",iconSortAsc:\"ui-icon-carat-1-n ui-icon-caret-1-n\",iconSortDesc:\"ui-icon-carat-1-s ui-icon-caret-1-s\",filterRow:\"\",footerRow:\"\",footerCells:\"\",even:\"ui-widget-content\",odd:\"ui-state-default\"}},A.extend(N.css,{wrapper:\"tablesorter-wrapper\"}),N.addWidget({id:\"uitheme\",priority:10,format:function(e,o,t){var s,r,i,a,n,c,l,d,h,m,u,p,v,f=N.themes,b=o.$table.add(A(o.namespace+\"_extra_table\")),C=o.$headers.add(A(o.namespace+\"_extra_headers\")),w=o.theme||\"jui\",S=f[w]||{},g=A.trim([S.sortNone,S.sortDesc,S.sortAsc,S.active].join(\" \")),j=A.trim([S.iconSortNone,S.iconSortDesc,S.iconSortAsc].join(\" \")),D=N.debug(o,\"uitheme\");for(D&&(n=new Date),b.hasClass(\"tablesorter-\"+w)&&o.theme===o.appliedTheme&&t.uitheme_applied||(t.uitheme_applied=!0,m=f[o.appliedTheme]||{},u=(v=!A.isEmptyObject(m))?[m.sortNone,m.sortDesc,m.sortAsc,m.active].join(\" \"):\"\",p=v?[m.iconSortNone,m.iconSortDesc,m.iconSortAsc].join(\" \"):\"\",v&&(t.zebra[0]=A.trim(\" \"+t.zebra[0].replace(\" \"+m.even,\"\")),t.zebra[1]=A.trim(\" \"+t.zebra[1].replace(\" \"+m.odd,\"\")),o.$tbodies.children().removeClass([m.even,m.odd].join(\" \"))),S.even&&(t.zebra[0]+=\" \"+S.even),S.odd&&(t.zebra[1]+=\" \"+S.odd),b.children(\"caption\").removeClass(m.caption||\"\").addClass(S.caption),d=b.removeClass((o.appliedTheme?\"tablesorter-\"+(o.appliedTheme||\"\"):\"\")+\" \"+(m.table||\"\")).addClass(\"tablesorter-\"+w+\" \"+(S.table||\"\")).children(\"tfoot\"),o.appliedTheme=o.theme,d.length&&d.children(\"tr\").removeClass(m.footerRow||\"\").addClass(S.footerRow).children(\"th, td\").removeClass(m.footerCells||\"\").addClass(S.footerCells),C.removeClass((v?[m.header,m.hover,u].join(\" \"):\"\")||\"\").addClass(S.header).not(\".sorter-false\").unbind(\"mouseenter.tsuitheme mouseleave.tsuitheme\").bind(\"mouseenter.tsuitheme mouseleave.tsuitheme\",function(e){A(this)[\"mouseenter\"===e.type?\"addClass\":\"removeClass\"](S.hover||\"\")}),C.each(function(){var e=A(this);e.find(\".\"+N.css.wrapper).length||e.wrapInner('<div class=\"'+N.css.wrapper+'\" style=\"position:relative;height:100%;width:100%\"></div>')}),o.cssIcon&&C.find(\".\"+N.css.icon).removeClass(v?[m.icons,p].join(\" \"):\"\").addClass(S.icons||\"\"),N.hasWidget(o.table,\"filter\")&&(r=function(){b.children(\"thead\").children(\".\"+N.css.filterRow).removeClass(v&&m.filterRow||\"\").addClass(S.filterRow||\"\")},t.filter_initialized?r():b.one(\"filterInit\",function(){r()}))),s=0;s<o.columns;s++)c=o.$headers.add(A(o.namespace+\"_extra_headers\")).not(\".sorter-false\").filter('[data-column=\"'+s+'\"]'),l=N.css.icon?c.find(\".\"+N.css.icon):A(),(h=C.not(\".sorter-false\").filter('[data-column=\"'+s+'\"]:last')).length&&(c.removeClass(g),l.removeClass(j),h[0].sortDisabled?l.removeClass(S.icons||\"\"):(i=S.sortNone,a=S.iconSortNone,h.hasClass(N.css.sortAsc)?(i=[S.sortAsc,S.active].join(\" \"),a=S.iconSortAsc):h.hasClass(N.css.sortDesc)&&(i=[S.sortDesc,S.active].join(\" \"),a=S.iconSortDesc),c.addClass(i),l.addClass(a||\"\")));D&&console.log(\"uitheme >> Applied \"+w+\" theme\"+N.benchmark(n))},remove:function(e,o,t,s){if(t.uitheme_applied){var r=o.$table,i=o.appliedTheme||\"jui\",a=N.themes[i]||N.themes.jui,n=r.children(\"thead\").children(),c=a.sortNone+\" \"+a.sortDesc+\" \"+a.sortAsc,l=a.iconSortNone+\" \"+a.iconSortDesc+\" \"+a.iconSortAsc;r.removeClass(\"tablesorter-\"+i+\" \"+a.table),t.uitheme_applied=!1,s||(r.find(N.css.header).removeClass(a.header),n.unbind(\"mouseenter.tsuitheme mouseleave.tsuitheme\").removeClass(a.hover+\" \"+c+\" \"+a.active).filter(\".\"+N.css.filterRow).removeClass(a.filterRow),n.find(\".\"+N.css.icon).removeClass(a.icons+\" \"+l))}}})}(jQuery);return jQuery;}));\n","(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){\n\n/*! Widget: filter - updated 2018-03-18 (v2.30.0) */\n!function(M){\"use strict\";var I,D,z=M.tablesorter||{},_=z.css,o=z.keyCodes;M.extend(_,{filterRow:\"tablesorter-filter-row\",filter:\"tablesorter-filter\",filterDisabled:\"disabled\",filterRowHide:\"hideme\"}),M.extend(o,{backSpace:8,escape:27,space:32,left:37,down:40}),z.addWidget({id:\"filter\",priority:50,options:{filter_cellFilter:\"\",filter_childRows:!1,filter_childByColumn:!1,filter_childWithSibs:!0,filter_columnAnyMatch:!0,filter_columnFilters:!0,filter_cssFilter:\"\",filter_defaultAttrib:\"data-value\",filter_defaultFilter:{},filter_excludeFilter:{},filter_external:\"\",filter_filteredRow:\"filtered\",filter_filterLabel:'Filter \"{{label}}\" column by...',filter_formatter:null,filter_functions:null,filter_hideEmpty:!0,filter_hideFilters:!1,filter_ignoreCase:!0,filter_liveSearch:!0,filter_matchType:{input:\"exact\",select:\"exact\"},filter_onlyAvail:\"filter-onlyAvail\",filter_placeholder:{search:\"\",select:\"\"},filter_reset:null,filter_resetOnEsc:!0,filter_saveFilters:!1,filter_searchDelay:300,filter_searchFiltered:!0,filter_selectSource:null,filter_selectSourceSeparator:\"|\",filter_serversideFiltering:!1,filter_startsWith:!1,filter_useParsedData:!1},format:function(e,t,r){t.$table.hasClass(\"hasFilters\")||I.init(e,t,r)},remove:function(e,t,r,i){var l,a,n=t.$table,s=t.$tbodies,o=\"addRows updateCell update updateRows updateComplete appendCache filterReset filterAndSortReset filterFomatterUpdate filterEnd search stickyHeadersInit \".split(\" \").join(t.namespace+\"filter \");if(n.removeClass(\"hasFilters\").unbind(o.replace(z.regex.spaces,\" \")).find(\".\"+_.filterRow).remove(),r.filter_initialized=!1,!i){for(l=0;l<s.length;l++)(a=z.processTbody(e,s.eq(l),!0)).children().removeClass(r.filter_filteredRow).show(),z.processTbody(e,a,!1);r.filter_reset&&M(document).undelegate(r.filter_reset,\"click\"+t.namespace+\"filter\")}}}),D=(I=z.filter={regex:{regex:/^\\/((?:\\\\\\/|[^\\/])+)\\/([migyu]{0,5})?$/,child:/tablesorter-childRow/,filtered:/filtered/,type:/undefined|number/,exact:/(^[\\\"\\'=]+)|([\\\"\\'=]+$)/g,operators:/[<>=]/g,query:\"(q|query)\",wild01:/\\?/g,wild0More:/\\*/g,quote:/\\\"/g,isNeg1:/(>=?\\s*-\\d)/,isNeg2:/(<=?\\s*\\d)/},types:{or:function(e,t,r){if(!D.orTest.test(t.iFilter)&&!D.orSplit.test(t.filter)||D.regex.test(t.filter))return null;var i,l,a,n=M.extend({},t),s=t.filter.split(D.orSplit),o=t.iFilter.split(D.orSplit),c=s.length;for(i=0;i<c;i++){n.nestedFilters=!0,n.filter=\"\"+(I.parseFilter(e,s[i],t)||\"\"),n.iFilter=\"\"+(I.parseFilter(e,o[i],t)||\"\"),a=\"(\"+(I.parseFilter(e,n.filter,t)||\"\")+\")\";try{if(l=new RegExp(t.isMatch?a:\"^\"+a+\"$\",e.widgetOptions.filter_ignoreCase?\"i\":\"\").test(n.exact)||I.processTypes(e,n,r))return l}catch(e){return null}}return l||!1},and:function(e,t,r){if(D.andTest.test(t.filter)){var i,l,a,n,s=M.extend({},t),o=t.filter.split(D.andSplit),c=t.iFilter.split(D.andSplit),f=o.length;for(i=0;i<f;i++){s.nestedFilters=!0,s.filter=\"\"+(I.parseFilter(e,o[i],t)||\"\"),s.iFilter=\"\"+(I.parseFilter(e,c[i],t)||\"\"),n=(\"(\"+(I.parseFilter(e,s.filter,t)||\"\")+\")\").replace(D.wild01,\"\\\\S{1}\").replace(D.wild0More,\"\\\\S*\");try{a=new RegExp(t.isMatch?n:\"^\"+n+\"$\",e.widgetOptions.filter_ignoreCase?\"i\":\"\").test(s.exact)||I.processTypes(e,s,r),l=0===i?a:l&&a}catch(e){return null}}return l||!1}return null},regex:function(e,t){if(D.regex.test(t.filter)){var r,i=t.filter_regexCache[t.index]||D.regex.exec(t.filter),l=i instanceof RegExp;try{l||(t.filter_regexCache[t.index]=i=new RegExp(i[1],i[2])),r=i.test(t.exact)}catch(e){r=!1}return r}return null},operators:function(e,t){if(D.operTest.test(t.iFilter)&&\"\"!==t.iExact){var r,i,l,a=e.table,n=t.parsed[t.index],s=z.formatFloat(t.iFilter.replace(D.operators,\"\"),a),o=e.parsers[t.index]||{},c=s;return(n||\"numeric\"===o.type)&&(l=M.trim(\"\"+t.iFilter.replace(D.operators,\"\")),s=\"number\"!=typeof(i=I.parseFilter(e,l,t,!0))||\"\"===i||isNaN(i)?s:i),r=!n&&\"numeric\"!==o.type||isNaN(s)||void 0===t.cache?(l=isNaN(t.iExact)?t.iExact.replace(z.regex.nondigit,\"\"):t.iExact,z.formatFloat(l,a)):t.cache,D.gtTest.test(t.iFilter)?i=D.gteTest.test(t.iFilter)?s<=r:s<r:D.ltTest.test(t.iFilter)&&(i=D.lteTest.test(t.iFilter)?r<=s:r<s),i||\"\"!==c||(i=!0),i}return null},notMatch:function(e,t){if(D.notTest.test(t.iFilter)){var r,i=t.iFilter.replace(\"!\",\"\"),l=I.parseFilter(e,i,t)||\"\";return D.exact.test(l)?\"\"===(l=l.replace(D.exact,\"\"))||M.trim(l)!==t.iExact:(r=t.iExact.search(M.trim(l)),\"\"===l||(t.anyMatch?r<0:!(e.widgetOptions.filter_startsWith?0===r:0<=r)))}return null},exact:function(e,t){if(D.exact.test(t.iFilter)){var r=t.iFilter.replace(D.exact,\"\"),i=I.parseFilter(e,r,t)||\"\";return t.anyMatch?0<=M.inArray(i,t.rowArray):i==t.iExact}return null},range:function(e,t){if(D.toTest.test(t.iFilter)){var r,i,l,a,n=e.table,s=t.index,o=t.parsed[s],c=t.iFilter.split(D.toSplit);return i=c[0].replace(z.regex.nondigit,\"\")||\"\",l=z.formatFloat(I.parseFilter(e,i,t),n),i=c[1].replace(z.regex.nondigit,\"\")||\"\",a=z.formatFloat(I.parseFilter(e,i,t),n),(o||\"numeric\"===e.parsers[s].type)&&(l=\"\"===(r=e.parsers[s].format(\"\"+c[0],n,e.$headers.eq(s),s))||isNaN(r)?l:r,a=\"\"===(r=e.parsers[s].format(\"\"+c[1],n,e.$headers.eq(s),s))||isNaN(r)?a:r),r=!o&&\"numeric\"!==e.parsers[s].type||isNaN(l)||isNaN(a)?(i=isNaN(t.iExact)?t.iExact.replace(z.regex.nondigit,\"\"):t.iExact,z.formatFloat(i,n)):t.cache,a<l&&(i=l,l=a,a=i),l<=r&&r<=a||\"\"===l||\"\"===a}return null},wild:function(e,t){if(D.wildOrTest.test(t.iFilter)){var r=\"\"+(I.parseFilter(e,t.iFilter,t)||\"\");!D.wildTest.test(r)&&t.nestedFilters&&(r=t.isMatch?r:\"^(\"+r+\")$\");try{return new RegExp(r.replace(D.wild01,\"\\\\S{1}\").replace(D.wild0More,\"\\\\S*\"),e.widgetOptions.filter_ignoreCase?\"i\":\"\").test(t.exact)}catch(e){return null}}return null},fuzzy:function(e,t){if(D.fuzzyTest.test(t.iFilter)){var r,i=0,l=t.iExact.length,a=t.iFilter.slice(1),n=I.parseFilter(e,a,t)||\"\";for(r=0;r<l;r++)t.iExact[r]===n[i]&&(i+=1);return i===n.length}return null}},init:function(r){z.language=M.extend(!0,{},{to:\"to\",or:\"or\",and:\"and\"},z.language);var e,t,i,l,a,n,s,o,c=r.config,f=c.widgetOptions,d=function(e,t,r){return\"\"===(t=t.trim())?\"\":(e||\"\")+t+(r||\"\")};if(c.$table.addClass(\"hasFilters\"),c.lastSearch=[],f.filter_searchTimer=null,f.filter_initTimer=null,f.filter_formatterCount=0,f.filter_formatterInit=[],f.filter_anyColumnSelector='[data-column=\"all\"],[data-column=\"any\"]',f.filter_multipleColumnSelector='[data-column*=\"-\"],[data-column*=\",\"]',n=\"\\\\{\"+D.query+\"\\\\}\",M.extend(D,{child:new RegExp(c.cssChildRow),filtered:new RegExp(f.filter_filteredRow),alreadyFiltered:new RegExp(\"(\\\\s+(-\"+d(\"|\",z.language.or)+d(\"|\",z.language.to)+\")\\\\s+)\",\"i\"),toTest:new RegExp(\"\\\\s+(-\"+d(\"|\",z.language.to)+\")\\\\s+\",\"i\"),toSplit:new RegExp(\"(?:\\\\s+(?:-\"+d(\"|\",z.language.to)+\")\\\\s+)\",\"gi\"),andTest:new RegExp(\"\\\\s+(\"+d(\"\",z.language.and,\"|\")+\"&&)\\\\s+\",\"i\"),andSplit:new RegExp(\"(?:\\\\s+(?:\"+d(\"\",z.language.and,\"|\")+\"&&)\\\\s+)\",\"gi\"),orTest:new RegExp(\"(\\\\|\"+d(\"|\\\\s+\",z.language.or,\"\\\\s+\")+\")\",\"i\"),orSplit:new RegExp(\"(?:\\\\|\"+d(\"|\\\\s+(?:\",z.language.or,\")\\\\s+\")+\")\",\"gi\"),iQuery:new RegExp(n,\"i\"),igQuery:new RegExp(n,\"ig\"),operTest:/^[<>]=?/,gtTest:/>/,gteTest:/>=/,ltTest:/</,lteTest:/<=/,notTest:/^\\!/,wildOrTest:/[\\?\\*\\|]/,wildTest:/\\?\\*/,fuzzyTest:/^~/,exactTest:/[=\\\"\\|!]/}),n=c.$headers.filter(\".filter-false, .parser-false\").length,!1!==f.filter_columnFilters&&n!==c.$headers.length&&I.buildRow(r,c,f),i=\"addRows updateCell update updateRows updateComplete appendCache filterReset \"+\"filterAndSortReset filterResetSaved filterEnd search \".split(\" \").join(c.namespace+\"filter \"),c.$table.bind(i,function(e,t){return n=f.filter_hideEmpty&&M.isEmptyObject(c.cache)&&!(c.delayInit&&\"appendCache\"===e.type),c.$table.find(\".\"+_.filterRow).toggleClass(f.filter_filteredRow,n),/(search|filter)/.test(e.type)||(e.stopPropagation(),I.buildDefault(r,!0)),\"filterReset\"===e.type||\"filterAndSortReset\"===e.type?(c.$table.find(\".\"+_.filter).add(f.filter_$externalFilters).val(\"\"),\"filterAndSortReset\"===e.type?z.sortReset(this.config,function(){I.searching(r,[])}):I.searching(r,[])):\"filterResetSaved\"===e.type?z.storage(r,\"tablesorter-filters\",\"\"):\"filterEnd\"===e.type?I.buildDefault(r,!0):(t=\"search\"===e.type?t:\"updateComplete\"===e.type?c.$table.data(\"lastSearch\"):\"\",/(update|add)/.test(e.type)&&\"updateComplete\"!==e.type&&(c.lastCombinedFilter=null,c.lastSearch=[],setTimeout(function(){c.$table.triggerHandler(\"filterFomatterUpdate\")},100)),I.searching(r,t,!0)),!1}),f.filter_reset&&(f.filter_reset instanceof M?f.filter_reset.click(function(){c.$table.triggerHandler(\"filterReset\")}):M(f.filter_reset).length&&M(document).undelegate(f.filter_reset,\"click\"+c.namespace+\"filter\").delegate(f.filter_reset,\"click\"+c.namespace+\"filter\",function(){c.$table.triggerHandler(\"filterReset\")})),f.filter_functions)for(a=0;a<c.columns;a++)if(s=z.getColumnData(r,f.filter_functions,a))if(o=!((l=c.$headerIndexed[a].removeClass(\"filter-select\")).hasClass(\"filter-false\")||l.hasClass(\"parser-false\")),!(e=\"\")===s&&o)I.buildSelect(r,a);else if(\"object\"==typeof s&&o){for(t in s)\"string\"==typeof t&&(e+=\"\"===e?'<option value=\"\">'+(l.data(\"placeholder\")||l.attr(\"data-placeholder\")||f.filter_placeholder.select||\"\")+\"</option>\":\"\",0<=(i=n=t).indexOf(f.filter_selectSourceSeparator)&&(i=(n=t.split(f.filter_selectSourceSeparator))[1],n=n[0]),e+=\"<option \"+(i===n?\"\":'data-function-name=\"'+t+'\" ')+'value=\"'+n+'\">'+i+\"</option>\");c.$table.find(\"thead\").find(\"select.\"+_.filter+'[data-column=\"'+a+'\"]').append(e),(s=\"function\"==typeof(i=f.filter_selectSource)||z.getColumnData(r,i,a))&&I.buildSelect(c.table,a,\"\",!0,l.hasClass(f.filter_onlyAvail))}I.buildDefault(r,!0),I.bindSearch(r,c.$table.find(\".\"+_.filter),!0),f.filter_external&&I.bindSearch(r,f.filter_external),f.filter_hideFilters&&I.hideFilters(c),c.showProcessing&&(i=\"filterStart filterEnd \".split(\" \").join(c.namespace+\"filter-sp \"),c.$table.unbind(i.replace(z.regex.spaces,\" \")).bind(i,function(e,t){l=t?c.$table.find(\".\"+_.header).filter(\"[data-column]\").filter(function(){return\"\"!==t[M(this).data(\"column\")]}):\"\",z.isProcessing(r,\"filterStart\"===e.type,t?l:\"\")})),c.filteredRows=c.totalRows,i=\"tablesorter-initialized pagerBeforeInitialized \".split(\" \").join(c.namespace+\"filter \"),c.$table.unbind(i.replace(z.regex.spaces,\" \")).bind(i,function(){I.completeInit(this)}),c.pager&&c.pager.initialized&&!f.filter_initialized?(c.$table.triggerHandler(\"filterFomatterUpdate\"),setTimeout(function(){I.filterInitComplete(c)},100)):f.filter_initialized||I.completeInit(r)},completeInit:function(e){var t=e.config,r=t.widgetOptions,i=I.setDefaults(e,t,r)||[];i.length&&(t.delayInit&&\"\"===i.join(\"\")||z.setFilters(e,i,!0)),t.$table.triggerHandler(\"filterFomatterUpdate\"),setTimeout(function(){r.filter_initialized||I.filterInitComplete(t)},100)},formatterUpdated:function(e,t){var r=e&&e.closest(\"table\"),i=r.length&&r[0].config,l=i&&i.widgetOptions;l&&!l.filter_initialized&&(l.filter_formatterInit[t]=1)},filterInitComplete:function(e){var t,r,i=e.widgetOptions,l=0,a=function(){i.filter_initialized=!0,e.lastSearch=e.$table.data(\"lastSearch\"),e.$table.triggerHandler(\"filterInit\",e),I.findRows(e.table,e.lastSearch||[]),z.debug(e,\"filter\")&&console.log(\"Filter >> Widget initialized\")};if(M.isEmptyObject(i.filter_formatter))a();else{for(r=i.filter_formatterInit.length,t=0;t<r;t++)1===i.filter_formatterInit[t]&&l++;clearTimeout(i.filter_initTimer),i.filter_initialized||l!==i.filter_formatterCount?i.filter_initialized||(i.filter_initTimer=setTimeout(function(){a()},500)):a()}},processFilters:function(e,t){var r,i=[],l=t?encodeURIComponent:decodeURIComponent,a=e.length;for(r=0;r<a;r++)e[r]&&(i[r]=l(e[r]));return i},setDefaults:function(e,t,r){var i,l,a,n,s,o=z.getFilters(e)||[];if(r.filter_saveFilters&&z.storage&&(l=z.storage(e,\"tablesorter-filters\")||[],(i=M.isArray(l))&&\"\"===l.join(\"\")||!i||(o=I.processFilters(l))),\"\"===o.join(\"\"))for(s=t.$headers.add(r.filter_$externalFilters).filter(\"[\"+r.filter_defaultAttrib+\"]\"),a=0;a<=t.columns;a++)n=a===t.columns?\"all\":a,o[a]=s.filter('[data-column=\"'+n+'\"]').attr(r.filter_defaultAttrib)||o[a]||\"\";return t.$table.data(\"lastSearch\",o),o},parseFilter:function(e,t,r,i){return i||r.parsed[r.index]?e.parsers[r.index].format(t,e.table,[],r.index):t},buildRow:function(e,t,r){var i,l,a,n,s,o,c,f,d,u=r.filter_cellFilter,h=t.columns,p=M.isArray(u),g='<tr role=\"search\" class=\"'+_.filterRow+\" \"+t.cssIgnoreRow+'\">';for(a=0;a<h;a++)t.$headerIndexed[a].length&&(g+=1<(d=t.$headerIndexed[a]&&t.$headerIndexed[a][0].colSpan||0)?'<td data-column=\"'+a+\"-\"+(a+d-1)+'\" colspan=\"'+d+'\"':'<td data-column=\"'+a+'\"',g+=p?u[a]?' class=\"'+u[a]+'\"':\"\":\"\"!==u?' class=\"'+u+'\"':\"\",g+=\"></td>\");for(t.$filters=M(g+=\"</tr>\").appendTo(t.$table.children(\"thead\").eq(0)).children(\"td\"),a=0;a<h;a++)o=!1,(n=t.$headerIndexed[a])&&n.length&&(i=I.getColumnElm(t,t.$filters,a),f=z.getColumnData(e,r.filter_functions,a),s=r.filter_functions&&f&&\"function\"!=typeof f||n.hasClass(\"filter-select\"),l=z.getColumnData(e,t.headers,a),o=\"false\"===z.getData(n[0],l,\"filter\")||\"false\"===z.getData(n[0],l,\"parser\"),s?g=M(\"<select>\").appendTo(i):((f=z.getColumnData(e,r.filter_formatter,a))?(r.filter_formatterCount++,(g=f(i,a))&&0===g.length&&(g=i.children(\"input\")),g&&(0===g.parent().length||g.parent().length&&g.parent()[0]!==i[0])&&i.append(g)):g=M('<input type=\"search\">').appendTo(i),g&&(d=n.data(\"placeholder\")||n.attr(\"data-placeholder\")||r.filter_placeholder.search||\"\",g.attr(\"placeholder\",d))),g&&(c=(M.isArray(r.filter_cssFilter)?void 0!==r.filter_cssFilter[a]&&r.filter_cssFilter[a]||\"\":r.filter_cssFilter)||\"\",g.addClass(_.filter+\" \"+c),(d=(c=r.filter_filterLabel).match(/{{([^}]+?)}}/g))||(d=[\"{{label}}\"]),M.each(d,function(e,t){var r=new RegExp(t,\"g\"),i=n.attr(\"data-\"+t.replace(/{{|}}/g,\"\")),l=void 0===i?n.text():i;c=c.replace(r,M.trim(l))}),g.attr({\"data-column\":i.attr(\"data-column\"),\"aria-label\":c}),o&&(g.attr(\"placeholder\",\"\").addClass(_.filterDisabled)[0].disabled=!0)))},bindSearch:function(l,e,t){if(l=M(l)[0],(e=M(e)).length){var r,a=l.config,n=a.widgetOptions,i=a.namespace+\"filter\",s=n.filter_$externalFilters;!0!==t&&(r=n.filter_anyColumnSelector+\",\"+n.filter_multipleColumnSelector,n.filter_$anyMatch=e.filter(r),s&&s.length?n.filter_$externalFilters=n.filter_$externalFilters.add(e):n.filter_$externalFilters=e,z.setFilters(l,a.$table.data(\"lastSearch\")||[],!1===t)),r=\"keypress keyup keydown search change input \".split(\" \").join(i+\" \"),e.attr(\"data-lastSearchTime\",(new Date).getTime()).unbind(r.replace(z.regex.spaces,\" \")).bind(\"keydown\"+i,function(e){if(e.which===o.escape&&!l.config.widgetOptions.filter_resetOnEsc)return!1}).bind(\"keyup\"+i,function(e){n=l.config.widgetOptions;var t=parseInt(M(this).attr(\"data-column\"),10),r=\"boolean\"==typeof n.filter_liveSearch?n.filter_liveSearch:z.getColumnData(l,n.filter_liveSearch,t);if(void 0===r&&(r=n.filter_liveSearch.fallback||!1),M(this).attr(\"data-lastSearchTime\",(new Date).getTime()),e.which===o.escape)this.value=n.filter_resetOnEsc?\"\":a.lastSearch[t];else{if(\"\"!==this.value&&(\"number\"==typeof r&&this.value.length<r||e.which!==o.enter&&e.which!==o.backSpace&&(e.which<o.space||e.which>=o.left&&e.which<=o.down)))return;if(!1===r&&\"\"!==this.value&&e.which!==o.enter)return}I.searching(l,!0,!0,t)}).bind(\"search change keypress input blur \".split(\" \").join(i+\" \"),function(e){var t=parseInt(M(this).attr(\"data-column\"),10),r=e.type,i=\"boolean\"==typeof n.filter_liveSearch?n.filter_liveSearch:z.getColumnData(l,n.filter_liveSearch,t);!l.config.widgetOptions.filter_initialized||e.which!==o.enter&&\"search\"!==r&&\"blur\"!==r&&(\"change\"!==r&&\"input\"!==r||!0!==i&&(!0===i||\"INPUT\"===e.target.nodeName)||this.value===a.lastSearch[t])||(e.preventDefault(),M(this).attr(\"data-lastSearchTime\",(new Date).getTime()),I.searching(l,\"keypress\"!==r,!0,t))})}},searching:function(e,t,r,i){var l,a=e.config.widgetOptions;void 0===i?l=!1:void 0===(l=\"boolean\"==typeof a.filter_liveSearch?a.filter_liveSearch:z.getColumnData(e,a.filter_liveSearch,i))&&(l=a.filter_liveSearch.fallback||!1),clearTimeout(a.filter_searchTimer),void 0===t||!0===t?a.filter_searchTimer=setTimeout(function(){I.checkFilters(e,t,r)},l?a.filter_searchDelay:10):I.checkFilters(e,t,r)},equalFilters:function(e,t,r){var i,l=[],a=[],n=e.columns+1;for(t=M.isArray(t)?t:[],r=M.isArray(r)?r:[],i=0;i<n;i++)l[i]=t[i]||\"\",a[i]=r[i]||\"\";return l.join(\",\")===a.join(\",\")},checkFilters:function(e,t,r){var i=e.config,l=i.widgetOptions,a=M.isArray(t),n=a?t:z.getFilters(e,!0),s=n||[];if(M.isEmptyObject(i.cache))i.delayInit&&(!i.pager||i.pager&&i.pager.initialized)&&z.updateCache(i,function(){I.checkFilters(e,!1,r)});else if(a&&(z.setFilters(e,n,!1,!0!==r),l.filter_initialized||(i.lastSearch=[],i.lastCombinedFilter=\"\")),l.filter_hideFilters&&i.$table.find(\".\"+_.filterRow).triggerHandler(I.hideFiltersCheck(i)?\"mouseleave\":\"mouseenter\"),!I.equalFilters(i,i.lastSearch,s)||!1===t){if(!1===t&&(i.lastCombinedFilter=\"\",i.lastSearch=[]),n=n||[],n=Array.prototype.map?n.map(String):n.join(\"<22>\").split(\"<22>\"),l.filter_initialized&&i.$table.triggerHandler(\"filterStart\",[n]),!i.showProcessing)return I.findRows(e,n,s),!1;setTimeout(function(){return I.findRows(e,n,s),!1},30)}},hideFiltersCheck:function(e){if(\"function\"==typeof e.widgetOptions.filter_hideFilters){var t=e.widgetOptions.filter_hideFilters(e);if(\"boolean\"==typeof t)return t}return\"\"===z.getFilters(e.$table).join(\"\")},hideFilters:function(i,e){var l;(e||i.$table).find(\".\"+_.filterRow).addClass(_.filterRowHide).bind(\"mouseenter mouseleave\",function(e){var t=e,r=M(this);clearTimeout(l),l=setTimeout(function(){/enter|over/.test(t.type)?r.removeClass(_.filterRowHide):M(document.activeElement).closest(\"tr\")[0]!==r[0]&&r.toggleClass(_.filterRowHide,I.hideFiltersCheck(i))},200)}).find(\"input, select\").bind(\"focus blur\",function(e){var t=e,r=M(this).closest(\"tr\");clearTimeout(l),l=setTimeout(function(){clearTimeout(l),r.toggleClass(_.filterRowHide,I.hideFiltersCheck(i)&&\"focus\"!==t.type)},200)})},defaultFilter:function(e,t){if(\"\"===e)return e;var r=D.iQuery,i=t.match(D.igQuery).length,l=1<i?M.trim(e).split(/\\s/):[M.trim(e)],a=l.length-1,n=0,s=t;for(a<1&&1<i&&(l[1]=l[0]);r.test(s);)s=s.replace(r,l[n++]||\"\"),r.test(s)&&n<a&&\"\"!==(l[n]||\"\")&&(s=t.replace(r,s));return s},getLatestSearch:function(e){return e?e.sort(function(e,t){return M(t).attr(\"data-lastSearchTime\")-M(e).attr(\"data-lastSearchTime\")}):e||M()},findRange:function(e,t,r){var i,l,a,n,s,o,c,f,d,u=[];if(/^[0-9]+$/.test(t))return[parseInt(t,10)];if(!r&&/-/.test(t))for(d=(l=t.match(/(\\d+)\\s*-\\s*(\\d+)/g))?l.length:0,f=0;f<d;f++){for(a=l[f].split(/\\s*-\\s*/),n=parseInt(a[0],10)||0,(s=parseInt(a[1],10)||e.columns-1)<n&&(i=n,n=s,s=i),s>=e.columns&&(s=e.columns-1);n<=s;n++)u[u.length]=n;t=t.replace(l[f],\"\")}if(!r&&/,/.test(t))for(d=(o=t.split(/\\s*,\\s*/)).length,c=0;c<d;c++)\"\"!==o[c]&&(f=parseInt(o[c],10))<e.columns&&(u[u.length]=f);if(!u.length)for(f=0;f<e.columns;f++)u[u.length]=f;return u},getColumnElm:function(t,e,r){return e.filter(function(){var e=I.findRange(t,M(this).attr(\"data-column\"));return-1<M.inArray(r,e)})},multipleColumns:function(e,t){var r=e.widgetOptions,i=r.filter_initialized||!t.filter(r.filter_anyColumnSelector).length,l=M.trim(I.getLatestSearch(t).attr(\"data-column\")||\"\");return I.findRange(e,l,!i)},processTypes:function(e,t,r){var i,l=null,a=null;for(i in I.types)M.inArray(i,r.excludeMatch)<0&&null===a&&null!==(a=I.types[i](e,t,r))&&(t.matchedOn=i,l=a);return l},matchType:function(e,t){var r=e.widgetOptions,i=e.$headerIndexed[t];return!i.hasClass(\"filter-exact\")&&(!!i.hasClass(\"filter-match\")||(r.filter_columnFilters?i=e.$filters.find(\".\"+_.filter).add(r.filter_$externalFilters).filter('[data-column=\"'+t+'\"]'):r.filter_$externalFilters&&(i=r.filter_$externalFilters.filter('[data-column=\"'+t+'\"]')),!!i.length&&\"match\"===e.widgetOptions.filter_matchType[(i[0].nodeName||\"\").toLowerCase()]))},processRow:function(t,r,e){var i,l,a,n,s,o=t.widgetOptions,c=!0,f=o.filter_$anyMatch&&o.filter_$anyMatch.length,d=o.filter_$anyMatch&&o.filter_$anyMatch.length?I.multipleColumns(t,o.filter_$anyMatch):[];if(r.$cells=r.$row.children(),r.matchedOn=null,r.anyMatchFlag&&1<d.length||r.anyMatchFilter&&!f){if(r.anyMatch=!0,r.isMatch=!0,r.rowArray=r.$cells.map(function(e){if(-1<M.inArray(e,d)||r.anyMatchFilter&&!f)return r.parsed[e]?s=r.cacheArray[e]:(s=r.rawArray[e],s=M.trim(o.filter_ignoreCase?s.toLowerCase():s),t.sortLocaleCompare&&(s=z.replaceAccents(s))),s}).get(),r.filter=r.anyMatchFilter,r.iFilter=r.iAnyMatchFilter,r.exact=r.rowArray.join(\" \"),r.iExact=o.filter_ignoreCase?r.exact.toLowerCase():r.exact,r.cache=r.cacheArray.slice(0,-1).join(\" \"),e.excludeMatch=e.noAnyMatch,null!==(l=I.processTypes(t,r,e)))c=l;else if(o.filter_startsWith)for(c=!1,d=Math.min(t.columns,r.rowArray.length);!c&&0<d;)d--,c=c||0===r.rowArray[d].indexOf(r.iFilter);else c=0<=(r.iExact+r.childRowText).indexOf(r.iFilter);if(r.anyMatch=!1,r.filters.join(\"\")===r.filter)return c}for(d=0;d<t.columns;d++)r.filter=r.filters[d],r.index=d,e.excludeMatch=e.excludeFilter[d],r.filter&&(r.cache=r.cacheArray[d],i=r.parsed[d]?r.cache:r.rawArray[d]||\"\",r.exact=t.sortLocaleCompare?z.replaceAccents(i):i,r.iExact=!D.type.test(typeof r.exact)&&o.filter_ignoreCase?r.exact.toLowerCase():r.exact,r.isMatch=I.matchType(t,d),i=c,n=o.filter_columnFilters&&t.$filters.add(o.filter_$externalFilters).filter('[data-column=\"'+d+'\"]').find(\"select option:selected\").attr(\"data-function-name\")||\"\",t.sortLocaleCompare&&(r.filter=z.replaceAccents(r.filter)),o.filter_defaultFilter&&D.iQuery.test(e.defaultColFilter[d])&&(r.filter=I.defaultFilter(r.filter,e.defaultColFilter[d])),r.iFilter=o.filter_ignoreCase?(r.filter||\"\").toLowerCase():r.filter,l=null,(a=e.functions[d])&&(\"function\"==typeof a?l=a(r.exact,r.cache,r.filter,d,r.$row,t,r):\"function\"==typeof a[n||r.filter]&&(l=a[s=n||r.filter](r.exact,r.cache,r.filter,d,r.$row,t,r))),c=!!(i=null===l?(l=I.processTypes(t,r,e),s=!0===a&&(\"and\"===r.matchedOn||\"or\"===r.matchedOn),null===l||s?!0===a?r.isMatch?0<=(\"\"+r.iExact).search(r.iFilter):r.filter===r.exact:(s=(r.iExact+r.childRowText).indexOf(I.parseFilter(t,r.iFilter,r)),!o.filter_startsWith&&0<=s||o.filter_startsWith&&0===s):l):l)&&c);return c},findRows:function(e,r,t){if(!I.equalFilters(e.config,e.config.lastSearch,t)&&e.config.widgetOptions.filter_initialized){var i,l,a,n,s,o,c,f,d,u,h,p,g,m,_,y,F,w,x,b,C,v,$,S=M.extend([],r),R=e.config,T=R.widgetOptions,A=z.debug(R,\"filter\"),O={anyMatch:!1,filters:r,filter_regexCache:[]},E={noAnyMatch:[\"range\",\"operators\"],functions:[],excludeFilter:[],defaultColFilter:[],defaultAnyFilter:z.getColumnData(e,T.filter_defaultFilter,R.columns,!0)||\"\"};for(O.parsed=[],d=0;d<R.columns;d++)O.parsed[d]=T.filter_useParsedData||R.parsers&&R.parsers[d]&&R.parsers[d].parsed||z.getData&&\"parsed\"===z.getData(R.$headerIndexed[d],z.getColumnData(e,R.headers,d),\"filter\")||R.$headerIndexed[d].hasClass(\"filter-parsed\"),E.functions[d]=z.getColumnData(e,T.filter_functions,d)||R.$headerIndexed[d].hasClass(\"filter-select\"),E.defaultColFilter[d]=z.getColumnData(e,T.filter_defaultFilter,d)||\"\",E.excludeFilter[d]=(z.getColumnData(e,T.filter_excludeFilter,d,!0)||\"\").split(/\\s+/);for(A&&(console.log(\"Filter >> Starting filter widget search\",r),m=new Date),R.filteredRows=0,t=S||[],c=R.totalRows=0;c<R.$tbodies.length;c++){if(f=z.processTbody(e,R.$tbodies.eq(c),!0),d=R.columns,l=R.cache[c].normalized,n=M(M.map(l,function(e){return e[d].$row.get()})),\"\"===t.join(\"\")||T.filter_serversideFiltering)n.removeClass(T.filter_filteredRow).not(\".\"+R.cssChildRow).css(\"display\",\"\");else{if(i=(n=n.not(\".\"+R.cssChildRow)).length,(T.filter_$anyMatch&&T.filter_$anyMatch.length||void 0!==r[R.columns])&&(O.anyMatchFlag=!0,O.anyMatchFilter=\"\"+(r[R.columns]||T.filter_$anyMatch&&I.getLatestSearch(T.filter_$anyMatch).val()||\"\"),T.filter_columnAnyMatch)){for(x=O.anyMatchFilter.split(D.andSplit),b=!1,y=0;y<x.length;y++)1<(C=x[y].split(\":\")).length&&(isNaN(C[0])?M.each(R.headerContent,function(e,t){-1<t.toLowerCase().indexOf(C[0])&&(r[v=e]=C[1])}):v=parseInt(C[0],10)-1,0<=v&&v<R.columns&&(r[v]=C[1],x.splice(y,1),y--,b=!0));b&&(O.anyMatchFilter=x.join(\" && \"))}if(w=T.filter_searchFiltered,h=R.lastSearch||R.$table.data(\"lastSearch\")||[],w)for(y=0;y<d+1;y++)_=r[y]||\"\",w||(y=d),w=w&&h.length&&0===_.indexOf(h[y]||\"\")&&!D.alreadyFiltered.test(_)&&!D.exactTest.test(_)&&!(D.isNeg1.test(_)||D.isNeg2.test(_))&&!(\"\"!==_&&R.$filters&&R.$filters.filter('[data-column=\"'+y+'\"]').find(\"select\").length&&!I.matchType(R,y));for(F=n.not(\".\"+T.filter_filteredRow).length,w&&0===F&&(w=!1),A&&console.log(\"Filter >> Searching through \"+(w&&F<i?F:\"all\")+\" rows\"),O.anyMatchFlag&&(R.sortLocaleCompare&&(O.anyMatchFilter=z.replaceAccents(O.anyMatchFilter)),T.filter_defaultFilter&&D.iQuery.test(E.defaultAnyFilter)&&(O.anyMatchFilter=I.defaultFilter(O.anyMatchFilter,E.defaultAnyFilter),w=!1),O.iAnyMatchFilter=T.filter_ignoreCase&&R.ignoreCase?O.anyMatchFilter.toLowerCase():O.anyMatchFilter),o=0;o<i;o++)if($=n[o].className,!(o&&D.child.test($)||w&&D.filtered.test($))){if(O.$row=n.eq(o),O.rowIndex=o,O.cacheArray=l[o],a=O.cacheArray[R.columns],O.rawArray=a.raw,O.childRowText=\"\",!T.filter_childByColumn){for($=\"\",u=a.child,y=0;y<u.length;y++)$+=\" \"+u[y].join(\" \")||\"\";O.childRowText=T.filter_childRows?T.filter_ignoreCase?$.toLowerCase():$:\"\"}if(p=!1,g=I.processRow(R,O,E),s=a.$row,_=!!g,u=a.$row.filter(\":gt(0)\"),T.filter_childRows&&u.length){if(T.filter_childByColumn)for(T.filter_childWithSibs||(u.addClass(T.filter_filteredRow),s=s.eq(0)),y=0;y<u.length;y++)O.$row=u.eq(y),O.cacheArray=a.child[y],O.rawArray=O.cacheArray,_=I.processRow(R,O,E),p=p||_,!T.filter_childWithSibs&&_&&u.eq(y).removeClass(T.filter_filteredRow);p=p||g}else p=_;s.toggleClass(T.filter_filteredRow,!p)[0].display=p?\"\":\"none\"}}R.filteredRows+=n.not(\".\"+T.filter_filteredRow).length,R.totalRows+=n.length,z.processTbody(e,f,!1)}R.lastCombinedFilter=S.join(\"\"),R.lastSearch=S,R.$table.data(\"lastSearch\",S),T.filter_saveFilters&&z.storage&&z.storage(e,\"tablesorter-filters\",I.processFilters(S,!0)),A&&console.log(\"Filter >> Completed search\"+z.benchmark(m)),T.filter_initialized&&(R.$table.triggerHandler(\"filterBeforeEnd\",R),R.$table.triggerHandler(\"filterEnd\",R)),setTimeout(function(){z.applyWidget(R.table)},0)}},getOptionSource:function(e,t,r){var i=(e=M(e)[0]).config,l=!1,a=i.widgetOptions.filter_selectSource,n=i.$table.data(\"lastSearch\")||[],s=\"function\"==typeof a||z.getColumnData(e,a,t);if(r&&\"\"!==n[t]&&(r=!1),!0===s)l=a(e,t,r);else{if(s instanceof M||\"string\"===M.type(s)&&0<=s.indexOf(\"</option>\"))return s;if(M.isArray(s))l=s;else if(\"object\"===M.type(a)&&s&&null===(l=s(e,t,r)))return null}return!1===l&&(l=I.getOptions(e,t,r)),I.processOptions(e,t,l)},processOptions:function(l,a,r){if(!M.isArray(r))return!1;var n,e,t,i,s,o,c=(l=M(l)[0]).config,f=null!=a&&0<=a&&a<c.columns,d=!!f&&c.$headerIndexed[a].hasClass(\"filter-select-sort-desc\"),u=[];if(r=M.grep(r,function(e,t){return!!e.text||M.inArray(e,r)===t}),f&&c.$headerIndexed[a].hasClass(\"filter-select-nosort\"))return r;for(i=r.length,t=0;t<i;t++)o=(e=r[t]).text?e.text:e,s=(f&&c.parsers&&c.parsers.length&&c.parsers[a].format(o,l,[],a)||o).toString(),s=c.widgetOptions.filter_ignoreCase?s.toLowerCase():s,e.text?(e.parsed=s,u[u.length]=e):u[u.length]={text:e,parsed:s};for(n=c.textSorter||\"\",u.sort(function(e,t){var r=d?t.parsed:e.parsed,i=d?e.parsed:t.parsed;return f&&\"function\"==typeof n?n(r,i,!0,a,l):f&&\"object\"==typeof n&&n.hasOwnProperty(a)?n[a](r,i,!0,a,l):!z.sortNatural||z.sortNatural(r,i)}),r=[],i=u.length,t=0;t<i;t++)r[r.length]=u[t];return r},getOptions:function(e,t,r){var i,l,a,n,s,o,c,f,d=(e=M(e)[0]).config,u=d.widgetOptions,h=[];for(l=0;l<d.$tbodies.length;l++)for(s=d.cache[l],a=d.cache[l].normalized.length,i=0;i<a;i++)if(n=s.row?s.row[i]:s.normalized[i][d.columns].$row[0],!r||!n.className.match(u.filter_filteredRow))if(u.filter_useParsedData||d.parsers[t].parsed||d.$headerIndexed[t].hasClass(\"filter-parsed\")){if(h[h.length]=\"\"+s.normalized[i][t],u.filter_childRows&&u.filter_childByColumn)for(f=s.normalized[i][d.columns].$row.length-1,o=0;o<f;o++)h[h.length]=\"\"+s.normalized[i][d.columns].child[o][t]}else if(h[h.length]=s.normalized[i][d.columns].raw[t],u.filter_childRows&&u.filter_childByColumn)for(f=s.normalized[i][d.columns].$row.length,o=1;o<f;o++)c=s.normalized[i][d.columns].$row.eq(o).children().eq(t),h[h.length]=\"\"+z.getElementText(d,c,t);return h},buildSelect:function(e,t,r,i,l){if(e=M(e)[0],t=parseInt(t,10),e.config.cache&&!M.isEmptyObject(e.config.cache)){var a,n,s,o,c,f,d,u=e.config,h=u.widgetOptions,p=u.$headerIndexed[t],g='<option value=\"\">'+(p.data(\"placeholder\")||p.attr(\"data-placeholder\")||h.filter_placeholder.select||\"\")+\"</option>\",m=u.$table.find(\"thead\").find(\"select.\"+_.filter+'[data-column=\"'+t+'\"]').val();if(void 0!==r&&\"\"!==r||null!==(r=I.getOptionSource(e,t,l))){if(M.isArray(r)){for(a=0;a<r.length;a++)if((d=r[a]).text){for(n in d[\"data-function-name\"]=void 0===d.value?d.text:d.value,g+=\"<option\",d)d.hasOwnProperty(n)&&\"text\"!==n&&(g+=\" \"+n+'=\"'+d[n].replace(D.quote,\"&quot;\")+'\"');d.value||(g+=' value=\"'+d.text.replace(D.quote,\"&quot;\")+'\"'),g+=\">\"+d.text.replace(D.quote,\"&quot;\")+\"</option>\"}else\"\"+d!=\"[object Object]\"&&(0<=(n=s=d=(\"\"+d).replace(D.quote,\"&quot;\")).indexOf(h.filter_selectSourceSeparator)&&(n=(o=s.split(h.filter_selectSourceSeparator))[0],s=o[1]),g+=\"\"!==d?\"<option \"+(n===s?\"\":'data-function-name=\"'+d+'\" ')+'value=\"'+n+'\">'+s+\"</option>\":\"\");r=[]}c=(u.$filters?u.$filters:u.$table.children(\"thead\")).find(\".\"+_.filter),h.filter_$externalFilters&&(c=c&&c.length?c.add(h.filter_$externalFilters):h.filter_$externalFilters),(f=c.filter('select[data-column=\"'+t+'\"]')).length&&(f[i?\"html\":\"append\"](g),M.isArray(r)||f.append(r).val(m),f.val(m))}}},buildDefault:function(e,t){var r,i,l,a=e.config,n=a.widgetOptions,s=a.columns;for(r=0;r<s;r++)l=!((i=a.$headerIndexed[r]).hasClass(\"filter-false\")||i.hasClass(\"parser-false\")),(i.hasClass(\"filter-select\")||!0===z.getColumnData(e,n.filter_functions,r))&&l&&I.buildSelect(e,r,\"\",t,i.hasClass(n.filter_onlyAvail))}}).regex,z.getFilters=function(e,t,r,i){var l,a,n,s,o=[],c=e?M(e)[0].config:\"\",f=c?c.widgetOptions:\"\";if(!0!==t&&f&&!f.filter_columnFilters||M.isArray(r)&&I.equalFilters(c,r,c.lastSearch))return M(e).data(\"lastSearch\")||[];if(c&&(c.$filters&&(a=c.$filters.find(\".\"+_.filter)),f.filter_$externalFilters&&(a=a&&a.length?a.add(f.filter_$externalFilters):f.filter_$externalFilters),a&&a.length))for(o=r||[],l=0;l<c.columns+1;l++)s=l===c.columns?f.filter_anyColumnSelector+\",\"+f.filter_multipleColumnSelector:'[data-column=\"'+l+'\"]',(n=a.filter(s)).length&&(n=I.getLatestSearch(n),M.isArray(r)?(i&&1<n.length&&(n=n.slice(1)),l===c.columns&&(n=(s=n.filter(f.filter_anyColumnSelector)).length?s:n),n.val(r[l]).trigger(\"change\"+c.namespace)):(o[l]=n.val()||\"\",l===c.columns?n.slice(1).filter('[data-column*=\"'+n.attr(\"data-column\")+'\"]').val(o[l]):n.slice(1).val(o[l])),l===c.columns&&n.length&&(f.filter_$anyMatch=n));return o},z.setFilters=function(e,t,r,i){var l=e?M(e)[0].config:\"\",a=z.getFilters(e,!0,t,i);return void 0===r&&(r=!0),l&&r&&(l.lastCombinedFilter=null,l.lastSearch=[],I.searching(l.table,t,i),l.$table.triggerHandler(\"filterFomatterUpdate\")),0!==a.length}}(jQuery);return jQuery;}));\n","(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){\n\n!function(h){\"use strict\";var f=h.tablesorter,c=\".tscolsel\",S=f.columnSelector={queryAll:\"@media only all { [columns] { display: none; } } \",queryBreak:\"@media all and (min-width: [size]) { [columns] { display: table-cell; } } \",init:function(e,t,o){var l,a,n=f.debug(t,\"columnSelector\");(l=h(o.columnSelector_layout)).find(\"input\").add(l.filter(\"input\")).length?(t.$table.addClass(t.namespace.slice(1)+\"columnselector\"),(a=t.selector={$container:h(o.columnSelector_container||\"<div>\")}).$style=h(\"<style></style>\").prop(\"disabled\",!0).appendTo(\"head\"),a.$breakpoints=h(\"<style></style>\").prop(\"disabled\",!0).appendTo(\"head\"),a.isInitializing=!0,S.setUpColspan(t,o),S.setupSelector(t,o),o.columnSelector_mediaquery&&S.setupBreakpoints(t,o),a.isInitializing=!1,a.$container.length?S.updateCols(t,o):n&&console.warn(\"ColumnSelector >> container not found\"),t.$table.off(\"refreshColumnSelector\"+c).on(\"refreshColumnSelector\"+c,function(e,t,o){S.refreshColumns(this.config,t,o)}),n&&console.log(\"ColumnSelector >> Widget initialized\")):n&&console.error(\"ColumnSelector >> ERROR: Column Selector aborting, no input found in the layout! ***\")},refreshColumns:function(e,t,o){var l,a,n,c,r=e.selector,s=h.isArray(o||t),i=e.widgetOptions;if(null!=t&&r.$container.length){if(\"selectors\"===t&&(r.$container.empty(),S.setupSelector(e,i),S.setupBreakpoints(e,i),void 0===o&&null!==o&&(o=r.auto)),s)for(a=o||t,h.each(a,function(e,t){a[e]=parseInt(t,10)}),l=0;l<e.columns;l++)c=0<=h.inArray(l,a),(n=r.$container.find(\"input[data-column=\"+l+\"]\")).length&&(n.prop(\"checked\",c),r.states[l]=c);c=!0===o||!0===t||\"auto\"===t&&!1!==o,n=r.$container.find('input[data-column=\"auto\"]').prop(\"checked\",c),S.updateAuto(e,i,n)}else S.updateBreakpoints(e,i),S.updateCols(e,i);S.saveValues(e,i),S.adjustColspans(e,i)},setupSelector:function(t,o){var e,l,a,n,c,r,s,i=t.selector,u=i.$container,d=o.columnSelector_saveColumns&&f.storage,p=d?f.storage(t.table,\"tablesorter-columnSelector\"):[],m=d?f.storage(t.table,\"tablesorter-columnSelector-auto\"):{};for(i.auto=h.isEmptyObject(m)||\"boolean\"!==h.type(m.auto)?o.columnSelector_mediaqueryState:m.auto,i.states=[],i.$column=[],i.$wrapper=[],i.$checkbox=[],e=0;e<t.columns;e++)n=(a=t.$headerIndexed[e]).attr(o.columnSelector_priority)||1,r=a.attr(\"data-column\"),c=f.getColumnData(t.table,t.headers,r),m=f.getData(a,c,\"columnSelector\"),isNaN(n)&&0<n.length||\"disable\"===m||o.columnSelector_columns[r]&&\"disable\"===o.columnSelector_columns[r]?i.states[r]=null:(i.states[r]=p&&void 0!==p[r]&&null!==p[r]?p[r]:void 0!==o.columnSelector_columns[r]&&null!==o.columnSelector_columns[r]?o.columnSelector_columns[r]:\"true\"===m||\"false\"!==m,i.$column[r]=h(this),u.length&&(l=a.attr(o.columnSelector_name)||a.text().trim(),\"function\"==typeof o.columnSelector_layoutCustomizer&&(s=a.find(\".\"+f.css.headerIn),l=o.columnSelector_layoutCustomizer(s.length?s:a,l,parseInt(r,10))),i.$wrapper[r]=h(o.columnSelector_layout.replace(/\\{name\\}/g,l)).appendTo(u),i.$checkbox[r]=i.$wrapper[r].find(\"input\").add(i.$wrapper[r].filter(\"input\")).attr(\"data-column\",r).toggleClass(o.columnSelector_cssChecked,i.states[r]).prop(\"checked\",i.states[r]).on(\"change\",function(){if(!i.isInitializing){var e=h(this).attr(\"data-column\");if(!S.checkChange(t,this.checked))return this.checked=!this.checked,!1;t.selector.states[e]=this.checked,S.updateCols(t,o)}}).change()))},checkChange:function(e,t){for(var o=e.widgetOptions,l=o.columnSelector_maxVisible,a=o.columnSelector_minVisible,n=e.selector.states,c=n.length,r=0;0<=c--;)n[c]&&r++;return!(t&null!==l&&l<=r||!t&&null!==a&&r<=a)},setupBreakpoints:function(e,t){var o=e.selector;t.columnSelector_mediaquery&&(o.lastIndex=-1,S.updateBreakpoints(e,t),e.$table.off(\"updateAll\"+c).on(\"updateAll\"+c,function(){S.setupSelector(e,t),S.setupBreakpoints(e,t),S.updateBreakpoints(e,t),S.updateCols(e,t)})),o.$container.length&&(t.columnSelector_mediaquery&&(o.$auto=h(t.columnSelector_layout.replace(/\\{name\\}/g,t.columnSelector_mediaqueryName)).prependTo(o.$container),o.$auto.find(\"input\").add(o.$auto.filter(\"input\")).attr(\"data-column\",\"auto\").prop(\"checked\",o.auto).toggleClass(t.columnSelector_cssChecked,o.auto).on(\"change\",function(){S.updateAuto(e,t,h(this))}).change()),e.$table.off(\"update\"+c).on(\"update\"+c,function(){S.updateCols(e,t)}))},updateAuto:function(e,t,o){var l=e.selector;l.auto=o.prop(\"checked\")||!1,h.each(l.$checkbox,function(e,t){t&&(t[0].disabled=l.auto,l.$wrapper[e].toggleClass(\"disabled\",l.auto))}),t.columnSelector_mediaquery&&S.updateBreakpoints(e,t),S.updateCols(e,t),e.selector.$popup&&e.selector.$popup.find(\".tablesorter-column-selector\").html(l.$container.html()).find(\"input\").each(function(){var e=h(this).attr(\"data-column\");h(this).prop(\"checked\",\"auto\"===e?l.auto:l.states[e])}),S.saveValues(e,t),S.adjustColspans(e,t),l.auto&&e.$table.triggerHandler(t.columnSelector_updated)},addSelectors:function(e,t,o){var l=[],a=\" col:nth-child(\"+o+\")\";return l.push(t+a+\",\"+t+\"_extra_table\"+a),a=\" tr:not(.\"+e.columnSelector_classHasSpan+') th[data-column=\"'+(o-1)+'\"]',l.push(t+a+\",\"+t+\"_extra_table\"+a),a=\" tr:not(.\"+e.columnSelector_classHasSpan+\") td:nth-child(\"+o+\")\",l.push(t+a+\",\"+t+\"_extra_table\"+a),a=\" tr td:not(\"+t+e.columnSelector_classHasSpan+')[data-column=\"'+(o-1)+'\"]',l.push(t+a+\",\"+t+\"_extra_table\"+a),l},updateBreakpoints:function(e,t){var o,l,a,n,c=[],r=e.selector,s=e.namespace+\"columnselector\",i=[],u=\"\";if(t.columnSelector_mediaquery&&!r.auto)return r.$breakpoints.prop(\"disabled\",!0),void r.$style.prop(\"disabled\",!1);if(t.columnSelector_mediaqueryHidden)for(a=0;a<e.columns;a++)l=f.getColumnData(e.table,e.headers,a),c[a+1]=\"false\"===f.getData(e.$headerIndexed[a],l,\"columnSelector\"),c[a+1]&&(i=i.concat(S.addSelectors(t,s,a+1)));for(o=0;o<t.columnSelector_maxPriorities;o++)n=[],e.$headers.filter(\"[\"+t.columnSelector_priority+\"=\"+(o+1)+\"]\").each(function(){a=parseInt(h(this).attr(\"data-column\"),10)+1,c[a]||(n=n.concat(S.addSelectors(t,s,a)))}),n.length&&(i=i.concat(n),u+=S.queryBreak.replace(/\\[size\\]/g,t.columnSelector_breakpoints[o]).replace(/\\[columns\\]/g,n.join(\",\")));r.$style&&r.$style.prop(\"disabled\",!0),i.length&&r.$breakpoints.prop(\"disabled\",!1).text(S.queryAll.replace(/\\[columns\\]/g,i.join(\",\"))+u)},updateCols:function(e,t){if(!(t.columnSelector_mediaquery&&e.selector.auto||e.selector.isInitializing)){var o,l=e.selector,a=[],n=e.namespace+\"columnselector\";l.$container.find(\"input[data-column]\").filter('[data-column!=\"auto\"]').each(function(){this.checked||(o=parseInt(h(this).attr(\"data-column\"),10)+1,a=a.concat(S.addSelectors(t,n,o))),h(this).toggleClass(t.columnSelector_cssChecked,this.checked)}),t.columnSelector_mediaquery&&l.$breakpoints.prop(\"disabled\",!0),l.$style&&l.$style.prop(\"disabled\",!1).text(a.length?a.join(\",\")+\" { display: none; }\":\"\"),S.saveValues(e,t),S.adjustColspans(e,t),e.$table.triggerHandler(t.columnSelector_updated)}},setUpColspan:function(e,t){var o,l,a,n=h(window),c=!1,r=e.$table.add(h(e.namespace+\"_extra_table\")).children().children(\"tr\").children(\"th, td\"),s=r.length;for(o=0;o<s;o++)1<(l=r[o].colSpan)&&(c=!0,r.eq(o).addClass(e.namespace.slice(1)+\"columnselector\"+t.columnSelector_classHasSpan).attr(\"data-col-span\",l),f.computeColumnIndex(r.eq(o).parent().addClass(t.columnSelector_classHasSpan)));c&&t.columnSelector_mediaquery&&(a=e.namespace+\"columnselector\",n.off(a).on(\"resize\"+a,f.window_resize).on(\"resizeEnd\"+a,function(){n.off(\"resize\"+a,f.window_resize),S.adjustColspans(e,t),n.on(\"resize\"+a,f.window_resize)}))},adjustColspans:function(e,t){var o,l,a,n,c,r,s=e.selector,i=t.filter_filteredRow||\"filtered\",u=t.columnSelector_mediaquery&&s.auto,d=e.$table.children(\"thead, tfoot\").children().children().add(h(e.namespace+\"_extra_table\").children(\"thead, tfoot\").children().children()).add(e.$table.find(\".group-header\").children()),p=d.length;for(o=0;o<p;o++)if(r=d.eq(o),c=(a=parseInt(r.attr(\"data-column\"),10)||r[0].cellIndex)+(n=parseInt(r.attr(\"data-col-span\"),10)||1),1<n){for(l=a;l<c;l++)(!u&&!1===s.states[l]||u&&e.$headerIndexed[l]&&!e.$headerIndexed[l].is(\":visible\"))&&n--;n?r.removeClass(i)[0].colSpan=n:r.addClass(i)}else void 0!==s.states[a]&&null!==s.states[a]&&r.toggleClass(i,!u&&!s.states[a])},saveValues:function(e,t){if(t.columnSelector_saveColumns&&f.storage){var o=e.selector;f.storage(e.$table[0],\"tablesorter-columnSelector-auto\",{auto:o.auto}),f.storage(e.$table[0],\"tablesorter-columnSelector\",o.states)}},attachTo:function(e,t){var o,l,a,n=(e=h(e)[0]).config,c=h(t);c.length&&n&&(c.find(\".tablesorter-column-selector\").length||c.append('<span class=\"tablesorter-column-selector\"></span>'),o=n.selector,l=n.widgetOptions,c.find(\".tablesorter-column-selector\").html(o.$container.html()).find(\"input\").each(function(){var e=h(this).attr(\"data-column\"),t=\"auto\"===e?o.auto:o.states[e];h(this).toggleClass(l.columnSelector_cssChecked,t).prop(\"checked\",t)}),o.$popup=c.on(\"change\",\"input\",function(){if(!o.isInitializing){if(!S.checkChange(n,this.checked))return this.checked=!this.checked,!1;a=h(this).toggleClass(l.columnSelector_cssChecked,this.checked).attr(\"data-column\"),o.$container.find('input[data-column=\"'+a+'\"]').prop(\"checked\",this.checked).trigger(\"change\")}}))}};f.window_resize=function(){f.timer_resize&&clearTimeout(f.timer_resize),f.timer_resize=setTimeout(function(){h(window).trigger(\"resizeEnd\")},250)},f.addWidget({id:\"columnSelector\",priority:10,options:{columnSelector_container:null,columnSelector_columns:{},columnSelector_saveColumns:!0,columnSelector_layout:'<label><input type=\"checkbox\">{name}</label>',columnSelector_layoutCustomizer:null,columnSelector_name:\"data-selector-name\",columnSelector_mediaquery:!0,columnSelector_mediaqueryName:\"Auto: \",columnSelector_mediaqueryState:!0,columnSelector_mediaqueryHidden:!1,columnSelector_maxVisible:null,columnSelector_minVisible:null,columnSelector_breakpoints:[\"20em\",\"30em\",\"40em\",\"50em\",\"60em\",\"70em\"],columnSelector_maxPriorities:6,columnSelector_priority:\"data-priority\",columnSelector_cssChecked:\"checked\",columnSelector_classHasSpan:\"hasSpan\",columnSelector_updated:\"columnUpdate\"},init:function(e,t,o,l){S.init(e,o,l)},remove:function(e,t,o,l){var a=t.selector;!l&&a&&(a&&a.$container.empty(),a.$popup&&a.$popup.empty(),a.$style.remove(),a.$breakpoints.remove(),h(t.namespace+\"columnselector\"+o.columnSelector_classHasSpan).removeClass(o.filter_filteredRow||\"filtered\"),t.$table.find(\"[data-col-span]\").each(function(e,t){var o=h(t);o.attr(\"colspan\",o.attr(\"data-col-span\"))}),t.$table.off(\"updateAll\"+c+\" update\"+c))}})}(jQuery);return jQuery;}));\n"]}