1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 00:11:35 +02:00
invoiceninja/public/js/tablesorter.min.js.map
2020-03-29 09:39:57 +03:00

1 line
474 KiB
Plaintext
Raw Blame History

{"version":3,"sources":["jquery.tablesorter.combined.js","widget-grouping.min.js","widget-uitheme.min.js","widget-filter.min.js","widget-columnSelector.min.js"],"names":["factory","define","amd","module","exports","require","jQuery","$","ts","tablesorter","version","parsers","widgets","defaults","theme","widthFixed","showProcessing","headerTemplate","onRenderTemplate","onRenderHeader","cancelSelection","tabIndex","dateFormat","sortMultiSortKey","sortResetKey","usNumberFormat","delayInit","serverSideSorting","resort","headers","ignoreCase","sortForce","sortList","sortAppend","sortStable","sortInitialOrder","sortLocaleCompare","sortReset","sortRestart","emptyTo","stringTo","duplicateSpan","textExtraction","textAttribute","textSorter","numberSorter","initWidgets","widgetClass","widgetOptions","zebra","initialized","tableClass","cssAsc","cssDesc","cssNone","cssHeader","cssHeaderRow","cssProcessing","cssChildRow","cssInfoBlock","cssNoSort","cssIgnoreRow","cssIcon","cssIconNone","cssIconAsc","cssIconDesc","pointerClick","pointerDown","pointerUp","selectorHeaders","selectorSort","selectorRemove","debug","headerList","empties","strings","globalize","imgAttr","css","table","cssHasChild","childRow","colgroup","header","headerRow","headerIn","icon","processing","sortAsc","sortDesc","sortNone","language","sortDisabled","nextAsc","nextDesc","nextNone","regex","templateContent","templateIcon","templateName","spaces","nonWord","formElements","chunk","chunks","hex","comma","digitNonUS","digitNegativeTest","digitNegativeReplace","digitTest","digitReplace","string","max","min","emptymin","emptymax","zero","none","null","top","bottom","keyCodes","enter","dates","instanceMethods","setup","c","tHead","tBodies","length","hasInitialized","console","warn","error","tmp","$table","meta","metadata","isProcessing","config","data","group","Date","supportsDataObject","parseInt","fn","jquery","split","toLowerCase","last","clickedIndex","test","attr","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","log","benchmark","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","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","diff","getTime","arguments","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","arg","date","now","toLocaleLowerCase","nondigit","currencyReplace","currencyTest","urlProtocolTest","urlProtocolReplace","dash","isoDate","isFinite","percentTest","dateReplace","usLongDateTest1","usLongDateTest2","shortDateTest","shortDateReplace","shortDateXXY","shortDateYMD","convertFormat","dateString","timeTest","timeMatch","timePart","p","parserMetadataName","$visibleRows","isEven","toRemove","document","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","columnSelector","queryAll","queryBreak","columnSelector_layout","selector","$container","columnSelector_container","$style","prop","$breakpoints","isInitializing","setUpColspan","setupSelector","columnSelector_mediaquery","setupBreakpoints","updateCols","refreshColumns","auto","states","updateAuto","updateBreakpoints","saveValues","adjustColspans","columnSelector_saveColumns","columnSelector_mediaqueryState","$wrapper","$checkbox","columnSelector_priority","columnSelector_columns","columnSelector_name","columnSelector_layoutCustomizer","columnSelector_cssChecked","checkChange","checked","change","columnSelector_maxVisible","columnSelector_minVisible","lastIndex","$auto","columnSelector_mediaqueryName","prependTo","$popup","columnSelector_updated","addSelectors","columnSelector_mediaqueryHidden","concat","columnSelector_maxPriorities","columnSelector_breakpoints","window_resize","attachTo","timer_resize"],"mappings":"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","file":"tablesorter.min.js","sourcesContent":["/*! tablesorter (FORK) - updated 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);","!function(a){\"use strict\";var b=a.tablesorter,c=\".tscolsel\",d=b.columnSelector={queryAll:\"@media only all { [columns] { display: none; } } \",queryBreak:\"@media all and (min-width: [size]) { [columns] { display: table-cell; } } \",init:function(b,e,f){var g,h;return g=a(f.columnSelector_layout),g.find(\"input\").add(g.filter(\"input\")).length?(e.$table.addClass(e.namespace.slice(1)+\"columnselector\"),h=e.selector={$container:a(f.columnSelector_container||\"<div>\")},h.$style=a(\"<style></style>\").prop(\"disabled\",!0).appendTo(\"head\"),h.$breakpoints=a(\"<style></style>\").prop(\"disabled\",!0).appendTo(\"head\"),h.isInitializing=!0,d.setUpColspan(e,f),d.setupSelector(e,f),f.columnSelector_mediaquery&&d.setupBreakpoints(e,f),h.isInitializing=!1,h.$container.length?d.updateCols(e,f):e.debug&&console.warn(\"ColumnSelector: >> container not found\"),void e.$table.off(\"refreshColumnSelector\"+c).on(\"refreshColumnSelector\"+c,function(a,b,c){d.refreshColumns(this.config,b,c)})):void(e.debug&&console.error(\"ColumnSelector: >> ERROR: Column Selector aborting, no input found in the layout! ***\"))},refreshColumns:function(b,c,e){var f,g,h,i,j=b.selector,k=a.isArray(e||c),l=b.widgetOptions;if(\"undefined\"!=typeof c&&null!==c&&j.$container.length){if(\"selectors\"===c&&(j.$container.empty(),d.setupSelector(b,l),d.setupBreakpoints(b,l),\"undefined\"==typeof e&&null!==e&&(e=j.auto)),k)for(g=e||c,a.each(g,function(a,b){g[a]=parseInt(b,10)}),f=0;f<b.columns;f++)i=a.inArray(f,g)>=0,h=j.$container.find(\"input[data-column=\"+f+\"]\"),h.length&&(h.prop(\"checked\",i),j.states[f]=i);i=e===!0||c===!0||\"auto\"===c&&e!==!1,h=j.$container.find('input[data-column=\"auto\"]').prop(\"checked\",i),d.updateAuto(b,l,h)}else d.updateBreakpoints(b,l),d.updateCols(b,l);d.saveValues(b,l),d.adjustColspans(b,l)},setupSelector:function(c,e){var f,g,h,i,j,k,l,m=c.selector,n=m.$container,o=e.columnSelector_saveColumns&&b.storage,p=o?b.storage(c.table,\"tablesorter-columnSelector\"):[],q=o?b.storage(c.table,\"tablesorter-columnSelector-auto\"):{};for(m.auto=a.isEmptyObject(q)||\"boolean\"!==a.type(q.auto)?e.columnSelector_mediaqueryState:q.auto,m.states=[],m.$column=[],m.$wrapper=[],m.$checkbox=[],f=0;f<c.columns;f++)h=c.$headerIndexed[f],i=h.attr(e.columnSelector_priority)||1,k=h.attr(\"data-column\"),j=b.getColumnData(c.table,c.headers,k),q=b.getData(h,j,\"columnSelector\"),isNaN(i)&&i.length>0||\"disable\"===q||e.columnSelector_columns[k]&&\"disable\"===e.columnSelector_columns[k]?m.states[k]=null:(m.states[k]=p&&\"undefined\"!=typeof p[k]&&null!==p[k]?p[k]:\"undefined\"!=typeof e.columnSelector_columns[k]&&null!==e.columnSelector_columns[k]?e.columnSelector_columns[k]:\"true\"===q||\"false\"!==q,m.$column[k]=a(this),n.length&&(g=h.attr(e.columnSelector_name)||h.text().trim(),\"function\"==typeof e.columnSelector_layoutCustomizer&&(l=h.find(\".\"+b.css.headerIn),g=e.columnSelector_layoutCustomizer(l.length?l:h,g,parseInt(k,10))),m.$wrapper[k]=a(e.columnSelector_layout.replace(/\\{name\\}/g,g)).appendTo(n),m.$checkbox[k]=m.$wrapper[k].find(\"input\").add(m.$wrapper[k].filter(\"input\")).attr(\"data-column\",k).toggleClass(e.columnSelector_cssChecked,m.states[k]).prop(\"checked\",m.states[k]).on(\"change\",function(){if(!m.isInitializing){var b=a(this).attr(\"data-column\");if(!d.checkChange(c,this.checked))return this.checked=!this.checked,!1;c.selector.states[b]=this.checked,d.updateCols(c,e)}}).change()))},checkChange:function(a,b){for(var c=a.widgetOptions,d=c.columnSelector_maxVisible,e=c.columnSelector_minVisible,f=a.selector.states,g=f.length,h=0;g-- >=0;)f[g]&&h++;return!(b&null!==d&&h>=d||!b&&null!==e&&h<=e)},setupBreakpoints:function(b,e){var f=b.selector;e.columnSelector_mediaquery&&(f.lastIndex=-1,d.updateBreakpoints(b,e),b.$table.off(\"updateAll\"+c).on(\"updateAll\"+c,function(){d.setupSelector(b,e),d.setupBreakpoints(b,e),d.updateBreakpoints(b,e),d.updateCols(b,e)})),f.$container.length&&(e.columnSelector_mediaquery&&(f.$auto=a(e.columnSelector_layout.replace(/\\{name\\}/g,e.columnSelector_mediaqueryName)).prependTo(f.$container),f.$auto.find(\"input\").add(f.$auto.filter(\"input\")).attr(\"data-column\",\"auto\").prop(\"checked\",f.auto).toggleClass(e.columnSelector_cssChecked,f.auto).on(\"change\",function(){d.updateAuto(b,e,a(this))}).change()),b.$table.off(\"update\"+c).on(\"update\"+c,function(){d.updateCols(b,e)}))},updateAuto:function(b,c,e){var f=b.selector;f.auto=e.prop(\"checked\")||!1,a.each(f.$checkbox,function(a,b){b&&(b[0].disabled=f.auto,f.$wrapper[a].toggleClass(\"disabled\",f.auto))}),c.columnSelector_mediaquery&&d.updateBreakpoints(b,c),d.updateCols(b,c),b.selector.$popup&&b.selector.$popup.find(\".tablesorter-column-selector\").html(f.$container.html()).find(\"input\").each(function(){var b=a(this).attr(\"data-column\");a(this).prop(\"checked\",\"auto\"===b?f.auto:f.states[b])}),d.saveValues(b,c),d.adjustColspans(b,c),f.auto&&b.$table.triggerHandler(c.columnSelector_updated)},addSelectors:function(a,b){var c=[],d=\" col:nth-child(\"+b+\")\";return c.push(a+d+\",\"+a+\"_extra_table\"+d),d=' tr:not(.hasSpan) th[data-column=\"'+(b-1)+'\"]',c.push(a+d+\",\"+a+\"_extra_table\"+d),d=\" tr:not(.hasSpan) td:nth-child(\"+b+\")\",c.push(a+d+\",\"+a+\"_extra_table\"+d),d=\" tr td:not(\"+a+'HasSpan)[data-column=\"'+(b-1)+'\"]',c.push(a+d+\",\"+a+\"_extra_table\"+d),c},updateBreakpoints:function(c,e){var f,g,h,i,j=[],k=c.selector,l=c.namespace+\"columnselector\",m=[],n=\"\";if(e.columnSelector_mediaquery&&!k.auto)return k.$breakpoints.prop(\"disabled\",!0),void k.$style.prop(\"disabled\",!1);if(e.columnSelector_mediaqueryHidden)for(h=0;h<c.columns;h++)g=b.getColumnData(c.table,c.headers,h),j[h+1]=\"false\"===b.getData(c.$headerIndexed[h],g,\"columnSelector\"),j[h+1]&&(m=m.concat(d.addSelectors(l,h+1)));for(f=0;f<e.columnSelector_maxPriorities;f++)i=[],c.$headers.filter(\"[\"+e.columnSelector_priority+\"=\"+(f+1)+\"]\").each(function(){h=parseInt(a(this).attr(\"data-column\"),10)+1,j[h]||(i=i.concat(d.addSelectors(l,h)))}),i.length&&(m=m.concat(i),n+=d.queryBreak.replace(/\\[size\\]/g,e.columnSelector_breakpoints[f]).replace(/\\[columns\\]/g,i.join(\",\")));k.$style&&k.$style.prop(\"disabled\",!0),m.length&&k.$breakpoints.prop(\"disabled\",!1).text(d.queryAll.replace(/\\[columns\\]/g,m.join(\",\"))+n)},updateCols:function(b,c){if(!(c.columnSelector_mediaquery&&b.selector.auto||b.selector.isInitializing)){var e,f=b.selector,g=[],h=b.namespace+\"columnselector\";f.$container.find(\"input[data-column]\").filter('[data-column!=\"auto\"]').each(function(){this.checked||(e=parseInt(a(this).attr(\"data-column\"),10)+1,g=g.concat(d.addSelectors(h,e))),a(this).toggleClass(c.columnSelector_cssChecked,this.checked)}),c.columnSelector_mediaquery&&f.$breakpoints.prop(\"disabled\",!0),f.$style&&f.$style.prop(\"disabled\",!1).text(g.length?g.join(\",\")+\" { display: none; }\":\"\"),d.saveValues(b,c),d.adjustColspans(b,c),b.$table.triggerHandler(c.columnSelector_updated)}},setUpColspan:function(c,e){var f,g,h,i=a(window),j=!1,k=c.$table.add(a(c.namespace+\"_extra_table\")).children().children(\"tr\").children(\"th, td\"),l=k.length;for(f=0;f<l;f++)g=k[f].colSpan,g>1&&(j=!0,k.eq(f).addClass(c.namespace.slice(1)+\"columnselectorHasSpan\").attr(\"data-col-span\",g),b.computeColumnIndex(k.eq(f).parent().addClass(\"hasSpan\")));j&&e.columnSelector_mediaquery&&(h=c.namespace+\"columnselector\",i.off(h).on(\"resize\"+h,b.window_resize).on(\"resizeEnd\"+h,function(){i.off(\"resize\"+h,b.window_resize),d.adjustColspans(c,e),i.on(\"resize\"+h,b.window_resize)}))},adjustColspans:function(b,c){var d,e,f,g,h,i,j=b.selector,k=c.filter_filteredRow||\"filtered\",l=c.columnSelector_mediaquery&&j.auto,m=b.$table.children(\"thead, tfoot\").children().children().add(a(b.namespace+\"_extra_table\").children(\"thead, tfoot\").children().children()),n=m.length;for(d=0;d<n;d++)if(i=m.eq(d),f=parseInt(i.attr(\"data-column\"),10)||i[0].cellIndex,g=parseInt(i.attr(\"data-col-span\"),10)||1,h=f+g,g>1){for(e=f;e<h;e++)(!l&&j.states[e]===!1||l&&b.$headerIndexed[e]&&!b.$headerIndexed[e].is(\":visible\"))&&g--;g?i.removeClass(k)[0].colSpan=g:i.addClass(k)}else\"undefined\"!=typeof j.states[f]&&null!==j.states[f]&&i.toggleClass(k,!j.states[f])},saveValues:function(a,c){if(c.columnSelector_saveColumns&&b.storage){var d=a.selector;b.storage(a.$table[0],\"tablesorter-columnSelector-auto\",{auto:d.auto}),b.storage(a.$table[0],\"tablesorter-columnSelector\",d.states)}},attachTo:function(b,c){b=a(b)[0];var e,f,g,h=b.config,i=a(c);i.length&&h&&(i.find(\".tablesorter-column-selector\").length||i.append('<span class=\"tablesorter-column-selector\"></span>'),e=h.selector,f=h.widgetOptions,i.find(\".tablesorter-column-selector\").html(e.$container.html()).find(\"input\").each(function(){var b=a(this).attr(\"data-column\"),c=\"auto\"===b?e.auto:e.states[b];a(this).toggleClass(f.columnSelector_cssChecked,c).prop(\"checked\",c)}),e.$popup=i.on(\"change\",\"input\",function(){if(!e.isInitializing){if(!d.checkChange(h,this.checked))return this.checked=!this.checked,!1;g=a(this).toggleClass(f.columnSelector_cssChecked,this.checked).attr(\"data-column\"),e.$container.find('input[data-column=\"'+g+'\"]').prop(\"checked\",this.checked).trigger(\"change\")}}))}};b.window_resize=function(){b.timer_resize&&clearTimeout(b.timer_resize),b.timer_resize=setTimeout(function(){a(window).trigger(\"resizeEnd\")},250)},b.addWidget({id:\"columnSelector\",priority:10,options:{columnSelector_container:null,columnSelector_columns:{},columnSelector_saveColumns:!0,columnSelector_layout:'<label><input type=\"checkbox\">{name}</label>',columnSelector_layoutCustomizer:null,columnSelector_name:\"data-selector-name\",columnSelector_mediaquery:!0,columnSelector_mediaqueryName:\"Auto: \",columnSelector_mediaqueryState:!0,columnSelector_mediaqueryHidden:!1,columnSelector_maxVisible:null,columnSelector_minVisible:null,columnSelector_breakpoints:[\"20em\",\"30em\",\"40em\",\"50em\",\"60em\",\"70em\"],columnSelector_maxPriorities:6,columnSelector_priority:\"data-priority\",columnSelector_cssChecked:\"checked\",columnSelector_updated:\"columnUpdate\"},init:function(a,b,c,e){d.init(a,c,e)},remove:function(b,d,e,f){var g=d.selector;g&&g.$container.empty(),!f&&g&&(g.$popup&&g.$popup.empty(),g.$style.remove(),g.$breakpoints.remove(),a(d.namespace+\"columnselectorHasSpan\").removeClass(e.filter_filteredRow||\"filtered\"),d.$table.off(\"updateAll\"+c+\" update\"+c))}})}(jQuery);"]}