1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-08 20:22:42 +01:00
invoiceninja/public/js/tablesorter.min.js.map
2017-02-18 23:20:03 +02:00

1 line
450 KiB
Plaintext
Raw Blame History

{"version":3,"sources":["jquery.tablesorter.combined.js","widget-grouping.min.js","widget-uitheme.min.js","widget-filter.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","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","tmp","$table","meta","metadata","isProcessing","config","data","Date","supportsDataObject","parseInt","fn","jquery","split","toLowerCase","last","clickedIndex","test","attr","addClass","$headers","find","namespace","replace","Math","random","toString","slice","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","console","groupEnd","triggerHandler","events","join","callback","stopPropagation","this","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","closest","parents","nodeName","add","filter","external","$cell","temp","$target","target","which","button","match","preventDefault","hasClass","isEmptyObject","cache","index","initSort","user-select","MozUserSelect","$temp","timer","indx","headerContent","sortVars","columns","computeColumnIndex","map","elem","configHeaders","column","template","$elem","parent","getColumnData","html","apply","getOrder","getData","count","order","lockedOrder","$headerIndexed","not","scope","role","updateHeader","addInstanceMethods","methods","rows","span","colIndex","noParser","parser","extractor","time","tbody","len","tbodyIndex","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","$sorted","aria","removeClass","i","include","$el","col","end","isValueInArray","setColumnAriaLabel","$header","nextSort","vars","isDisabled","setColumnSort","removeAttr","updateHeaderSortCount","dir","group","primary","inArray","commonUpdate","resortComplete","remove","icell","tbcache","checkResort","valid","append","$curTbody","appendTime","wo","appender","processTbody","pager","removeRows","pager_removeRows","ajax","event","arry","headerIndx","notMultiSort","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","options","RegExp","applied","names","isApplyingWidgets","timerReady","grep","priority","doAll","curWidgets","benchmark","diff","getTime","log","obj","formatFloat","str","usFormat","isDigit","$rows","j","k","l","rowSpan","firstAvailCol","matrix","matrixrow","Array","parentNode","setAttribute","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","each","buildTable","window","logs","warn","error","arg","arguments","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","storage","value","cookieIndex","cookies","hasStorage","values","storageType","useSessionStorage","storage_useSessionStorage","storage_group","storage_tableId","url","page","storage_page","storage_fixedUrl","fixedUrl","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","push","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_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","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","internal","$ext","filter_$anyMatch","liveSearch","fallback","skipFirst","checkFilters","filterArray","combinedFilters","hideFiltersCheck","prototype","String","activeElement","defaultFilter","mask","maskLen","getLatestSearch","$input","findRange","ignoreRanges","ranges","start","singles","$elements","multipleColumns","targets","excludeMatch","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","el","getOptionSource","onlyAvail","source","getOptions","processOptions","cts","parsedTxt","validColumn","direction","childLen","updating","t","option","currentValue","getRaw","$column","trigger","sticky","stickyVis","stickyHide","stickyWrap","addHeaderResizeEvent","disable","checkSizes","triggerEvent","sizes","height","resize_flag","offsetWidth","offsetHeight","clearInterval","resize_timer","setInterval","stickyHeaders","stickyHeaders_appendTo","stickyHeaders_attachTo","stickyHeaders_xScroll","stickyHeaders_yScroll","stickyHeaders_offset","stickyHeaders_filteredToTop","stickyHeaders_cloneId","stickyHeaders_addResizeEvent","stickyHeaders_includeCaption","stickyHeaders_zIndex","$stickyCells","$attach","$yScroll","$xScroll","$thead","$stickyOffset","stickyOffset","$nestedSticky","$sticky","nestedStickyTop","$stickyTable","clone","wrap","$stickyWrap","position","padding","visibility","zIndex","$stickyThead","laststate","spacing","setWidth","$orig","$clone","border","outerWidth","getComputedStyle","min-width","max-width","resizeHeader","offset","scrollLeft","scrollSticky","resizing","scrollTop","yWindow","isWindow","xWindow","attachTop","captionHeight","tableHeight","isVisible","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","data-column","unselectable","bindings","$extra","$col","setHandlePosition","startPosition","$handles","handleCenter","floor","scrollerWrap","resizable_addLastColumn","toggleTextSelection","$extras","shiftKey","resizable_targetLast","nextAll","pageX","resizable_throttle","mouseMove","stopResize","allowClick","total","tar","leftEdge","resizable_widths","resizable_fullWidth","thisWidget","saveSort","stored","grouping","number","d","f","g","ceil","separator","group_separator","word","letter","substring","h","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","groupIndex","startRow","endRow","insertGroupHeader","group_formatter","first","on","siblings","group_saveReset","clearSavedGroups","group_checkbox","toLocaleString","off","m","q","r","v","w","z","B","D","F","G","H","J"],"mappings":"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","file":"tablesorter.min.js","sourcesContent":["/*! tablesorter (FORK) - updated 01-06-2017 (v2.28.4)*/\n/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */\n(function(factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof module === 'object' && typeof module.exports === 'object') {\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\tfactory(jQuery);\n\t}\n}(function(jQuery) {\n\n/*! TableSorter (FORK) v2.28.4 *//*\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.28.4',\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\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 ( c.debug ) {\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 ( c.debug ) {\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\t\t\tc.table = table;\n\t\t\tc.$table = $table\n\t\t\t\t.addClass( ts.css.table + ' ' + c.tableClass + tmp )\n\t\t\t\t.attr( 'role', 'grid' );\n\t\t\tc.$headers = $table.find( c.selectorHeaders );\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.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\tts.validateOptions( c );\n\t\t\t// build the cache for the tbody cells\n\t\t\t// delayInit will delay building the cache until the user starts a sort\n\t\t\tif ( !c.delayInit ) { ts.buildCache( c ); }\n\t\t\t// bind all header events and methods\n\t\t\tts.bindEvents( table, c.$headers, true );\n\t\t\tts.bindMethods( c );\n\t\t\t// get sort list from jQuery data or metadata\n\t\t\t// in jQuery < 1.4, an error occurs when calling $table.data()\n\t\t\tif ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) {\n\t\t\t\tc.sortList = $table.data().sortlist;\n\t\t\t} else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) {\n\t\t\t\tc.sortList = $table.metadata().sortlist;\n\t\t\t}\n\t\t\t// apply widget init code\n\t\t\tts.applyWidget( table, true );\n\t\t\t// if user has supplied a sort list to constructor\n\t\t\tif ( c.sortList.length > 0 ) {\n\t\t\t\tts.sortOn( c, c.sortList, {}, !c.initWidgets );\n\t\t\t} else {\n\t\t\t\tts.setHeadersCss( c );\n\t\t\t\tif ( c.initWidgets ) {\n\t\t\t\t\t// apply widget format\n\t\t\t\t\tts.applyWidget( table, false );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// show processesing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\t$table\n\t\t\t\t.unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace )\n\t\t\t\t.bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) {\n\t\t\t\t\tclearTimeout( c.timerProcessing );\n\t\t\t\t\tts.isProcessing( table );\n\t\t\t\t\tif ( e.type === 'sortBegin' ) {\n\t\t\t\t\t\tc.timerProcessing = setTimeout( function() {\n\t\t\t\t\t\t\tts.isProcessing( table, true );\n\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// initialized\n\t\t\ttable.hasInitialized = true;\n\t\t\ttable.isProcessing = false;\n\t\t\tif ( c.debug ) {\n\t\t\t\tconsole.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );\n\t\t\t\tif ( c.debug && 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, callback );\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, init ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// apply widgets\n\t\t\t\tts.applyWidget( this, init );\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 = $.fn.closest ? $headers.closest( 'table' )[ 0 ] : $headers.parents( 'table' )[ 0 ];\n\t\t\t\tif ( tmp && tmp.nodeName === 'TABLE' && tmp !== table ) {\n\t\t\t\t\t$( tmp ).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// 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// 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// jQuery v1.2.6 doesn't have closest()\n\t\t\t\t$cell = $.fn.closest ? $( this ).closest( 'th, td' ) :\n\t\t\t\t\t/TH|TD/.test( this.nodeName ) ? $( this ) : $( this ).parents( 'th, td' );\n\t\t\t\t// reference original table headers and find the same cell\n\t\t\t\t// don't use $headers or IE8 throws an error - see #987\n\t\t\t\ttemp = $headers.index( $cell );\n\t\t\t\tc.last.clickedIndex = ( temp < 0 ) ? $cell.attr( 'data-column' ) : temp;\n\t\t\t\t// use column index if $headers is undefined\n\t\t\t\tcell = c.$headers[ c.last.clickedIndex ];\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 ( c.debug ) {\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 ( $elem.parent().hasClass( c.cssIgnoreRow ) ) { return; }\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};\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// add to parent in case there are multiple rows\n\t\t\t\t$elem\n\t\t\t\t\t.addClass( ts.css.header + ' ' + c.cssHeader )\n\t\t\t\t\t.parent()\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$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 ( c.debug ) {\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 = {};\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 c.debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '';\n\t\t\t} else if ( c.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\n\t\t\t\t\t\t\tconfigHeaders = ts.getColumnData( table, c.headers, colIndex );\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 ( c.debug ) {\n\t\t\t\t\t\t\t\tdebug[ '(' + 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 ( c.debug ) {\n\t\t\t\tif ( !ts.isEmptyObject( debug ) ) {\n\t\t\t\t\tconsole[ console.table ? 'table' : 'log' ]( debug );\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 */\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\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 ( c.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// 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 c.debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : '';\n\t\t\t}\n\t\t\tif ( c.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 && c.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 ( c.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 ( c.debug ) {\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 $sorted, 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\t// find the footer\n\t\t\t\t$headers = 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// remove all header information\n\t\t\tc.$headers\n\t\t\t\t.add( $( 'thead ' + c.namespace + '_extra_headers' ) )\n\t\t\t\t.removeClass( css.join( ' ' ) )\n\t\t\t\t.addClass( none )\n\t\t\t\t.attr( 'aria-sort', 'none' )\n\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t.removeClass( cssIcon.join( ' ' ) )\n\t\t\t\t.addClass( cssIcon[ 2 ] );\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 + c.$headers[ i ].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\t$sorted\n\t\t\t\t\t\t\t\t\t.eq( column )\n\t\t\t\t\t\t\t\t\t.removeClass( none )\n\t\t\t\t\t\t\t\t\t.addClass( css[ list[ indx ][ 1 ] ] )\n\t\t\t\t\t\t\t\t\t.attr( 'aria-sort', aria[ list[ indx ][ 1 ] ] )\n\t\t\t\t\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t\t\t\t\t.removeClass( cssIcon[ 2 ] )\n\t\t\t\t\t\t\t\t\t.addClass( cssIcon[ list[ indx ][ 1 ] ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// add sorted class to footer & extra headers, if they exist\n\t\t\t\t\t\tif ( $headers.length ) {\n\t\t\t\t\t\t\t$headers\n\t\t\t\t\t\t\t\t.filter( '[data-column=\"' + list[ indx ][ 0 ] + '\"]' )\n\t\t\t\t\t\t\t\t.removeClass( none )\n\t\t\t\t\t\t\t\t.addClass( css[ list[ indx ][ 1 ] ] );\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// 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\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}\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\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\n\t\t\t\t\t.index( $.fn.closest ? $cell.closest( 'tbody' ) : $cell.parents( 'tbody' ).filter( ':first' ) ),\n\t\t\t\ttbcache = c.cache[ tbodyIndex ],\n\t\t\t\t$row = $.fn.closest ? $cell.closest( 'tr' ) : $cell.parents( 'tr' ).filter( ':first' );\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' ).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\tcache[ c.columns ].$row = $row;\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 ( c.debug ) {\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 ( !$row ||\n\t\t\t\t// row is a jQuery object?\n\t\t\t\t!( $row instanceof jQuery ) ||\n\t\t\t\t// row contained in the table?\n\t\t\t\t( $.fn.closest ? $row.closest( 'table' )[ 0 ] : $row.parents( 'table' )[ 0 ] ) !== c.table ) {\n\t\t\t\tif ( c.debug ) {\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\two = c.widgetOptions,\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 ( c.debug ) {\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 || !wo.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 ( c.debug ) {\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\t// get current column index\n\t\t\t\tcol = parseInt( $( cell ).attr( 'data-column' ), 10 ),\n\t\t\t\torder = c.sortVars[ col ].order;\n\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// 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}\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\t// add other columns if header spans across multiple\n\t\t\t\t\tif ( cell.colSpan > 1 ) {\n\t\t\t\t\t\tfor ( indx = 1; indx < cell.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}\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\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\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 ( cell.colSpan > 1 ) {\n\t\t\t\t\t\t\tfor ( indx = 1; indx < cell.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}\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}\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 ( c.debug ) { 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 ( c.debug ) {\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 table = c.table;\n\t\t\tc.$table.triggerHandler( 'sortStart', table );\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\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\t// this function will only accept strings, or you'll see 'TypeError: undefined is not a function'\n\t\t// I could add a = a.toString(); b = b.toString(); but it'll slow down the sort overall\n\t\tsortNatural : function( a, b ) {\n\t\t\tif ( a === b ) { return 0; }\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,\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\tc.widgetOptions = $.extend( true, {}, widget.options, 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\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 ( c.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 ( c.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 ( c.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 ( c.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\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 ( c.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 ( c.debug ) {\n\t\t\t\t\t\tconsole.warn( '\"' + names[ indx ] + '\" widget code does not exist!' );\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 ( c.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 ( c.debug && console.groupEnd ) { console.groupEnd(); }\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}\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}, 10 );\n\t\t\tif ( c.debug ) {\n\t\t\t\twidget = c.widgets.length;\n\t\t\t\tconsole.log( 'Completed ' +\n\t\t\t\t\t( init === true ? 'initializing ' : 'applying ' ) + widget +\n\t\t\t\t\t' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );\n\t\t\t}\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 ( c.debug ) {\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},\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\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 = cell.parentNode.rowIndex;\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\treturn matrixrow.length;\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.filter( '[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 ( c.debug ) {\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 ( c.debug ) {\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\tdebug = c.debug,\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// 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 ( debug ) {\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, table ) {\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, table ) {\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, table ) {\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 11/26/2016 (v2.28.0) */\n/*global JSON:false */\n;(function ($, window, document) {\n\t'use strict';\n\n\tvar ts = $.tablesorter || {};\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\tstorageType = ( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ) ?\n\t\t\t\t'sessionStorage' : 'localStorage',\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\t\t// update defaults for validator; these values must be falsy!\n\t\t$.extend(true, ts.defaults, {\n\t\t\tfixedUrl: '',\n\t\t\twidgetOptions: {\n\t\t\t\tstorage_fixedUrl: '',\n\t\t\t\tstorage_group: '',\n\t\t\t\tstorage_page: '',\n\t\t\t\tstorage_tableId: '',\n\t\t\t\tstorage_useSessionStorage: ''\n\t\t\t}\n\t\t});\n\t\t// https://gist.github.com/paulirish/5558557\n\t\tif (storageType in window) {\n\t\t\ttry {\n\t\t\t\twindow[storageType].setItem('_tmptest', 'temp');\n\t\t\t\thasStorage = true;\n\t\t\t\twindow[storageType].removeItem('_tmptest');\n\t\t\t} catch (error) {\n\t\t\t\tif (c && c.debug) {\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\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 12/8/2016 (v2.28.1) */\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 '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 : 'icon-chevron-up glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort\n\t\t\ticonSortDesc : 'icon-chevron-down 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\tif (c.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 (c.debug) {\n\t\t\t\tconsole.log('Applying ' + 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 */\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tts.addWidget({\n\t\tid: 'columns',\n\t\tpriority: 30,\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 12/8/2016 (v2.28.1) *//*\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_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 = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '\n\t\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\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\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+(' + ts.language.or + '|-|' + ts.language.to + ')\\\\s+)', 'i' ),\n\t\t\t\ttoTest : new RegExp( '\\\\s+(-|' + ts.language.to + ')\\\\s+', 'i' ),\n\t\t\t\ttoSplit : new RegExp( '(?:\\\\s+(?:-|' + ts.language.to + ')\\\\s+)', 'gi' ),\n\t\t\t\tandTest : new RegExp( '\\\\s+(' + ts.language.and + '|&&)\\\\s+', 'i' ),\n\t\t\t\tandSplit : new RegExp( '(?:\\\\s+(?:' + ts.language.and + '|&&)\\\\s+)', 'gi' ),\n\t\t\t\torTest : new RegExp( '(\\\\||\\\\s+' + ts.language.or + '\\\\s+)', 'i' ),\n\t\t\t\torSplit : new RegExp( '(?:\\\\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'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\tif ( event.type === 'filterReset' ) {\n\t\t\t\t\tc.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );\n\t\t\t\t\ttsf.searching( table, [] );\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 ' );\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 wo = $cell && $cell.closest( 'table' )[0].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};\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=\"row\" 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 ).attr( 'data-column', $filter.attr( 'data-column' ) );\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// live search\n\t\t\t\t} else if ( liveSearch === false ) {\n\t\t\t\t\treturn;\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}\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 '.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\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\" is triggered on the input\n\t\t\t\t\t\tevent.type === 'search' ||\n\t\t\t\t\t\t// change & input events must be ignored if liveSearch !== true\n\t\t\t\t\t\t( event.type === 'change' || event.type === 'input' ) &&\n\t\t\t\t\t\t// prevent search if liveSearch is a number\n\t\t\t\t\t\tliveSearch === true &&\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, event.type !== '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\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\tcombinedFilters = ( filters || [] ).join( '' ); // combined 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 ) { c.lastCombinedFilter = ''; }\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 ( c.lastCombinedFilter === combinedFilters && 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 = null;\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, combinedFilters );\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, combinedFilters );\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\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\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 ( fxn === true ) {\n\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\tfilterMatched = data.isMatch ?\n\t\t\t\t\t\t\t\t// data.iExact may be a number\n\t\t\t\t\t\t\t\t( '' + data.iExact ).search( data.iFilter ) >= 0 :\n\t\t\t\t\t\t\t\tdata.filter === data.exact;\n\t\t\t\t\t\t} else if ( 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\tif ( filterMatched !== null ) {\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\ttxt = ( data.iExact + data.childRowText ).indexOf( tsf.parseFilter( c, data.iFilter, data ) );\n\t\t\t\t\t\t\tresult = ( ( !wo.filter_startsWith && txt >= 0 ) || ( wo.filter_startsWith && txt === 0 ) );\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, combinedFilters ) {\n\t\t\tif ( table.config.lastCombinedFilter === combinedFilters ||\n\t\t\t\t!table.config.widgetOptions.filter_initialized ) {\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\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\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 ( c.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\t// combindedFilters are undefined on init\n\t\t\tcombinedFilters = ( storedFilters || [] ).join( '' );\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 ( combinedFilters === '' || 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 ( c.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\tc.lastCombinedFilter = combinedFilters; // 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 ( c.debug ) {\n\t\t\t\tconsole.log( 'Completed filter widget 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}\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}\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 ] + '\"';\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 + '\"';\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions += '>' + option.text + '</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) && setFilters.join('') === c.lastCombinedFilter ) ) {\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 1/6/2017 (v2.28.4) *//*\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\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),\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\t$stickyOffset = isNaN(wo.stickyHeaders_offset) ? $(wo.stickyHeaders_offset) : '',\n\t\t\t\tstickyOffset = $stickyOffset.length ? $stickyOffset.height() || 0 : parseInt(wo.stickyHeaders_offset, 10) || 0,\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\tspacing = 0,\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\tresizeHeader = function() {\n\t\t\t\t\tstickyOffset = $stickyOffset.length ? $stickyOffset.height() || 0 : parseInt(wo.stickyHeaders_offset, 10) || 0;\n\t\t\t\t\tspacing = 0;\n\t\t\t\t\t$stickyWrap.css({\n\t\t\t\t\t\tleft : $attach.length ? parseInt($attach.css('padding-left'), 10) || 0 :\n\t\t\t\t\t\t\t\t$table.offset().left - parseInt($table.css('margin-left'), 10) - $xScroll.scrollLeft() - spacing,\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 offset = $table.offset(),\n\t\t\t\t\t\tyWindow = $.isWindow( $yScroll[0] ), // $.isWindow needs jQuery 1.4.3\n\t\t\t\t\t\txWindow = $.isWindow( $xScroll[0] ),\n\t\t\t\t\t\tattachTop = $attach.length ?\n\t\t\t\t\t\t\t( yWindow ? $yScroll.scrollTop() : $yScroll.offset().top ) :\n\t\t\t\t\t\t\t$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\tcssSettings = { visibility : isVisible };\n\t\t\t\t\tif ($attach.length) {\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\tif (xWindow) {\n\t\t\t\t\t\t// adjust when scrolling horizontally - fixes issue #143\n\t\t\t\t\t\tcssSettings.left = $table.offset().left - parseInt($table.css('margin-left'), 10) - $xScroll.scrollLeft() - spacing;\n\t\t\t\t\t}\n\t\t\t\t\tif ($nestedSticky.length) {\n\t\t\t\t\t\tcssSettings.top = ( cssSettings.top || 0 ) + stickyOffset + nestedStickyTop;\n\t\t\t\t\t}\n\t\t\t\t\t$stickyWrap\n\t\t\t\t\t\t.removeClass( ts.css.stickyVis + ' ' + ts.css.stickyHide )\n\t\t\t\t\t\t.addClass( isVisible === 'visible' ? ts.css.stickyVis : ts.css.stickyHide )\n\t\t\t\t\t\t.css(cssSettings);\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\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$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 12/15/2016 (v2.28.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\t\t\t// subtract out table left position from resizable handles. Fixes #864\n\t\t\tstartPosition = 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 ( !$header.is(':visible') ) {\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// 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' + namespace + ' pagerComplete' + namespace, function() {\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\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}\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_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\tresizable_fullWidth : null\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', 'auto' );\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 10/31/2015 (v2.24.0) *//*\n* Requires tablesorter v2.16+\n* by Rob Garrison\n*/\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\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 stored, 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\tif (c.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) {\n\t\t\t\t\tts.storage( table, 'tablesorter-savesort', sortList );\n\t\t\t\t\tif (c.debug) {\n\t\t\t\t\t\tconsole.log('saveSort widget: 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\tstored = ts.storage( table, 'tablesorter-savesort' );\n\t\t\t\t\tsortList = (stored && stored.hasOwnProperty('sortList') && $.isArray(stored.sortList)) ? stored.sortList : '';\n\t\t\t\t\tif (c.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\tts.sortOn( c, sortList );\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);\n\nreturn jQuery.tablesorter;\n}));\n","/*! Widget: grouping - updated 11/26/2016 (v2.28.0) */\n!function(a){\"use strict\";var b=a.tablesorter,c=b.grouping={types:{number:function(a,c,d,e){var f,g=c.hasClass(b.css.sortAsc);return e>1&&\"\"!==d?(f=g?Math.floor(parseFloat(d)/e)*e:Math.ceil(parseFloat(d)/e)*e,f+=\" - \"+(f+(e-1)*(g?1:-1))):f=parseFloat(d)||d,f},separator:function(b,c,d,e){var f=(d+\"\").split(b.widgetOptions.group_separator);return a.trim(f[e-1]||\"\")},text:function(a,b,c){return c},word:function(a,b,c,d){var e=(c+\" \").match(/\\w+/g)||[];return e[d-1]||\"\"},letter:function(a,b,c,d){return c?(c+\" \").substring(0,d):\"\"},date:function(a,b,d,e,f){var g,h,i=a.widgetOptions,j=new Date(d||\"\");return j instanceof Date&&isFinite(j)?(g=j.getFullYear(),h=c.findMonth(i,j.getMonth()),\"year\"===e?g:\"month\"===e?h:\"monthyear\"===e?h+\" \"+g:\"day\"===e?h+\" \"+j.getDate():\"week\"===e?c.findWeek(i,j.getDay()):\"time\"===e?c.findTime(i,j):\"hour\"===e?c.findTime(i,j,\"hour\"):i.group_dateString(j,a,b)):i.group_dateInvalid}},findMonth:function(a,b){return a.group_months[b+(\"\"===(a.group_months[0]||\"\")?1:0)]},findWeek:function(b,c){if(a.isArray(b.group_week))return b.group_week[c];if(!a.isEmptyObject(b.group_week)){var d=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"];return b.group_week[d[c]]}},findTime:function(a,b,c){var d,e=a.group_time.am&&a.group_time.pm,f=b.getHours(),g=f>=12?1:0,h=a.group_time24Hour&&f>12?f-12:a.group_time24Hour&&0===f?f+12:f,i=(\"00\"+h).slice(-2),j=(\"00\"+b.getMinutes()).slice(-2);return d=a.group_time[e?[\"am\",\"pm\"][g]:g],\"hour\"===c?i:i+\":\"+j+(a.group_time24Hour?\"\":\" \"+(d||\"\"))},update:function(b){if(!a.isEmptyObject(b.config.cache)){var d=b.config,e=d.widgetOptions,f=\"undefined\"!=typeof d.sortList[0],g={},h=a.isArray(e.group_forceColumn)&&\"undefined\"!=typeof e.group_forceColumn[0]?e.group_enforceSort&&!f?-1:e.group_forceColumn[0]:f?d.sortList[0][0]:-1;d.$table.find(\"tr.group-hidden\").removeClass(\"group-hidden\").end().find(\"tr.group-header\").remove(),e.group_collapsible&&d.$table.data(\"pagerSavedHeight\",0),h>=0&&h<d.columns&&!d.$headerIndexed[h].hasClass(\"group-false\")&&(e.group_collapsedGroup=\"\",e.group_collapsedGroups={},g.column=h,g.groupClass=(d.$headerIndexed[h].attr(\"class\")||\"\").match(/(group-\\w+(-\\w+)?)/g),g.grouping=g.groupClass?g.groupClass[0].split(\"-\"):[\"group\",\"letter\",1],g.savedGroup=c.saveCurrentGrouping(d,e,g),c.findColumnGroups(d,e,g),c.processHeaders(d,e,g),d.$table.triggerHandler(e.group_complete))}},processHeaders:function(b,c,d){var e,f,g,h,i,j,k=b.$table.find(\"tr.group-header\"),l=k.length;for(k.bind(\"selectstart\",!1),e=0;e<l;e++)j=k.eq(e),i=j.nextUntil(\"tr.group-header\").filter(\":visible\"),(c.group_count||a.isFunction(c.group_callback))&&(g=j.find(\".group-count\"),g.length&&(c.group_count&&g.html(c.group_count.toString().replace(/\\{num\\}/g,i.length)),a.isFunction(c.group_callback)&&c.group_callback(j.find(\"td\"),i,d.column,b.table))),c.group_saveGroups&&!a.isEmptyObject(c.group_collapsedGroups)&&c.group_collapsedGroups[c.group_collapsedGroup].length?(h=j.find(\".group-name\").text().toLowerCase()+j.attr(\"data-group-index\"),f=a.inArray(h,c.group_collapsedGroups[c.group_collapsedGroup])>-1,j.toggleClass(\"collapsed\",f),i.toggleClass(\"group-hidden\",f)):c.group_collapsed&&c.group_collapsible&&(j.addClass(\"collapsed\"),i.addClass(\"group-hidden\"))},groupHeaderHTML:function(a,b,c){var d=(c.currentGroup||\"\").toString().replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\");return'<tr class=\"group-header '+a.selectorRemove.slice(1)+'\" unselectable=\"on\" '+(a.tabIndex?'tabindex=\"0\" ':\"\")+'data-group-index=\"'+c.groupIndex+'\"><td colspan=\"'+a.columns+'\">'+(b.group_collapsible?\"<i/>\":\"\")+'<span class=\"group-name\">'+d+'</span><span class=\"group-count\"></span></td></tr>'},saveCurrentGrouping:function(a,c,d){var e,f,g=!1;return c.group_collapsible&&c.group_saveGroups&&(c.group_collapsedGroups=b.storage&&b.storage(a.table,\"tablesorter-groups\")||{},f=\"dir\"+a.sortList[0][1],e=c.group_collapsedGroup=\"\"+a.sortList[0][0]+f+d.grouping.join(\"\"),c.group_collapsedGroups[e]?g=!0:c.group_collapsedGroups[e]=[]),g},findColumnGroups:function(a,d,e){var f,g,h,i,j,k=b.hasWidget(a.table,\"pager\"),l=a.pager||{};for(e.groupIndex=0,f=0;f<a.$tbodies.length;f++)for(g=a.cache[f].normalized,e.group=j,h=k&&!l.ajax?l.startRow-1:0,i=k?l.endRow-(l.ajax?l.startRow:0):g.length;h<i;h++)e.rowData=g[h],e.rowData&&(e.$row=e.rowData[a.columns].$row,e.$row.is(\":visible\")&&c.types[e.grouping[1]]&&c.insertGroupHeader(a,d,e))},insertGroupHeader:function(b,d,e){var f=b.$headerIndexed[e.column],g=e.rowData[e.column],h=/date/.test(e.groupClass)?e.grouping[2]:parseInt(e.grouping[2]||1,10)||1;e.currentGroup=e.rowData?c.types[e.grouping[1]](b,f,g,h,e.group):e.currentGroup,e.group!==e.currentGroup&&(e.group=e.currentGroup,a.isFunction(d.group_formatter)&&(e.currentGroup=d.group_formatter((e.group||\"\").toString(),e.column,b.table,b,d,e)||e.group),e.$row.first().before(c.groupHeaderHTML(b,d,e)),d.group_saveGroups&&!e.savedGroup&&d.group_collapsed&&d.group_collapsible&&d.group_collapsedGroups[d.group_collapsedGroup].push(e.currentGroup+e.groupIndex),e.groupIndex++)},bindEvents:function(d,e,f){f.group_collapsible&&(f.group_collapsedGroups=[],e.$table.on(\"click toggleGroup keyup\",\"tr.group-header\",function(c){if(c.stopPropagation(),\"keyup\"!==c.type||13===c.which){var g,h,i,j=a(this),k=j.find(\".group-name\").text().toLowerCase()+j.attr(\"data-group-index\");!c.shiftKey||\"click\"!==c.type&&\"keyup\"!==c.type||j.siblings(\".group-header\").trigger(\"toggleGroup\"),j.toggleClass(\"collapsed\"),j.nextUntil(\"tr.group-header\").toggleClass(\"group-hidden\",j.hasClass(\"collapsed\")),g=j.hasClass(\"collapsed\"),!g&&b.hasWidget(e.$table,\"zebra\")&&b.applyWidgetId(e.$table,\"zebra\"),f.group_saveGroups&&b.storage&&(h=e.$table.find(\".group-header\"),f.group_collapsedGroups[f.group_collapsedGroup]||(f.group_collapsedGroups[f.group_collapsedGroup]=[]),g&&f.group_collapsedGroup?f.group_collapsedGroups[f.group_collapsedGroup].push(k):f.group_collapsedGroup&&(i=a.inArray(k,f.group_collapsedGroups[f.group_collapsedGroup]),i>-1&&f.group_collapsedGroups[f.group_collapsedGroup].splice(i,1)),b.storage(d,\"tablesorter-groups\",f.group_collapsedGroups))}})),a(f.group_saveReset).on(\"click\",function(){c.clearSavedGroups(d)}),e.$table.on(\"pagerChange.tsgrouping\",function(){c.update(d)})},clearSavedGroups:function(a){a&&b.storage&&(b.storage(a,\"tablesorter-groups\",\"\"),c.update(a))}};b.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(a){return a.toLocaleString()}},init:function(a,b,d,e){c.bindEvents(a,d,e)},format:function(a,b,d){c.update(a)},remove:function(a,b,c){b.$table.off(\"click\",\"tr.group-header\").off(\"pagerChange.tsgrouping\").find(\".group-hidden\").removeClass(\"group-hidden\").end().find(\"tr.group-header\").remove()}})}(jQuery);","/*! Widget: uitheme - updated 12/8/2016 (v2.28.1) */\n!function(a){\"use strict\";var b=a.tablesorter||{};b.themes={bootstrap:{table:\"table table-bordered table-striped\",caption:\"caption\",header:\"bootstrap-header\",sortNone:\"\",sortAsc:\"\",sortDesc:\"\",active:\"\",hover:\"\",icons:\"\",iconSortNone:\"bootstrap-icon-unsorted\",iconSortAsc:\"icon-chevron-up glyphicon glyphicon-chevron-up\",iconSortDesc:\"icon-chevron-down 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(b.css,{wrapper:\"tablesorter-wrapper\"}),b.addWidget({id:\"uitheme\",priority:10,format:function(c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=b.themes,t=d.$table.add(a(d.namespace+\"_extra_table\")),u=d.$headers.add(a(d.namespace+\"_extra_headers\")),v=d.theme||\"jui\",w=s[v]||{},x=a.trim([w.sortNone,w.sortDesc,w.sortAsc,w.active].join(\" \")),y=a.trim([w.iconSortNone,w.iconSortDesc,w.iconSortAsc].join(\" \"));for(d.debug&&(j=new Date),t.hasClass(\"tablesorter-\"+v)&&d.theme===d.appliedTheme&&e.uitheme_applied||(e.uitheme_applied=!0,o=s[d.appliedTheme]||{},r=!a.isEmptyObject(o),p=r?[o.sortNone,o.sortDesc,o.sortAsc,o.active].join(\" \"):\"\",q=r?[o.iconSortNone,o.iconSortDesc,o.iconSortAsc].join(\" \"):\"\",r&&(e.zebra[0]=a.trim(\" \"+e.zebra[0].replace(\" \"+o.even,\"\")),e.zebra[1]=a.trim(\" \"+e.zebra[1].replace(\" \"+o.odd,\"\")),d.$tbodies.children().removeClass([o.even,o.odd].join(\" \"))),w.even&&(e.zebra[0]+=\" \"+w.even),w.odd&&(e.zebra[1]+=\" \"+w.odd),t.children(\"caption\").removeClass(o.caption||\"\").addClass(w.caption),m=t.removeClass((d.appliedTheme?\"tablesorter-\"+(d.appliedTheme||\"\"):\"\")+\" \"+(o.table||\"\")).addClass(\"tablesorter-\"+v+\" \"+(w.table||\"\")).children(\"tfoot\"),d.appliedTheme=d.theme,m.length&&m.children(\"tr\").removeClass(o.footerRow||\"\").addClass(w.footerRow).children(\"th, td\").removeClass(o.footerCells||\"\").addClass(w.footerCells),u.removeClass((r?[o.header,o.hover,p].join(\" \"):\"\")||\"\").addClass(w.header).not(\".sorter-false\").unbind(\"mouseenter.tsuitheme mouseleave.tsuitheme\").bind(\"mouseenter.tsuitheme mouseleave.tsuitheme\",function(b){a(this)[\"mouseenter\"===b.type?\"addClass\":\"removeClass\"](w.hover||\"\")}),u.each(function(){var c=a(this);c.find(\".\"+b.css.wrapper).length||c.wrapInner('<div class=\"'+b.css.wrapper+'\" style=\"position:relative;height:100%;width:100%\"></div>')}),d.cssIcon&&u.find(\".\"+b.css.icon).removeClass(r?[o.icons,q].join(\" \"):\"\").addClass(w.icons||\"\"),b.hasWidget(d.table,\"filter\")&&(g=function(){t.children(\"thead\").children(\".\"+b.css.filterRow).removeClass(r?o.filterRow||\"\":\"\").addClass(w.filterRow||\"\")},e.filter_initialized?g():t.one(\"filterInit\",function(){g()}))),f=0;f<d.columns;f++)k=d.$headers.add(a(d.namespace+\"_extra_headers\")).not(\".sorter-false\").filter('[data-column=\"'+f+'\"]'),l=b.css.icon?k.find(\".\"+b.css.icon):a(),n=u.not(\".sorter-false\").filter('[data-column=\"'+f+'\"]:last'),n.length&&(k.removeClass(x),l.removeClass(y),n[0].sortDisabled?l.removeClass(w.icons||\"\"):(h=w.sortNone,i=w.iconSortNone,n.hasClass(b.css.sortAsc)?(h=[w.sortAsc,w.active].join(\" \"),i=w.iconSortAsc):n.hasClass(b.css.sortDesc)&&(h=[w.sortDesc,w.active].join(\" \"),i=w.iconSortDesc),k.addClass(h),l.addClass(i||\"\")));d.debug&&console.log(\"Applying \"+v+\" theme\"+b.benchmark(j))},remove:function(a,c,d,e){if(d.uitheme_applied){var f=c.$table,g=c.appliedTheme||\"jui\",h=b.themes[g]||b.themes.jui,i=f.children(\"thead\").children(),j=h.sortNone+\" \"+h.sortDesc+\" \"+h.sortAsc,k=h.iconSortNone+\" \"+h.iconSortDesc+\" \"+h.iconSortAsc;f.removeClass(\"tablesorter-\"+g+\" \"+h.table),d.uitheme_applied=!1,e||(f.find(b.css.header).removeClass(h.header),i.unbind(\"mouseenter.tsuitheme mouseleave.tsuitheme\").removeClass(h.hover+\" \"+j+\" \"+h.active).filter(\".\"+b.css.filterRow).removeClass(h.filterRow),i.find(\".\"+b.css.icon).removeClass(h.icons+\" \"+k))}}})}(jQuery);","/*! Widget: filter - updated 12/8/2016 (v2.28.1) */\n!function(a){\"use strict\";var b,c,d=a.tablesorter||{},e=d.css,f=d.keyCodes;a.extend(e,{filterRow:\"tablesorter-filter-row\",filter:\"tablesorter-filter\",filterDisabled:\"disabled\",filterRowHide:\"hideme\"}),a.extend(f,{backSpace:8,escape:27,space:32,left:37,down:40}),d.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_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(a,c,d){c.$table.hasClass(\"hasFilters\")||b.init(a,c,d)},remove:function(b,c,f,g){var h,i,j=c.$table,k=c.$tbodies,l=\"addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search \".split(\" \").join(c.namespace+\"filter \");if(j.removeClass(\"hasFilters\").unbind(l.replace(d.regex.spaces,\" \")).find(\".\"+e.filterRow).remove(),f.filter_initialized=!1,!g){for(h=0;h<k.length;h++)i=d.processTbody(b,k.eq(h),!0),i.children().removeClass(f.filter_filteredRow).show(),d.processTbody(b,i,!1);f.filter_reset&&a(document).undelegate(f.filter_reset,\"click\"+c.namespace+\"filter\")}}}),b=d.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(d,e,f){if((c.orTest.test(e.iFilter)||c.orSplit.test(e.filter))&&!c.regex.test(e.filter)){var g,h,i,j,k=a.extend({},e),l=e.filter.split(c.orSplit),m=e.iFilter.split(c.orSplit),n=l.length;for(g=0;g<n;g++){k.nestedFilters=!0,k.filter=\"\"+(b.parseFilter(d,l[g],e)||\"\"),k.iFilter=\"\"+(b.parseFilter(d,m[g],e)||\"\"),i=\"(\"+(b.parseFilter(d,k.filter,e)||\"\")+\")\";try{if(j=new RegExp(e.isMatch?i:\"^\"+i+\"$\",d.widgetOptions.filter_ignoreCase?\"i\":\"\"),h=j.test(k.exact)||b.processTypes(d,k,f))return h}catch(a){return null}}return h||!1}return null},and:function(d,e,f){if(c.andTest.test(e.filter)){var g,h,i,j,k,l=a.extend({},e),m=e.filter.split(c.andSplit),n=e.iFilter.split(c.andSplit),o=m.length;for(g=0;g<o;g++){l.nestedFilters=!0,l.filter=\"\"+(b.parseFilter(d,m[g],e)||\"\"),l.iFilter=\"\"+(b.parseFilter(d,n[g],e)||\"\"),j=(\"(\"+(b.parseFilter(d,l.filter,e)||\"\")+\")\").replace(c.wild01,\"\\\\S{1}\").replace(c.wild0More,\"\\\\S*\");try{k=new RegExp(e.isMatch?j:\"^\"+j+\"$\",d.widgetOptions.filter_ignoreCase?\"i\":\"\"),i=k.test(l.exact)||b.processTypes(d,l,f),h=0===g?i:h&&i}catch(a){return null}}return h||!1}return null},regex:function(a,b){if(c.regex.test(b.filter)){var d,e=b.filter_regexCache[b.index]||c.regex.exec(b.filter),f=e instanceof RegExp;try{f||(b.filter_regexCache[b.index]=e=new RegExp(e[1],e[2])),d=e.test(b.exact)}catch(a){d=!1}return d}return null},operators:function(e,f){if(c.operTest.test(f.iFilter)&&\"\"!==f.iExact){var g,h,i,j=e.table,k=f.parsed[f.index],l=d.formatFloat(f.iFilter.replace(c.operators,\"\"),j),m=e.parsers[f.index]||{},n=l;return(k||\"numeric\"===m.type)&&(i=a.trim(\"\"+f.iFilter.replace(c.operators,\"\")),h=b.parseFilter(e,i,f,!0),l=\"number\"!=typeof h||\"\"===h||isNaN(h)?l:h),!k&&\"numeric\"!==m.type||isNaN(l)||\"undefined\"==typeof f.cache?(i=isNaN(f.iExact)?f.iExact.replace(d.regex.nondigit,\"\"):f.iExact,g=d.formatFloat(i,j)):g=f.cache,c.gtTest.test(f.iFilter)?h=c.gteTest.test(f.iFilter)?g>=l:g>l:c.ltTest.test(f.iFilter)&&(h=c.lteTest.test(f.iFilter)?g<=l:g<l),h||\"\"!==n||(h=!0),h}return null},notMatch:function(d,e){if(c.notTest.test(e.iFilter)){var f,g=e.iFilter.replace(\"!\",\"\"),h=b.parseFilter(d,g,e)||\"\";return c.exact.test(h)?(h=h.replace(c.exact,\"\"),\"\"===h||a.trim(h)!==e.iExact):(f=e.iExact.search(a.trim(h)),\"\"===h||(e.anyMatch?f<0:!(d.widgetOptions.filter_startsWith?0===f:f>=0)))}return null},exact:function(d,e){if(c.exact.test(e.iFilter)){var f=e.iFilter.replace(c.exact,\"\"),g=b.parseFilter(d,f,e)||\"\";return e.anyMatch?a.inArray(g,e.rowArray)>=0:g==e.iExact}return null},range:function(a,e){if(c.toTest.test(e.iFilter)){var f,g,h,i,j=a.table,k=e.index,l=e.parsed[k],m=e.iFilter.split(c.toSplit);return g=m[0].replace(d.regex.nondigit,\"\")||\"\",h=d.formatFloat(b.parseFilter(a,g,e),j),g=m[1].replace(d.regex.nondigit,\"\")||\"\",i=d.formatFloat(b.parseFilter(a,g,e),j),(l||\"numeric\"===a.parsers[k].type)&&(f=a.parsers[k].format(\"\"+m[0],j,a.$headers.eq(k),k),h=\"\"===f||isNaN(f)?h:f,f=a.parsers[k].format(\"\"+m[1],j,a.$headers.eq(k),k),i=\"\"===f||isNaN(f)?i:f),!l&&\"numeric\"!==a.parsers[k].type||isNaN(h)||isNaN(i)?(g=isNaN(e.iExact)?e.iExact.replace(d.regex.nondigit,\"\"):e.iExact,f=d.formatFloat(g,j)):f=e.cache,h>i&&(g=h,h=i,i=g),f>=h&&f<=i||\"\"===h||\"\"===i}return null},wild:function(a,d){if(c.wildOrTest.test(d.iFilter)){var e=\"\"+(b.parseFilter(a,d.iFilter,d)||\"\");!c.wildTest.test(e)&&d.nestedFilters&&(e=d.isMatch?e:\"^(\"+e+\")$\");try{return new RegExp(e.replace(c.wild01,\"\\\\S{1}\").replace(c.wild0More,\"\\\\S*\"),a.widgetOptions.filter_ignoreCase?\"i\":\"\").test(d.exact)}catch(a){return null}}return null},fuzzy:function(a,d){if(c.fuzzyTest.test(d.iFilter)){var e,f=0,g=d.iExact.length,h=d.iFilter.slice(1),i=b.parseFilter(a,h,d)||\"\";for(e=0;e<g;e++)d.iExact[e]===i[f]&&(f+=1);return f===i.length}return null}},init:function(f){d.language=a.extend(!0,{},{to:\"to\",or:\"or\",and:\"and\"},d.language);var g,h,i,j,k,l,m,n,o=f.config,p=o.widgetOptions;if(o.$table.addClass(\"hasFilters\"),o.lastSearch=[],p.filter_searchTimer=null,p.filter_initTimer=null,p.filter_formatterCount=0,p.filter_formatterInit=[],p.filter_anyColumnSelector='[data-column=\"all\"],[data-column=\"any\"]',p.filter_multipleColumnSelector='[data-column*=\"-\"],[data-column*=\",\"]',l=\"\\\\{\"+c.query+\"\\\\}\",a.extend(c,{child:new RegExp(o.cssChildRow),filtered:new RegExp(p.filter_filteredRow),alreadyFiltered:new RegExp(\"(\\\\s+(\"+d.language.or+\"|-|\"+d.language.to+\")\\\\s+)\",\"i\"),toTest:new RegExp(\"\\\\s+(-|\"+d.language.to+\")\\\\s+\",\"i\"),toSplit:new RegExp(\"(?:\\\\s+(?:-|\"+d.language.to+\")\\\\s+)\",\"gi\"),andTest:new RegExp(\"\\\\s+(\"+d.language.and+\"|&&)\\\\s+\",\"i\"),andSplit:new RegExp(\"(?:\\\\s+(?:\"+d.language.and+\"|&&)\\\\s+)\",\"gi\"),orTest:new RegExp(\"(\\\\||\\\\s+\"+d.language.or+\"\\\\s+)\",\"i\"),orSplit:new RegExp(\"(?:\\\\s+(?:\"+d.language.or+\")\\\\s+|\\\\|)\",\"gi\"),iQuery:new RegExp(l,\"i\"),igQuery:new RegExp(l,\"ig\"),operTest:/^[<>]=?/,gtTest:/>/,gteTest:/>=/,ltTest:/</,lteTest:/<=/,notTest:/^\\!/,wildOrTest:/[\\?\\*\\|]/,wildTest:/\\?\\*/,fuzzyTest:/^~/,exactTest:/[=\\\"\\|!]/}),l=o.$headers.filter(\".filter-false, .parser-false\").length,p.filter_columnFilters!==!1&&l!==o.$headers.length&&b.buildRow(f,o,p),i=\"addRows updateCell update updateRows updateComplete appendCache filterReset \"+\"filterResetSaved filterEnd search \".split(\" \").join(o.namespace+\"filter \"),o.$table.bind(i,function(c,g){return l=p.filter_hideEmpty&&a.isEmptyObject(o.cache)&&!(o.delayInit&&\"appendCache\"===c.type),o.$table.find(\".\"+e.filterRow).toggleClass(p.filter_filteredRow,l),/(search|filter)/.test(c.type)||(c.stopPropagation(),b.buildDefault(f,!0)),\"filterReset\"===c.type?(o.$table.find(\".\"+e.filter).add(p.filter_$externalFilters).val(\"\"),b.searching(f,[])):\"filterResetSaved\"===c.type?d.storage(f,\"tablesorter-filters\",\"\"):\"filterEnd\"===c.type?b.buildDefault(f,!0):(g=\"search\"===c.type?g:\"updateComplete\"===c.type?o.$table.data(\"lastSearch\"):\"\",/(update|add)/.test(c.type)&&\"updateComplete\"!==c.type&&(o.lastCombinedFilter=null,o.lastSearch=[],setTimeout(function(){o.$table.triggerHandler(\"filterFomatterUpdate\")},100)),b.searching(f,g,!0)),!1}),p.filter_reset&&(p.filter_reset instanceof a?p.filter_reset.click(function(){o.$table.triggerHandler(\"filterReset\")}):a(p.filter_reset).length&&a(document).undelegate(p.filter_reset,\"click\"+o.namespace+\"filter\").delegate(p.filter_reset,\"click\"+o.namespace+\"filter\",function(){o.$table.triggerHandler(\"filterReset\")})),p.filter_functions)for(k=0;k<o.columns;k++)if(m=d.getColumnData(f,p.filter_functions,k))if(j=o.$headerIndexed[k].removeClass(\"filter-select\"),n=!(j.hasClass(\"filter-false\")||j.hasClass(\"parser-false\")),g=\"\",m===!0&&n)b.buildSelect(f,k);else if(\"object\"==typeof m&&n){for(h in m)\"string\"==typeof h&&(g+=\"\"===g?'<option value=\"\">'+(j.data(\"placeholder\")||j.attr(\"data-placeholder\")||p.filter_placeholder.select||\"\")+\"</option>\":\"\",l=h,i=h,h.indexOf(p.filter_selectSourceSeparator)>=0&&(l=h.split(p.filter_selectSourceSeparator),i=l[1],l=l[0]),g+=\"<option \"+(i===l?\"\":'data-function-name=\"'+h+'\" ')+'value=\"'+l+'\">'+i+\"</option>\");o.$table.find(\"thead\").find(\"select.\"+e.filter+'[data-column=\"'+k+'\"]').append(g),i=p.filter_selectSource,m=\"function\"==typeof i||d.getColumnData(f,i,k),m&&b.buildSelect(o.table,k,\"\",!0,j.hasClass(p.filter_onlyAvail))}b.buildDefault(f,!0),b.bindSearch(f,o.$table.find(\".\"+e.filter),!0),p.filter_external&&b.bindSearch(f,p.filter_external),p.filter_hideFilters&&b.hideFilters(o),o.showProcessing&&(i=\"filterStart filterEnd \".split(\" \").join(o.namespace+\"filter \"),o.$table.unbind(i.replace(d.regex.spaces,\" \")).bind(i,function(b,c){j=c?o.$table.find(\".\"+e.header).filter(\"[data-column]\").filter(function(){return\"\"!==c[a(this).data(\"column\")]}):\"\",d.isProcessing(f,\"filterStart\"===b.type,c?j:\"\")})),o.filteredRows=o.totalRows,i=\"tablesorter-initialized pagerBeforeInitialized \".split(\" \").join(o.namespace+\"filter \"),o.$table.unbind(i.replace(d.regex.spaces,\" \")).bind(i,function(){b.completeInit(this)}),o.pager&&o.pager.initialized&&!p.filter_initialized?(o.$table.triggerHandler(\"filterFomatterUpdate\"),setTimeout(function(){b.filterInitComplete(o)},100)):p.filter_initialized||b.completeInit(f)},completeInit:function(a){var c=a.config,e=c.widgetOptions,f=b.setDefaults(a,c,e)||[];f.length&&(c.delayInit&&\"\"===f.join(\"\")||d.setFilters(a,f,!0)),c.$table.triggerHandler(\"filterFomatterUpdate\"),setTimeout(function(){e.filter_initialized||b.filterInitComplete(c)},100)},formatterUpdated:function(a,b){var c=a&&a.closest(\"table\")[0].config.widgetOptions;c&&!c.filter_initialized&&(c.filter_formatterInit[b]=1)},filterInitComplete:function(c){var d,e,f=c.widgetOptions,g=0,h=function(){f.filter_initialized=!0,c.lastSearch=c.$table.data(\"lastSearch\"),c.$table.triggerHandler(\"filterInit\",c),b.findRows(c.table,c.lastSearch||[])};if(a.isEmptyObject(f.filter_formatter))h();else{for(e=f.filter_formatterInit.length,d=0;d<e;d++)1===f.filter_formatterInit[d]&&g++;clearTimeout(f.filter_initTimer),f.filter_initialized||g!==f.filter_formatterCount?f.filter_initialized||(f.filter_initTimer=setTimeout(function(){h()},500)):h()}},processFilters:function(a,b){var c,d=[],e=b?encodeURIComponent:decodeURIComponent,f=a.length;for(c=0;c<f;c++)a[c]&&(d[c]=e(a[c]));return d},setDefaults:function(c,e,f){var g,h,i,j,k,l=d.getFilters(c)||[];if(f.filter_saveFilters&&d.storage&&(h=d.storage(c,\"tablesorter-filters\")||[],g=a.isArray(h),g&&\"\"===h.join(\"\")||!g||(l=b.processFilters(h))),\"\"===l.join(\"\"))for(k=e.$headers.add(f.filter_$externalFilters).filter(\"[\"+f.filter_defaultAttrib+\"]\"),i=0;i<=e.columns;i++)j=i===e.columns?\"all\":i,l[i]=k.filter('[data-column=\"'+j+'\"]').attr(f.filter_defaultAttrib)||l[i]||\"\";return e.$table.data(\"lastSearch\",l),l},parseFilter:function(a,b,c,d){return d||c.parsed[c.index]?a.parsers[c.index].format(b,a.table,[],c.index):b},buildRow:function(c,f,g){var h,i,j,k,l,m,n,o,p,q=g.filter_cellFilter,r=f.columns,s=a.isArray(q),t='<tr role=\"row\" class=\"'+e.filterRow+\" \"+f.cssIgnoreRow+'\">';for(j=0;j<r;j++)f.$headerIndexed[j].length&&(p=f.$headerIndexed[j]&&f.$headerIndexed[j][0].colSpan||0,t+=p>1?'<td data-column=\"'+j+\"-\"+(j+p-1)+'\" colspan=\"'+p+'\"':'<td data-column=\"'+j+'\"',t+=s?q[j]?' class=\"'+q[j]+'\"':\"\":\"\"!==q?' class=\"'+q+'\"':\"\",t+=\"></td>\");for(f.$filters=a(t+=\"</tr>\").appendTo(f.$table.children(\"thead\").eq(0)).children(\"td\"),j=0;j<r;j++)m=!1,k=f.$headerIndexed[j],k&&k.length&&(h=b.getColumnElm(f,f.$filters,j),o=d.getColumnData(c,g.filter_functions,j),l=g.filter_functions&&o&&\"function\"!=typeof o||k.hasClass(\"filter-select\"),i=d.getColumnData(c,f.headers,j),m=\"false\"===d.getData(k[0],i,\"filter\")||\"false\"===d.getData(k[0],i,\"parser\"),l?t=a(\"<select>\").appendTo(h):(o=d.getColumnData(c,g.filter_formatter,j),o?(g.filter_formatterCount++,t=o(h,j),t&&0===t.length&&(t=h.children(\"input\")),t&&(0===t.parent().length||t.parent().length&&t.parent()[0]!==h[0])&&h.append(t)):t=a('<input type=\"search\">').appendTo(h),t&&(p=k.data(\"placeholder\")||k.attr(\"data-placeholder\")||g.filter_placeholder.search||\"\",t.attr(\"placeholder\",p))),t&&(n=(a.isArray(g.filter_cssFilter)?\"undefined\"!=typeof g.filter_cssFilter[j]?g.filter_cssFilter[j]||\"\":\"\":g.filter_cssFilter)||\"\",t.addClass(e.filter+\" \"+n).attr(\"data-column\",h.attr(\"data-column\")),m&&(t.attr(\"placeholder\",\"\").addClass(e.filterDisabled)[0].disabled=!0)))},bindSearch:function(c,e,g){if(c=a(c)[0],e=a(e),e.length){var h,i=c.config,j=i.widgetOptions,k=i.namespace+\"filter\",l=j.filter_$externalFilters;g!==!0&&(h=j.filter_anyColumnSelector+\",\"+j.filter_multipleColumnSelector,j.filter_$anyMatch=e.filter(h),l&&l.length?j.filter_$externalFilters=j.filter_$externalFilters.add(e):j.filter_$externalFilters=e,d.setFilters(c,i.$table.data(\"lastSearch\")||[],g===!1)),h=\"keypress keyup keydown search change input \".split(\" \").join(k+\" \"),e.attr(\"data-lastSearchTime\",(new Date).getTime()).unbind(h.replace(d.regex.spaces,\" \")).bind(\"keydown\"+k,function(a){if(a.which===f.escape&&!c.config.widgetOptions.filter_resetOnEsc)return!1}).bind(\"keyup\"+k,function(e){j=c.config.widgetOptions;var g=parseInt(a(this).attr(\"data-column\"),10),h=\"boolean\"==typeof j.filter_liveSearch?j.filter_liveSearch:d.getColumnData(c,j.filter_liveSearch,g);if(\"undefined\"==typeof h&&(h=j.filter_liveSearch.fallback||!1),a(this).attr(\"data-lastSearchTime\",(new Date).getTime()),e.which===f.escape)this.value=j.filter_resetOnEsc?\"\":i.lastSearch[g];else{if(h===!1)return;if(\"\"!==this.value&&(\"number\"==typeof h&&this.value.length<h||e.which!==f.enter&&e.which!==f.backSpace&&(e.which<f.space||e.which>=f.left&&e.which<=f.down)))return}b.searching(c,!0,!0,g)}).bind(\"search change keypress input \".split(\" \").join(k+\" \"),function(e){var g=parseInt(a(this).attr(\"data-column\"),10),h=\"boolean\"==typeof j.filter_liveSearch?j.filter_liveSearch:d.getColumnData(c,j.filter_liveSearch,g);!c.config.widgetOptions.filter_initialized||e.which!==f.enter&&\"search\"!==e.type&&(\"change\"!==e.type&&\"input\"!==e.type||h!==!0||this.value===i.lastSearch[g])||(e.preventDefault(),a(this).attr(\"data-lastSearchTime\",(new Date).getTime()),b.searching(c,\"keypress\"!==e.type,!0,g))})}},searching:function(a,c,e,f){var g,h=a.config.widgetOptions;\"undefined\"==typeof f?g=!1:(g=\"boolean\"==typeof h.filter_liveSearch?h.filter_liveSearch:d.getColumnData(a,h.filter_liveSearch,f),\"undefined\"==typeof g&&(g=h.filter_liveSearch.fallback||!1)),clearTimeout(h.filter_searchTimer),\"undefined\"==typeof c||c===!0?h.filter_searchTimer=setTimeout(function(){b.checkFilters(a,c,e)},g?h.filter_searchDelay:10):b.checkFilters(a,c,e)},checkFilters:function(c,f,g){var h=c.config,i=h.widgetOptions,j=a.isArray(f),k=j?f:d.getFilters(c,!0),l=(k||[]).join(\"\");return a.isEmptyObject(h.cache)?void(h.delayInit&&(!h.pager||h.pager&&h.pager.initialized)&&d.updateCache(h,function(){b.checkFilters(c,!1,g)})):(j&&(d.setFilters(c,k,!1,g!==!0),i.filter_initialized||(h.lastCombinedFilter=\"\")),i.filter_hideFilters&&h.$table.find(\".\"+e.filterRow).triggerHandler(b.hideFiltersCheck(h)?\"mouseleave\":\"mouseenter\"),h.lastCombinedFilter!==l||f===!1?(f===!1&&(h.lastCombinedFilter=null,h.lastSearch=[]),k=k||[],k=Array.prototype.map?k.map(String):k.join(\"<22>\").split(\"<22>\"),i.filter_initialized&&h.$table.triggerHandler(\"filterStart\",[k]),h.showProcessing?void setTimeout(function(){return b.findRows(c,k,l),!1},30):(b.findRows(c,k,l),!1)):void 0)},hideFiltersCheck:function(a){if(\"function\"==typeof a.widgetOptions.filter_hideFilters){var b=a.widgetOptions.filter_hideFilters(a);if(\"boolean\"==typeof b)return b}return\"\"===d.getFilters(a.$table).join(\"\")},hideFilters:function(c,d){var f;(d||c.$table).find(\".\"+e.filterRow).addClass(e.filterRowHide).bind(\"mouseenter mouseleave\",function(d){var g=d,h=a(this);clearTimeout(f),f=setTimeout(function(){/enter|over/.test(g.type)?h.removeClass(e.filterRowHide):a(document.activeElement).closest(\"tr\")[0]!==h[0]&&h.toggleClass(e.filterRowHide,b.hideFiltersCheck(c))},200)}).find(\"input, select\").bind(\"focus blur\",function(d){var g=d,h=a(this).closest(\"tr\");clearTimeout(f),f=setTimeout(function(){clearTimeout(f),h.toggleClass(e.filterRowHide,b.hideFiltersCheck(c)&&\"focus\"!==g.type)},200)})},defaultFilter:function(b,d){if(\"\"===b)return b;var e=c.iQuery,f=d.match(c.igQuery).length,g=f>1?a.trim(b).split(/\\s/):[a.trim(b)],h=g.length-1,i=0,j=d;for(h<1&&f>1&&(g[1]=g[0]);e.test(j);)j=j.replace(e,g[i++]||\"\"),e.test(j)&&i<h&&\"\"!==(g[i]||\"\")&&(j=d.replace(e,j));return j},getLatestSearch:function(b){return b?b.sort(function(b,c){return a(c).attr(\"data-lastSearchTime\")-a(b).attr(\"data-lastSearchTime\")}):b||a()},findRange:function(a,b,c){var d,e,f,g,h,i,j,k,l,m=[];if(/^[0-9]+$/.test(b))return[parseInt(b,10)];if(!c&&/-/.test(b))for(e=b.match(/(\\d+)\\s*-\\s*(\\d+)/g),l=e?e.length:0,k=0;k<l;k++){for(f=e[k].split(/\\s*-\\s*/),g=parseInt(f[0],10)||0,h=parseInt(f[1],10)||a.columns-1,g>h&&(d=g,g=h,h=d),h>=a.columns&&(h=a.columns-1);g<=h;g++)m[m.length]=g;b=b.replace(e[k],\"\")}if(!c&&/,/.test(b))for(i=b.split(/\\s*,\\s*/),l=i.length,j=0;j<l;j++)\"\"!==i[j]&&(k=parseInt(i[j],10),k<a.columns&&(m[m.length]=k));if(!m.length)for(k=0;k<a.columns;k++)m[m.length]=k;return m},getColumnElm:function(c,d,e){return d.filter(function(){var d=b.findRange(c,a(this).attr(\"data-column\"));return a.inArray(e,d)>-1})},multipleColumns:function(c,d){var e=c.widgetOptions,f=e.filter_initialized||!d.filter(e.filter_anyColumnSelector).length,g=a.trim(b.getLatestSearch(d).attr(\"data-column\")||\"\");return b.findRange(c,g,!f)},processTypes:function(c,d,e){var f,g=null,h=null;for(f in b.types)a.inArray(f,e.excludeMatch)<0&&null===h&&(h=b.types[f](c,d,e),null!==h&&(g=h));return g},matchType:function(a,b){var c,d=a.widgetOptions,f=a.$headerIndexed[b];return f.hasClass(\"filter-exact\")?c=!1:f.hasClass(\"filter-match\")?c=!0:(d.filter_columnFilters?f=a.$filters.find(\".\"+e.filter).add(d.filter_$externalFilters).filter('[data-column=\"'+b+'\"]'):d.filter_$externalFilters&&(f=d.filter_$externalFilters.filter('[data-column=\"'+b+'\"]')),c=!!f.length&&\"match\"===a.widgetOptions.filter_matchType[(f[0].nodeName||\"\").toLowerCase()]),c},processRow:function(e,f,g){var h,i,j,k,l,m=e.widgetOptions,n=!0,o=m.filter_$anyMatch&&m.filter_$anyMatch.length,p=m.filter_$anyMatch&&m.filter_$anyMatch.length?b.multipleColumns(e,m.filter_$anyMatch):[];if(f.$cells=f.$row.children(),f.anyMatchFlag&&p.length>1||f.anyMatchFilter&&!o){if(f.anyMatch=!0,f.isMatch=!0,f.rowArray=f.$cells.map(function(b){if(a.inArray(b,p)>-1||f.anyMatchFilter&&!o)return f.parsed[b]?l=f.cacheArray[b]:(l=f.rawArray[b],l=a.trim(m.filter_ignoreCase?l.toLowerCase():l),e.sortLocaleCompare&&(l=d.replaceAccents(l))),l}).get(),f.filter=f.anyMatchFilter,f.iFilter=f.iAnyMatchFilter,f.exact=f.rowArray.join(\" \"),f.iExact=m.filter_ignoreCase?f.exact.toLowerCase():f.exact,f.cache=f.cacheArray.slice(0,-1).join(\" \"),g.excludeMatch=g.noAnyMatch,i=b.processTypes(e,f,g),null!==i)n=i;else if(m.filter_startsWith)for(n=!1,p=Math.min(e.columns,f.rowArray.length);!n&&p>0;)p--,n=n||0===f.rowArray[p].indexOf(f.iFilter);else n=(f.iExact+f.childRowText).indexOf(f.iFilter)>=0;if(f.anyMatch=!1,f.filters.join(\"\")===f.filter)return n}for(p=0;p<e.columns;p++)f.filter=f.filters[p],f.index=p,g.excludeMatch=g.excludeFilter[p],f.filter&&(f.cache=f.cacheArray[p],h=f.parsed[p]?f.cache:f.rawArray[p]||\"\",f.exact=e.sortLocaleCompare?d.replaceAccents(h):h,f.iExact=!c.type.test(typeof f.exact)&&m.filter_ignoreCase?f.exact.toLowerCase():f.exact,f.isMatch=b.matchType(e,p),h=n,k=m.filter_columnFilters?e.$filters.add(m.filter_$externalFilters).filter('[data-column=\"'+p+'\"]').find(\"select option:selected\").attr(\"data-function-name\")||\"\":\"\",e.sortLocaleCompare&&(f.filter=d.replaceAccents(f.filter)),m.filter_defaultFilter&&c.iQuery.test(g.defaultColFilter[p])&&(f.filter=b.defaultFilter(f.filter,g.defaultColFilter[p])),f.iFilter=m.filter_ignoreCase?(f.filter||\"\").toLowerCase():f.filter,j=g.functions[p],i=null,j&&(j===!0?i=f.isMatch?(\"\"+f.iExact).search(f.iFilter)>=0:f.filter===f.exact:\"function\"==typeof j?i=j(f.exact,f.cache,f.filter,p,f.$row,e,f):\"function\"==typeof j[k||f.filter]&&(l=k||f.filter,i=j[l](f.exact,f.cache,f.filter,p,f.$row,e,f))),null===i?(i=b.processTypes(e,f,g),null!==i?h=i:(l=(f.iExact+f.childRowText).indexOf(b.parseFilter(e,f.iFilter,f)),h=!m.filter_startsWith&&l>=0||m.filter_startsWith&&0===l)):h=i,n=!!h&&n);return n},findRows:function(e,f,g){if(e.config.lastCombinedFilter!==g&&e.config.widgetOptions.filter_initialized){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F=a.extend([],f),G=e.config,H=G.widgetOptions,I={anyMatch:!1,filters:f,filter_regexCache:[]},J={noAnyMatch:[\"range\",\"operators\"],functions:[],excludeFilter:[],defaultColFilter:[],defaultAnyFilter:d.getColumnData(e,H.filter_defaultFilter,G.columns,!0)||\"\"};for(I.parsed=[],p=0;p<G.columns;p++)I.parsed[p]=H.filter_useParsedData||G.parsers&&G.parsers[p]&&G.parsers[p].parsed||d.getData&&\"parsed\"===d.getData(G.$headerIndexed[p],d.getColumnData(e,G.headers,p),\"filter\")||G.$headerIndexed[p].hasClass(\"filter-parsed\"),J.functions[p]=d.getColumnData(e,H.filter_functions,p)||G.$headerIndexed[p].hasClass(\"filter-select\"),J.defaultColFilter[p]=d.getColumnData(e,H.filter_defaultFilter,p)||\"\",J.excludeFilter[p]=(d.getColumnData(e,H.filter_excludeFilter,p,!0)||\"\").split(/\\s+/);for(G.debug&&(console.log(\"Filter: Starting filter widget search\",f),v=new Date),G.filteredRows=0,G.totalRows=0,g=(F||[]).join(\"\"),n=0;n<G.$tbodies.length;n++){if(o=d.processTbody(e,G.$tbodies.eq(n),!0),p=G.columns,i=G.cache[n].normalized,k=a(a.map(i,function(a){return a[p].$row.get()})),\"\"===g||H.filter_serversideFiltering)k.removeClass(H.filter_filteredRow).not(\".\"+G.cssChildRow).css(\"display\",\"\");else{if(k=k.not(\".\"+G.cssChildRow),h=k.length,(H.filter_$anyMatch&&H.filter_$anyMatch.length||\"undefined\"!=typeof f[G.columns])&&(I.anyMatchFlag=!0,I.anyMatchFilter=\"\"+(f[G.columns]||H.filter_$anyMatch&&b.getLatestSearch(H.filter_$anyMatch).val()||\"\"),H.filter_columnAnyMatch)){for(A=I.anyMatchFilter.split(c.andSplit),B=!1,x=0;x<A.length;x++)C=A[x].split(\":\"),C.length>1&&(isNaN(C[0])?a.each(G.headerContent,function(a,b){b.toLowerCase().indexOf(C[0])>-1&&(D=a,f[D]=C[1])}):D=parseInt(C[0],10)-1,D>=0&&D<G.columns&&(f[D]=C[1],A.splice(x,1),x--,B=!0));B&&(I.anyMatchFilter=A.join(\" && \"))}if(z=H.filter_searchFiltered,s=G.lastSearch||G.$table.data(\"lastSearch\")||[],z)for(x=0;x<p+1;x++)w=f[x]||\"\",z||(x=p),z=z&&s.length&&0===w.indexOf(s[x]||\"\")&&!c.alreadyFiltered.test(w)&&!c.exactTest.test(w)&&!(c.isNeg1.test(w)||c.isNeg2.test(w))&&!(\"\"!==w&&G.$filters&&G.$filters.filter('[data-column=\"'+x+'\"]').find(\"select\").length&&!b.matchType(G,x));for(y=k.not(\".\"+H.filter_filteredRow).length,z&&0===y&&(z=!1),G.debug&&console.log(\"Filter: Searching through \"+(z&&y<h?y:\"all\")+\" rows\"),I.anyMatchFlag&&(G.sortLocaleCompare&&(I.anyMatchFilter=d.replaceAccents(I.anyMatchFilter)),H.filter_defaultFilter&&c.iQuery.test(J.defaultAnyFilter)&&(I.anyMatchFilter=b.defaultFilter(I.anyMatchFilter,J.defaultAnyFilter),z=!1),I.iAnyMatchFilter=H.filter_ignoreCase&&G.ignoreCase?I.anyMatchFilter.toLowerCase():I.anyMatchFilter),m=0;m<h;m++)if(E=k[m].className,q=m&&c.child.test(E),!(q||z&&c.filtered.test(E))){if(I.$row=k.eq(m),I.rowIndex=m,I.cacheArray=i[m],j=I.cacheArray[G.columns],I.rawArray=j.raw,I.childRowText=\"\",!H.filter_childByColumn){for(E=\"\",r=j.child,x=0;x<r.length;x++)E+=\" \"+r[x].join(\" \")||\"\";I.childRowText=H.filter_childRows?H.filter_ignoreCase?E.toLowerCase():E:\"\"}if(t=!1,u=b.processRow(G,I,J),l=j.$row,w=!!u,r=j.$row.filter(\":gt(0)\"),H.filter_childRows&&r.length){if(H.filter_childByColumn)for(H.filter_childWithSibs||(r.addClass(H.filter_filteredRow),l=l.eq(0)),x=0;x<r.length;x++)I.$row=r.eq(x),I.cacheArray=j.child[x],I.rawArray=I.cacheArray,w=b.processRow(G,I,J),t=t||w,!H.filter_childWithSibs&&w&&r.eq(x).removeClass(H.filter_filteredRow);t=t||u}else t=w;l.toggleClass(H.filter_filteredRow,!t)[0].display=t?\"\":\"none\"}}G.filteredRows+=k.not(\".\"+H.filter_filteredRow).length,G.totalRows+=k.length,d.processTbody(e,o,!1)}G.lastCombinedFilter=g,G.lastSearch=F,G.$table.data(\"lastSearch\",F),H.filter_saveFilters&&d.storage&&d.storage(e,\"tablesorter-filters\",b.processFilters(F,!0)),G.debug&&console.log(\"Completed filter widget search\"+d.benchmark(v)),H.filter_initialized&&(G.$table.triggerHandler(\"filterBeforeEnd\",G),G.$table.triggerHandler(\"filterEnd\",G)),setTimeout(function(){d.applyWidget(G.table)},0)}},getOptionSource:function(c,e,f){c=a(c)[0];var g=c.config,h=g.widgetOptions,i=!1,j=h.filter_selectSource,k=g.$table.data(\"lastSearch\")||[],l=\"function\"==typeof j||d.getColumnData(c,j,e);if(f&&\"\"!==k[e]&&(f=!1),l===!0)i=j(c,e,f);else{if(l instanceof a||\"string\"===a.type(l)&&l.indexOf(\"</option>\")>=0)return l;a.isArray(l)?i=l:\"object\"===a.type(j)&&l&&(i=l(c,e,f))}return i===!1&&(i=b.getOptions(c,e,f)),b.processOptions(c,e,i)},processOptions:function(b,c,e){if(!a.isArray(e))return!1;b=a(b)[0];var f,g,h,i,j,k,l=b.config,m=\"undefined\"!=typeof c&&null!==c&&c>=0&&c<l.columns,n=!!m&&l.$headerIndexed[c].hasClass(\"filter-select-sort-desc\"),o=[];if(e=a.grep(e,function(b,c){return!!b.text||a.inArray(b,e)===c}),m&&l.$headerIndexed[c].hasClass(\"filter-select-nosort\"))return e;for(i=e.length,h=0;h<i;h++)g=e[h],k=g.text?g.text:g,j=(m&&l.parsers&&l.parsers.length&&l.parsers[c].format(k,b,[],c)||k).toString(),j=l.widgetOptions.filter_ignoreCase?j.toLowerCase():j,g.text?(g.parsed=j,o[o.length]=g):o[o.length]={text:g,parsed:j};for(f=l.textSorter||\"\",o.sort(function(a,e){var g=n?e.parsed:a.parsed,h=n?a.parsed:e.parsed;return m&&\"function\"==typeof f?f(g,h,!0,c,b):m&&\"object\"==typeof f&&f.hasOwnProperty(c)?f[c](g,h,!0,c,b):!d.sortNatural||d.sortNatural(g,h)}),e=[],i=o.length,h=0;h<i;h++)e[e.length]=o[h];return e},getOptions:function(b,c,e){b=a(b)[0];var f,g,h,i,j,k,l,m,n=b.config,o=n.widgetOptions,p=[];for(g=0;g<n.$tbodies.length;g++)for(j=n.cache[g],h=n.cache[g].normalized.length,f=0;f<h;f++)if(i=j.row?j.row[f]:j.normalized[f][n.columns].$row[0],!e||!i.className.match(o.filter_filteredRow))if(o.filter_useParsedData||n.parsers[c].parsed||n.$headerIndexed[c].hasClass(\"filter-parsed\")){if(p[p.length]=\"\"+j.normalized[f][c],o.filter_childRows&&o.filter_childByColumn)for(m=j.normalized[f][n.columns].$row.length-1,k=0;k<m;k++)p[p.length]=\"\"+j.normalized[f][n.columns].child[k][c]}else if(p[p.length]=j.normalized[f][n.columns].raw[c],o.filter_childRows&&o.filter_childByColumn)for(m=j.normalized[f][n.columns].$row.length,k=1;k<m;k++)l=j.normalized[f][n.columns].$row.eq(k).children().eq(c),p[p.length]=\"\"+d.getElementText(n,l,c);return p},buildSelect:function(d,f,g,h,i){if(d=a(d)[0],f=parseInt(f,10),d.config.cache&&!a.isEmptyObject(d.config.cache)){var j,k,l,m,n,o,p,q=d.config,r=q.widgetOptions,s=q.$headerIndexed[f],t='<option value=\"\">'+(s.data(\"placeholder\")||s.attr(\"data-placeholder\")||r.filter_placeholder.select||\"\")+\"</option>\",u=q.$table.find(\"thead\").find(\"select.\"+e.filter+'[data-column=\"'+f+'\"]').val();if(\"undefined\"!=typeof g&&\"\"!==g||(g=b.getOptionSource(d,f,i)),a.isArray(g)){for(j=0;j<g.length;j++)if(p=g[j],p.text){p[\"data-function-name\"]=\"undefined\"==typeof p.value?p.text:p.value,t+=\"<option\";for(k in p)p.hasOwnProperty(k)&&\"text\"!==k&&(t+=\" \"+k+'=\"'+p[k]+'\"');p.value||(t+=' value=\"'+p.text+'\"'),t+=\">\"+p.text+\"</option>\"}else\"\"+p!=\"[object Object]\"&&(l=p=(\"\"+p).replace(c.quote,\"&quot;\"),k=l,l.indexOf(r.filter_selectSourceSeparator)>=0&&(m=l.split(r.filter_selectSourceSeparator),k=m[0],l=m[1]),t+=\"\"!==p?\"<option \"+(k===l?\"\":'data-function-name=\"'+p+'\" ')+'value=\"'+k+'\">'+l+\"</option>\":\"\");g=[]}n=(q.$filters?q.$filters:q.$table.children(\"thead\")).find(\".\"+e.filter),r.filter_$externalFilters&&(n=n&&n.length?n.add(r.filter_$externalFilters):r.filter_$externalFilters),o=n.filter('select[data-column=\"'+f+'\"]'),o.length&&(o[h?\"html\":\"append\"](t),a.isArray(g)||o.append(g).val(u),o.val(u))}},buildDefault:function(a,c){var e,f,g,h=a.config,i=h.widgetOptions,j=h.columns;for(e=0;e<j;e++)f=h.$headerIndexed[e],g=!(f.hasClass(\"filter-false\")||f.hasClass(\"parser-false\")),(f.hasClass(\"filter-select\")||d.getColumnData(a,i.filter_functions,e)===!0)&&g&&b.buildSelect(a,e,\"\",c,f.hasClass(i.filter_onlyAvail))}},c=b.regex,d.getFilters=function(c,d,f,g){var h,i,j,k,l=[],m=c?a(c)[0].config:\"\",n=m?m.widgetOptions:\"\";if(d!==!0&&n&&!n.filter_columnFilters||a.isArray(f)&&f.join(\"\")===m.lastCombinedFilter)return a(c).data(\"lastSearch\");if(m&&(m.$filters&&(i=m.$filters.find(\".\"+e.filter)),n.filter_$externalFilters&&(i=i&&i.length?i.add(n.filter_$externalFilters):n.filter_$externalFilters),i&&i.length))for(l=f||[],h=0;h<m.columns+1;h++)k=h===m.columns?n.filter_anyColumnSelector+\",\"+n.filter_multipleColumnSelector:'[data-column=\"'+h+'\"]',j=i.filter(k),j.length&&(j=b.getLatestSearch(j),a.isArray(f)?(g&&j.length>1&&(j=j.slice(1)),h===m.columns&&(k=j.filter(n.filter_anyColumnSelector),j=k.length?k:j),j.val(f[h]).trigger(\"change\"+m.namespace)):(l[h]=j.val()||\"\",h===m.columns?j.slice(1).filter('[data-column*=\"'+j.attr(\"data-column\")+'\"]').val(l[h]):j.slice(1).val(l[h])),h===m.columns&&j.length&&(n.filter_$anyMatch=j));return l},d.setFilters=function(c,e,f,g){var h=c?a(c)[0].config:\"\",i=d.getFilters(c,!0,e,g);return\"undefined\"==typeof f&&(f=!0),h&&f&&(h.lastCombinedFilter=null,h.lastSearch=[],b.searching(h.table,e,g),h.$table.triggerHandler(\"filterFomatterUpdate\")),0!==i.length}}(jQuery);"]}