{"version":3,"sources":["webpack:///./node_modules/datatables.net/js/jquery.dataTables.js","webpack:///./node_modules/datatables.net-responsive-bs4/js/responsive.bootstrap4.js","webpack:///./node_modules/datatables.net-bs4/js/dataTables.bootstrap4.js","webpack:///./node_modules/datatables.net-responsive/js/dataTables.responsive.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","factory","$","window","document","undefined","_ext","_Api2","_api_register","_api_registerPlural","DataTable","selector","options","this","sSelector","oOpts","api","_","rows","data","traditional","_fnSettingsFromNode","iApiIndex","fnAddData","redraw","Array","isArray","isPlainObject","add","row","draw","flatten","toArray","fnAdjustColumnSizing","bRedraw","columns","adjust","settings","scroll","oScroll","sX","sY","_fnScrollDraw","fnClearTable","clear","fnClose","nTr","child","hide","fnDeleteRow","target","callback","aoData","remove","call","fnDestroy","destroy","fnDraw","complete","fnFilter","sInput","iColumn","bRegex","bSmart","bShowGlobal","bCaseInsensitive","search","column","fnGetData","src","col","type","nodeName","toLowerCase","cell","fnGetNodes","iRow","node","nodes","fnGetPosition","toUpperCase","index","columnVisible","fnIsOpen","isShown","fnOpen","mHtml","sClass","show","fnPageChange","mAction","page","fnSetColumnVis","iCol","bShow","visible","fnSettings","fnSort","aaSort","order","fnSortListener","nNode","fnCallback","listener","fnUpdate","mData","mRow","bAction","fnVersionCheck","_that","emptyInit","len","length","fn","oApi","internal","ext","_fnExternApiFunc","each","iLen","oInit","_fnExtend","i","sId","getAttribute","bInitHandedOff","defaults","$this","_fnCompatOpts","_fnCompatCols","_fnCamelToHungarian","extend","allSettings","s","nTable","nTHead","parentNode","nTFoot","bRetrieve","bDestroy","oInstance","_fnLog","sTableId","id","splice","_unique","oSettings","models","style","width","push","dataTable","_fnLanguageCompat","oLanguage","aLengthMenu","iDisplayLength","_fnMap","oFeatures","_fnCallbackReg","fnDrawCallback","fnServerParams","fnStateSaveParams","fnStateLoadParams","fnStateLoaded","fnRowCallback","fnCreatedRow","fnHeaderCallback","fnFooterCallback","fnInitComplete","fnPreDrawCallback","rowIdFn","_fnGetObjectDataFn","rowId","_fnBrowserDetect","oClasses","classes","addClass","sTable","iInitDisplayStart","iDisplayStart","_iDisplayStart","iDeferLoading","bDeferLoading","tmp","_iRecordsDisplay","_iRecordsTotal","sUrl","ajax","dataType","url","success","json","_fnCallbackFire","_fnInitialise","error","asStripeClasses","sStripeOdd","sStripeEven","stripeClasses","rowOne","children","find","eq","inArray","map","el","hasClass","removeClass","join","asDestroyStripes","slice","aoColumnsInit","anThs","nThead","getElementsByTagName","_fnDetectHeader","aoHeader","_fnGetUniqueThs","aoColumns","_fnAddColumn","_fnApplyColumnDefs","aoColumnDefs","oDef","_fnColumnOptions","a","name","sort","filter","features","loadedInit","aaSorting","sorting","asSorting","_fnSortingClasses","bSort","bSorted","aSort","_fnSortFlatten","sortedColumns","val","dir","_fnSortAria","_fnDataSource","bDeferRender","captions","_captionSide","css","thead","appendTo","tbody","insertAfter","nTBody","tfoot","sNoFooter","aoFooter","aaData","_fnAddData","_fnAddTr","aiDisplay","aiDisplayMaster","bInitialised","_fnSaveState","bStateSave","_fnLoadState","_re_dic","_re_new_lines","_re_html","_re_date","_re_escape_regex","RegExp","_re_formatted_numeric","_empty","d","_intVal","integer","parseInt","isNaN","isFinite","_numToDecimal","num","decimalPoint","_fnEscapeRegex","replace","_isNumber","formatted","strType","parseFloat","_htmlNumeric","_isHtml","_stripHtml","_pluck","prop","prop2","out","ien","_pluck_order","_range","start","end","_removeEmpty","sorted","last","_areAllUnique","j","k","again","_includes","indexOf","arg","Object","toString","includes","String","trim","_fnHungarianMap","o","match","newKey","key","_hungarianMap","user","force","hungarianKey","charAt","lang","defaultDecimal","sDecimal","_addNumericSort","zeroRecords","sZeroRecords","sEmptyTable","sLoadingRecords","sInfoThousands","sThousands","decimal","util","throttle","freq","timer","frequency","that","now","Date","args","arguments","clearTimeout","setTimeout","apply","escapeRegex","set","source","meta","setData","b","arrayNotation","funcNotation","innerSrc","_fnSplitObjNotation","aLast","Error","__reArray","__reFn","jLen","get","t","fetchData","substring","_fnCompatMap","knew","old","init","sScrollX","scrollX","searchCols","aoSearchCols","oSearch","dataSort","aDataSort","__browser","browser","n","position","top","left","scrollLeft","height","overflow","append","outer","inner","barWidth","offsetWidth","clientWidth","bScrollOversize","bScrollbarLeft","Math","round","offset","bBounding","getBoundingClientRect","oBrowser","iBarWidth","_fnReduce","inc","value","isSet","hasOwnProperty","nTh","oDefaults","oCol","oColumn","createElement","sTitle","innerHTML","idx","aoPreSearchCols","oOptions","th","sWidthOrig","attr","mDataProp","sType","_sManualType","className","origClass","iDataSort","mDataSrc","mRender","attrTest","_bAttrSrc","_setter","rowData","innerData","fnSetData","_fnSetObjectDataFn","_rowReadObject","bSortable","sSortableNone","bAsc","bDesc","sSortingClass","sSortableAsc","sSortingClassJUI","sSortJUIAscAllowed","sSortableDesc","sSortJUIDescAllowed","sSortable","sSortJUI","_fnAdjustColumnSizing","bAutoWidth","_fnCalculateColumnWidths","sWidth","_fnVisibleToColumnIndex","iMatch","aiVis","_fnGetColumns","_fnColumnIndexToVisible","iPos","_fnVisbleColumns","vis","bVisible","sParam","_fnColumnTypes","jen","ken","detectedType","cache","types","detect","_fnGetCellData","aoColDefs","aoCols","kLen","def","aTargets","targets","aDataIn","anTds","oData","oRow","_aData","aIds","_fnCreateTr","trs","_fnGetRowElements","cells","_fnNodeToColumnIndex","anCells","rowIdx","colIdx","iDraw","defaultContent","sDefaultContent","cellData","iDrawError","fomatters","_fnSetCellData","str","_fnGetDataMaster","_fnClearTable","_fnDeleteIndex","iTarget","iTargetIndex","_fnInvalidate","cellWrite","childNodes","removeChild","firstChild","_aSortData","_aFilterData","cols","_fnRowAttributes","contents","tds","td","objectRead","setter","cellProcess","nextSibling","rowNode","nTrIn","nTd","create","_DT_RowIndex","sCellType","_DT_CellIndex","appendChild","fnCreatedCell","tr","DT_RowClass","split","__rowc","concat","DT_RowAttr","DT_RowData","_fnBuildHead","createHeader","iTabIndex","_fnSortAttachListener","html","_fnRenderer","sHeaderTH","sFooterTH","nTf","_fnDrawHead","aoSource","bIncludeHidden","nLocalTr","iRowspan","iColspan","aoLocal","aApplied","iColumns","_fnDraw","ajaxComplete","bServerSide","fnRecordsDisplay","_fnStart","aPreDraw","anRows","iRowCount","iStripes","oLang","iDisplayEnd","fnDisplayEnd","bDrawing","_fnProcessingDisplay","bDestroying","_fnAjaxUpdate","iStart","iEnd","iDataIndex","nRow","sStripe","_sRowStripe","sZero","fnRecordsTotal","sRowEmpty","body","detach","bFiltered","_fnReDraw","holdPosition","bFilter","_fnSort","_fnFilterComplete","oPreviousSearch","_drawHold","_fnAddOptionsHtml","table","holding","insertBefore","insert","sWrapper","nHolding","nTableWrapper","nTableReinsertBefore","featureNode","cOption","nNewNode","cNext","sAttr","aDom","sDom","sJUIHeader","sJUIFooter","aSplit","substr","parent","bPaginate","bLengthChange","_fnFeatureHtmlLength","_fnFeatureHtmlFilter","bProcessing","_fnFeatureHtmlProcessing","_fnFeatureHtmlTable","bInfo","_fnFeatureHtmlInfo","_fnFeatureHtmlPaginate","feature","aoFeatures","cFeature","fnInit","aanFeatures","replaceWith","aLayout","nCell","l","iColShifted","bUnique","nTrs","fnShiftCol","nHeader","aReturn","unique","bSortCellsTop","_fnBuildAjax","rbracket","ajaxData","instance","status","jqXHR","_fnAjaxDataSrc","sError","newData","baseAjax","sServerMethod","xhr","_error","thrown","ret","readyState","oAjaxData","fnServerData","sAjaxSource","_fnAjaxParameters","_fnAjaxUpdateDraw","dataProp","columnSearch","columnCount","preSearch","preColSearch","displayStart","displayLength","_iDisplayLength","param","sSearch","regex","sName","searchable","bSearchable","orderable","legacy","compat","modern","recordsTotal","recordsFiltered","_bInitComplete","_fnInitComplete","write","dataSrc","sAjaxDataProp","tableId","language","previousSearch","input","sFilterInput","f","sFilter","searchFn","event","searchDelay","jqFilter","sSearchPlaceholder","on","_fnThrottle","e","keyCode","ev","activeElement","oInput","iForce","oPrevSearch","aoPrevSearch","fnSaveFilter","oFilter","fnRegex","bEscapeRegex","_fnFilter","_fnFilterColumn","_fnFilterCustom","filters","displayRows","merge","searchStr","smart","caseInsensitive","display","rpSearch","_fnFilterCreateSearch","test","invalidated","prevSearch","displayMaster","filtered","_fnFilterData","_sFilterRow","word","m","__filter_div","__filter_div_textContent","textContent","filterData","wasInvalidated","innerText","_fnSearchToCamel","_fnSearchToHung","tid","sInfo","aoDrawCallback","_fnUpdateInfo","max","total","sInfoEmpty","sInfoFiltered","_fnInfoMacros","sInfoPostFix","fnInfoCallback","formatter","fnFormatNumber","all","ceil","iAjaxStart","deferLoading","_fnStringToCss","aData","_fnLengthChange","_fnLengthOverflow","menu","d2","lengths","select","sLengthSelect","Option","div","sLength","sLengthMenu","outerHTML","sPaginationType","plugin","pager","sPaging","p","visRecords","pages","buttons","_fnPageChange","action","records","floor","changed","r","sProcessing","scrollY","caption","captionSide","headerClone","cloneNode","footerClone","footer","_div","size","scroller","sScrollWrapper","sScrollHead","border","sScrollHeadInner","sXInner","removeAttr","sScrollBody","sScrollFoot","sScrollFootInner","scrollHead","scrollBody","scrollFoot","bCollapse","nScrollHead","nScrollBody","nScrollFoot","headerTrgEls","footerTrgEls","headerSrcEls","footerSrcEls","headerCopy","footerCopy","correction","sanityWidth","scrollXInner","divHeader","divHeaderStyle","divHeaderInner","divHeaderInnerStyle","divHeaderTable","divBodyEl","divBody","divBodyStyle","divFooterInner","divFooterTable","header","tableEl","tableStyle","ie67","headerWidths","footerWidths","headerContent","footerContent","zeroOut","nSizer","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","scrollBarVis","scrollHeight","clientHeight","clone","prependTo","_fnApplyToChildren","outerWidth","offsetHeight","getComputedStyle","nToSize","iOuterWidth","bScrolling","padding","trigger","scrollTop","an1","an2","nNode1","nNode2","nodeType","__re_html_remove","columnIdx","visibleColumns","headerCells","tableWidthAttr","tableContainer","userInputs","styleWidth","_fnConvertToWidth","tmpTable","margin","_fnGetWidestNode","sContentPadding","holder","right","bounding","_reszEvt","bindResize","sInstance","_fnGetMaxLenString","maxIdx","srcCol","fixed","aaSortingFixed","fixedObj","nestedSort","pre","post","_idx","sortCol","aiOrig","oExtSort","formatters","_fnSortData","x","y","dataA","dataB","label","nextSort","oAria","ariaTitle","removeAttribute","setAttribute","sSortAscending","sSortDescending","_fnSortListener","nextSortIdx","next","bSortMulti","sortIdx","attachTo","_fnBindAction","shiftKey","oldSort","aLastSort","sortClass","sSortColumn","bSortClasses","customData","customSort","sSortDataType","_bLoadingState","state","time","oSavedState","fnStateSaveCallback","fnStateLoadCallback","_fnImplementState","Api","abStateLoad","duration","iStateDuration","oLoadedState","level","msg","tn","console","log","sErrMode","errMode","alert","mappedName","extender","breakRefs","which","preventDefault","sStore","callbackArr","eventName","reverse","Event","result","renderer","host","__apiStruct","__arrayProto","context","ctxSettings","mixed","jq","tables","_toSettings","opts","any","count","ctx","alwaysNew","items","item","apiInst","_selector_row_indexes","apiSelector","lastIndexOf","pluck","pop","reduce","reduceRight","shift","to$","toJQuery","unshift","scope","__dt_wrapper","struct","methodScoping","struc","methodExt","propExt","register","method","heir","registerPlural","pluralName","singularName","__table_selector","paging","info","__reload","one","abort","resetPaging","_selector_run","selectFn","res","selectorType","_selector_opts","_selector_first","inst","displayFiltered","displayFilteredMap","sel","selInt","cellIdx","closest","rowObj","__row_selector","hash","thatIdx","loopRow","loopCells","newRows","modRows","idFn","ids","_detailsShow","childRows","loaded","every","__details_state","__details_remove","_details","__details_display","__details_events","off","drawEvent","_child_obj","klass","addRow","created","colSpan","__details_add","_child_mth","__re_column_selector","__columnData","r1","r2","names","visColumns","jqResult","__column_selector","calc","__setColumnVis","__cell_selector","allCells","_flatten","fnSelector","rowSelector","columnSelector","internalOpts","cellsNoOpts","selected","caseInsen","versionCheck","version","iThis","iThat","aThis","aThat","isDataTable","fnIsDataTable","is","head","foot","fnTables","camelToHungarian","jqRows","jqTable","jqTbody","jqWrapper","orig","removedMethod","sDestroyWidth","arg1","arg2","arg3","arg4","token","plural","resolved","toFormat","JSON","parse","sessionStorage","localStorage","getItem","location","pathname","setItem","stringify","paginate","min","builder","pageButton","oJUIClasses","sVersion","afnFiltering","aTypes","ofnSearch","oSort","afnSortData","oStdClasses","oPagination","extPagination","_numbers","numbers","numbers_length","half","DT_el","simple","full","simple_numbers","full_numbers","first_last_numbers","btnDisplay","btnClass","activeEl","oPaginate","aria","counter","attach","container","button","tabIndex","disabledClass","sPageButtonDisabled","clickHandler","sFirst","sPrevious","sNext","sLast","sPageButtonActive","sPageButton","empty","parsed","string","__numericReplace","decimalPlace","re1","re2","Infinity","ts","sSortAsc","sSortDesc","jqueryui","sSortJUIWrapper","sSortIcon","sSortJUIAsc","sSortJUIDesc","__htmlEscapeEntities","__mld","dt","momentFn","luxonFn","dateFn","moment","luxon","__mlWarning","__mldObj","format","locale","utc","isValid","DateTime","fromFormat","fromISO","setLocale","__mlHelper","localeString","from","to","typeName","valueOf","local","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","__thousands","__decimal","Intl","NumberFormat","formatToParts","datetime","render","date","number","thousands","precision","prefix","postfix","negative","flo","toFixed","abs","intPart","floatPart","text","_fnNodeToDataIndex","_fnCalculateEnd","dataTableSettings","dataTableExt","_display","Responsive","_original","modal","_modal","update","dom","bootstrap","currentTarget","current","responsive","details","c","_constructor","dtPrivateSettings","oldWindowWidth","innerWidth","_responsive","_resize","_setColumnVis","breakpoints","_classLogic","_resizeAuto","_detailsInit","_timer","_redrawChildren","curr","rowIds","_detailsDisplay","_controlClass","namespace","_columnsVisiblity","breakpoint","priority","auto","minWidth","includeIn","requiredWidth","scrolling","bar","usedWidth","control","showControl","never","responsivePriority","dataPriority","operator","matched","_find","classNames","brokenPoint","re","columnsVis","firstVisible","_detailsObj","triggerHandler","_tabIndexes","click","targetIdx","dtCol","columnIndex","orthogonal","hidden","rowIndex","title","forceRedraw","oldVis","collapsedClass","toggleClass","recordsDisplay","isEmptyObject","_childNodeStore","_childNodesRestore","clonedTable","clonedHeader","clonedBody","clonedFooter","footerCells","inserted","_responsiveOnlyHidden","v","showHide","indexes","removeData","childRow","childRowImmediate","hasHidden","close","stopPropagation","prepend","parentChildren","listHiddenNodes","ul","found","_childNodes","listHidden","tableAll","tableClass","li"],"mappings":"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","file":"js/1-14f7d0845dd9c7e917c7.chunk.js","sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*! DataTables 1.12.1\n * ©2008-2022 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @description Paginate, search and order HTML tables\n * @version 1.12.1\n * @author SpryMedia Ltd\n * @contact www.datatables.net\n * @copyright SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n * MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n(function (factory) {\n \"use strict\";\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], function ($) {\n return factory($, window, document);\n });\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n // CommonJS\n module.exports = function (root, $) {\n if (!root) {\n // CommonJS environments without a window global must pass a\n // root. This will give an error otherwise\n root = window;\n }\n\n if (!$) {\n $ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window\n require('jquery') : require('jquery')(root);\n }\n\n return factory($, root, root.document);\n };\n } else {\n // Browser\n window.DataTable = factory(jQuery, window, document);\n }\n})(function ($, window, document, undefined) {\n \"use strict\";\n\n var DataTable = function DataTable(selector, options) {\n // When creating with `new`, create a new DataTable, returning the API instance\n if (this instanceof DataTable) {\n return $(selector).DataTable(options);\n } else {\n // Argument switching\n options = selector;\n }\n /**\n * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n * return the resulting jQuery object.\n * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n * criterion (\"applied\") or all TR elements (i.e. no filter).\n * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n * Can be either 'current', whereby the current sorting of the table is used, or\n * 'original' whereby the original order the data was read into the table is used.\n * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n * 'current' and filter is 'applied', regardless of what they might be given as.\n * @returns {object} jQuery object, filtered by the given selector.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Highlight every second row\n * oTable.$('tr:odd').css('backgroundColor', 'blue');\n * } );\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Filter to rows with 'Webkit' in them, add a background colour and then\n * // remove the filter, thus highlighting the 'Webkit' rows only.\n * oTable.fnFilter('Webkit');\n * oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n * oTable.fnFilter('');\n * } );\n */\n\n\n this.$ = function (sSelector, oOpts) {\n return this.api(true).$(sSelector, oOpts);\n };\n /**\n * Almost identical to $ in operation, but in this case returns the data for the matched\n * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n * rather than any descendants, so the data can be obtained for the row/cell. If matching\n * rows are found, the data returned is the original data array/object that was used to\n * create the row (or a generated array if from a DOM source).\n *\n * This method is often useful in-combination with $ where both functions are given the\n * same parameters and the array indexes will match identically.\n * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n * @param {string} [oOpts.filter=none] Select elements that meet the current filter\n * criterion (\"applied\") or all elements (i.e. no filter).\n * @param {string} [oOpts.order=current] Order of the data in the processed array.\n * Can be either 'current', whereby the current sorting of the table is used, or\n * 'original' whereby the original order the data was read into the table is used.\n * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n * 'current' and filter is 'applied', regardless of what they might be given as.\n * @returns {array} Data for the matched elements. If any elements, as a result of the\n * selector, were not TR, TD or TH elements in the DataTable, they will have a null\n * entry in the array.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Get the data from the first row in the table\n * var data = oTable._('tr:first');\n *\n * // Do something useful with the data\n * alert( \"First cell is: \"+data[0] );\n * } );\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Filter to 'Webkit' and get all data for\n * oTable.fnFilter('Webkit');\n * var data = oTable._('tr', {\"search\": \"applied\"});\n *\n * // Do something with the data\n * alert( data.length+\" rows matched the search\" );\n * } );\n */\n\n\n this._ = function (sSelector, oOpts) {\n return this.api(true).rows(sSelector, oOpts).data();\n };\n /**\n * Create a DataTables Api instance, with the currently selected tables for\n * the Api's context.\n * @param {boolean} [traditional=false] Set the API instance's context to be\n * only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n * used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n * or if all tables captured in the jQuery object should be used.\n * @return {DataTables.Api}\n */\n\n\n this.api = function (traditional) {\n return traditional ? new _Api2(_fnSettingsFromNode(this[_ext.iApiIndex])) : new _Api2(this);\n };\n /**\n * Add a single new row or multiple rows of data to the table. Please note\n * that this is suitable for client-side processing only - if you are using\n * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n * must add it to the data source, i.e. the server-side, through an Ajax call.\n * @param {array|object} data The data to be added to the table. This can be:\n * \n * @param {bool} [redraw=true] redraw the table or not\n * @returns {array} An array of integers, representing the list of indexes in\n * aoData ({@link DataTable.models.oSettings}) that have been added to\n * the table.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * // Global var for counter\n * var giCount = 2;\n *\n * $(document).ready(function() {\n * $('#example').dataTable();\n * } );\n *\n * function fnClickAddRow() {\n * $('#example').dataTable().fnAddData( [\n * giCount+\".1\",\n * giCount+\".2\",\n * giCount+\".3\",\n * giCount+\".4\" ]\n * );\n *\n * giCount++;\n * }\n */\n\n\n this.fnAddData = function (data, redraw) {\n var api = this.api(true);\n /* Check if we want to add multiple rows or not */\n\n var rows = Array.isArray(data) && (Array.isArray(data[0]) || $.isPlainObject(data[0])) ? api.rows.add(data) : api.row.add(data);\n\n if (redraw === undefined || redraw) {\n api.draw();\n }\n\n return rows.flatten().toArray();\n };\n /**\n * This function will make DataTables recalculate the column sizes, based on the data\n * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n * through the sWidth parameter). This can be useful when the width of the table's\n * parent element changes (for example a window resize).\n * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable( {\n * \"sScrollY\": \"200px\",\n * \"bPaginate\": false\n * } );\n *\n * $(window).on('resize', function () {\n * oTable.fnAdjustColumnSizing();\n * } );\n * } );\n */\n\n\n this.fnAdjustColumnSizing = function (bRedraw) {\n var api = this.api(true).columns.adjust();\n var settings = api.settings()[0];\n var scroll = settings.oScroll;\n\n if (bRedraw === undefined || bRedraw) {\n api.draw(false);\n } else if (scroll.sX !== \"\" || scroll.sY !== \"\") {\n /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n _fnScrollDraw(settings);\n }\n };\n /**\n * Quickly and simply clear a table\n * @param {bool} [bRedraw=true] redraw the table or not\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n * oTable.fnClearTable();\n * } );\n */\n\n\n this.fnClearTable = function (bRedraw) {\n var api = this.api(true).clear();\n\n if (bRedraw === undefined || bRedraw) {\n api.draw();\n }\n };\n /**\n * The exact opposite of 'opening' a row, this function will close any rows which\n * are currently 'open'.\n * @param {node} nTr the table row to 'close'\n * @returns {int} 0 on success, or 1 if failed (can't find the row)\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable;\n *\n * // 'open' an information row when a row is clicked on\n * $('#example tbody tr').click( function () {\n * if ( oTable.fnIsOpen(this) ) {\n * oTable.fnClose( this );\n * } else {\n * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n * }\n * } );\n *\n * oTable = $('#example').dataTable();\n * } );\n */\n\n\n this.fnClose = function (nTr) {\n this.api(true).row(nTr).child.hide();\n };\n /**\n * Remove a row for the table\n * @param {mixed} target The index of the row from aoData to be deleted, or\n * the TR element you want to delete\n * @param {function|null} [callBack] Callback function\n * @param {bool} [redraw=true] Redraw the table or not\n * @returns {array} The row that was deleted\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Immediately remove the first row\n * oTable.fnDeleteRow( 0 );\n * } );\n */\n\n\n this.fnDeleteRow = function (target, callback, redraw) {\n var api = this.api(true);\n var rows = api.rows(target);\n var settings = rows.settings()[0];\n var data = settings.aoData[rows[0][0]];\n rows.remove();\n\n if (callback) {\n callback.call(this, settings, data);\n }\n\n if (redraw === undefined || redraw) {\n api.draw();\n }\n\n return data;\n };\n /**\n * Restore the table to it's original state in the DOM by removing all of DataTables\n * enhancements, alterations to the DOM structure of the table and event listeners.\n * @param {boolean} [remove=false] Completely remove the table from the DOM\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * // This example is fairly pointless in reality, but shows how fnDestroy can be used\n * var oTable = $('#example').dataTable();\n * oTable.fnDestroy();\n * } );\n */\n\n\n this.fnDestroy = function (remove) {\n this.api(true).destroy(remove);\n };\n /**\n * Redraw the table\n * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n * oTable.fnDraw();\n * } );\n */\n\n\n this.fnDraw = function (complete) {\n // Note that this isn't an exact match to the old call to _fnDraw - it takes\n // into account the new data, but can hold position.\n this.api(true).draw(complete);\n };\n /**\n * Filter the input based on data\n * @param {string} sInput String to filter the table on\n * @param {int|null} [iColumn] Column to limit filtering to\n * @param {bool} [bRegex=false] Treat as regular expression or not\n * @param {bool} [bSmart=true] Perform smart filtering or not\n * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Sometime later - filter...\n * oTable.fnFilter( 'test string' );\n * } );\n */\n\n\n this.fnFilter = function (sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive) {\n var api = this.api(true);\n\n if (iColumn === null || iColumn === undefined) {\n api.search(sInput, bRegex, bSmart, bCaseInsensitive);\n } else {\n api.column(iColumn).search(sInput, bRegex, bSmart, bCaseInsensitive);\n }\n\n api.draw();\n };\n /**\n * Get the data for the whole table, an individual row or an individual cell based on the\n * provided parameters.\n * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n * a TR node then the data source for the whole row will be returned. If given as a\n * TD/TH cell node then iCol will be automatically calculated and the data for the\n * cell returned. If given as an integer, then this is treated as the aoData internal\n * data index for the row (see fnGetPosition) and the data for that row used.\n * @param {int} [col] Optional column index that you want the data of.\n * @returns {array|object|string} If mRow is undefined, then the data for all rows is\n * returned. If mRow is defined, just data for that row, and is iCol is\n * defined, only data for the designated cell is returned.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * // Row data\n * $(document).ready(function() {\n * oTable = $('#example').dataTable();\n *\n * oTable.$('tr').click( function () {\n * var data = oTable.fnGetData( this );\n * // ... do something with the array / object of data for the row\n * } );\n * } );\n *\n * @example\n * // Individual cell data\n * $(document).ready(function() {\n * oTable = $('#example').dataTable();\n *\n * oTable.$('td').click( function () {\n * var sData = oTable.fnGetData( this );\n * alert( 'The cell clicked on had the value of '+sData );\n * } );\n * } );\n */\n\n\n this.fnGetData = function (src, col) {\n var api = this.api(true);\n\n if (src !== undefined) {\n var type = src.nodeName ? src.nodeName.toLowerCase() : '';\n return col !== undefined || type == 'td' || type == 'th' ? api.cell(src, col).data() : api.row(src).data() || null;\n }\n\n return api.data().toArray();\n };\n /**\n * Get an array of the TR nodes that are used in the table's body. Note that you will\n * typically want to use the '$' API method in preference to this as it is more\n * flexible.\n * @param {int} [iRow] Optional row index for the TR element you want\n * @returns {array|node} If iRow is undefined, returns an array of all TR elements\n * in the table's body, or iRow is defined, just the TR element requested.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Get the nodes from the table\n * var nNodes = oTable.fnGetNodes( );\n * } );\n */\n\n\n this.fnGetNodes = function (iRow) {\n var api = this.api(true);\n return iRow !== undefined ? api.row(iRow).node() : api.rows().nodes().flatten().toArray();\n };\n /**\n * Get the array indexes of a particular cell from it's DOM element\n * and column index including hidden columns\n * @param {node} node this can either be a TR, TD or TH in the table's body\n * @returns {int} If nNode is given as a TR, then a single index is returned, or\n * if given as a cell, an array of [row index, column index (visible),\n * column index (all)] is given.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * $('#example tbody td').click( function () {\n * // Get the position of the current data from the node\n * var aPos = oTable.fnGetPosition( this );\n *\n * // Get the data array for this row\n * var aData = oTable.fnGetData( aPos[0] );\n *\n * // Update the data array and return the value\n * aData[ aPos[1] ] = 'clicked';\n * this.innerHTML = 'clicked';\n * } );\n *\n * // Init DataTables\n * oTable = $('#example').dataTable();\n * } );\n */\n\n\n this.fnGetPosition = function (node) {\n var api = this.api(true);\n var nodeName = node.nodeName.toUpperCase();\n\n if (nodeName == 'TR') {\n return api.row(node).index();\n } else if (nodeName == 'TD' || nodeName == 'TH') {\n var cell = api.cell(node).index();\n return [cell.row, cell.columnVisible, cell.column];\n }\n\n return null;\n };\n /**\n * Check to see if a row is 'open' or not.\n * @param {node} nTr the table row to check\n * @returns {boolean} true if the row is currently open, false otherwise\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable;\n *\n * // 'open' an information row when a row is clicked on\n * $('#example tbody tr').click( function () {\n * if ( oTable.fnIsOpen(this) ) {\n * oTable.fnClose( this );\n * } else {\n * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n * }\n * } );\n *\n * oTable = $('#example').dataTable();\n * } );\n */\n\n\n this.fnIsOpen = function (nTr) {\n return this.api(true).row(nTr).child.isShown();\n };\n /**\n * This function will place a new row directly after a row which is currently\n * on display on the page, with the HTML contents that is passed into the\n * function. This can be used, for example, to ask for confirmation that a\n * particular record should be deleted.\n * @param {node} nTr The table row to 'open'\n * @param {string|node|jQuery} mHtml The HTML to put into the row\n * @param {string} sClass Class to give the new TD cell\n * @returns {node} The row opened. Note that if the table row passed in as the\n * first parameter, is not found in the table, this method will silently\n * return.\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable;\n *\n * // 'open' an information row when a row is clicked on\n * $('#example tbody tr').click( function () {\n * if ( oTable.fnIsOpen(this) ) {\n * oTable.fnClose( this );\n * } else {\n * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n * }\n * } );\n *\n * oTable = $('#example').dataTable();\n * } );\n */\n\n\n this.fnOpen = function (nTr, mHtml, sClass) {\n return this.api(true).row(nTr).child(mHtml, sClass).show().child()[0];\n };\n /**\n * Change the pagination - provides the internal logic for pagination in a simple API\n * function. With this function you can have a DataTables table go to the next,\n * previous, first or last pages.\n * @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n * or page number to jump to (integer), note that page 0 is the first page.\n * @param {bool} [bRedraw=true] Redraw the table or not\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n * oTable.fnPageChange( 'next' );\n * } );\n */\n\n\n this.fnPageChange = function (mAction, bRedraw) {\n var api = this.api(true).page(mAction);\n\n if (bRedraw === undefined || bRedraw) {\n api.draw(false);\n }\n };\n /**\n * Show a particular column\n * @param {int} iCol The column whose display should be changed\n * @param {bool} bShow Show (true) or hide (false) the column\n * @param {bool} [bRedraw=true] Redraw the table or not\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Hide the second column after initialisation\n * oTable.fnSetColumnVis( 1, false );\n * } );\n */\n\n\n this.fnSetColumnVis = function (iCol, bShow, bRedraw) {\n var api = this.api(true).column(iCol).visible(bShow);\n\n if (bRedraw === undefined || bRedraw) {\n api.columns.adjust().draw();\n }\n };\n /**\n * Get the settings for a particular table for external manipulation\n * @returns {object} DataTables settings object. See\n * {@link DataTable.models.oSettings}\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n * var oSettings = oTable.fnSettings();\n *\n * // Show an example parameter from the settings\n * alert( oSettings._iDisplayStart );\n * } );\n */\n\n\n this.fnSettings = function () {\n return _fnSettingsFromNode(this[_ext.iApiIndex]);\n };\n /**\n * Sort the table by a particular column\n * @param {int} iCol the data index to sort on. Note that this will not match the\n * 'display index' if you have hidden data entries\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Sort immediately with columns 0 and 1\n * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n * } );\n */\n\n\n this.fnSort = function (aaSort) {\n this.api(true).order(aaSort).draw();\n };\n /**\n * Attach a sort listener to an element for a given column\n * @param {node} nNode the element to attach the sort listener to\n * @param {int} iColumn the column that a click on this node will sort on\n * @param {function} [fnCallback] callback function when sort is run\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n *\n * // Sort on column 1, when 'sorter' is clicked on\n * oTable.fnSortListener( document.getElementById('sorter'), 1 );\n * } );\n */\n\n\n this.fnSortListener = function (nNode, iColumn, fnCallback) {\n this.api(true).order.listener(nNode, iColumn, fnCallback);\n };\n /**\n * Update a table cell or row - this method will accept either a single value to\n * update the cell with, an array of values with one element for each column or\n * an object in the same format as the original data source. The function is\n * self-referencing in order to make the multi column updates easier.\n * @param {object|array|string} mData Data to update the cell/row with\n * @param {node|int} mRow TR element you want to update or the aoData index\n * @param {int} [iColumn] The column to update, give as null or undefined to\n * update a whole row.\n * @param {bool} [bRedraw=true] Redraw the table or not\n * @param {bool} [bAction=true] Perform pre-draw actions or not\n * @returns {int} 0 on success, 1 on error\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n * } );\n */\n\n\n this.fnUpdate = function (mData, mRow, iColumn, bRedraw, bAction) {\n var api = this.api(true);\n\n if (iColumn === undefined || iColumn === null) {\n api.row(mRow).data(mData);\n } else {\n api.cell(mRow, iColumn).data(mData);\n }\n\n if (bAction === undefined || bAction) {\n api.columns.adjust();\n }\n\n if (bRedraw === undefined || bRedraw) {\n api.draw();\n }\n\n return 0;\n };\n /**\n * Provide a common method for plug-ins to check the version of DataTables being used, in order\n * to ensure compatibility.\n * @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n * formats \"X\" and \"X.Y\" are also acceptable.\n * @returns {boolean} true if this version of DataTables is greater or equal to the required\n * version, or false if this version of DataTales is not suitable\n * @method\n * @dtopt API\n * @deprecated Since v1.10\n *\n * @example\n * $(document).ready(function() {\n * var oTable = $('#example').dataTable();\n * alert( oTable.fnVersionCheck( '1.9.0' ) );\n * } );\n */\n\n\n this.fnVersionCheck = _ext.fnVersionCheck;\n\n var _that = this;\n\n var emptyInit = options === undefined;\n var len = this.length;\n\n if (emptyInit) {\n options = {};\n }\n\n this.oApi = this.internal = _ext.internal; // Extend with old style plug-in API methods\n\n for (var fn in DataTable.ext.internal) {\n if (fn) {\n this[fn] = _fnExternApiFunc(fn);\n }\n }\n\n this.each(function () {\n // For each initialisation we want to give it a clean initialisation\n // object that can be bashed around\n var o = {};\n var oInit = len > 1 ? // optimisation for single table case\n _fnExtend(o, options, true) : options;\n /*global oInit,_that,emptyInit*/\n\n var i = 0,\n iLen,\n j,\n jLen,\n k,\n kLen;\n var sId = this.getAttribute('id');\n var bInitHandedOff = false;\n var defaults = DataTable.defaults;\n var $this = $(this);\n /* Sanity check */\n\n if (this.nodeName.toLowerCase() != 'table') {\n _fnLog(null, 0, 'Non-table node initialisation (' + this.nodeName + ')', 2);\n\n return;\n }\n /* Backwards compatibility for the defaults */\n\n\n _fnCompatOpts(defaults);\n\n _fnCompatCols(defaults.column);\n /* Convert the camel-case defaults to Hungarian */\n\n\n _fnCamelToHungarian(defaults, defaults, true);\n\n _fnCamelToHungarian(defaults.column, defaults.column, true);\n /* Setting up the initialisation object */\n\n\n _fnCamelToHungarian(defaults, $.extend(oInit, $this.data()), true);\n /* Check to see if we are re-initialising a table */\n\n\n var allSettings = DataTable.settings;\n\n for (i = 0, iLen = allSettings.length; i < iLen; i++) {\n var s = allSettings[i];\n /* Base check on table node */\n\n if (s.nTable == this || s.nTHead && s.nTHead.parentNode == this || s.nTFoot && s.nTFoot.parentNode == this) {\n var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\n if (emptyInit || bRetrieve) {\n return s.oInstance;\n } else if (bDestroy) {\n s.oInstance.fnDestroy();\n break;\n } else {\n _fnLog(s, 0, 'Cannot reinitialise DataTable', 3);\n\n return;\n }\n }\n /* If the element we are initialising has the same ID as a table which was previously\n * initialised, but the table nodes don't match (from before) then we destroy the old\n * instance by simply deleting it. This is under the assumption that the table has been\n * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n */\n\n\n if (s.sTableId == this.id) {\n allSettings.splice(i, 1);\n break;\n }\n }\n /* Ensure the table has an ID - required for accessibility */\n\n\n if (sId === null || sId === \"\") {\n sId = \"DataTables_Table_\" + DataTable.ext._unique++;\n this.id = sId;\n }\n /* Create the settings object for this table and set some of the default parameters */\n\n\n var oSettings = $.extend(true, {}, DataTable.models.oSettings, {\n \"sDestroyWidth\": $this[0].style.width,\n \"sInstance\": sId,\n \"sTableId\": sId\n });\n oSettings.nTable = this;\n oSettings.oApi = _that.internal;\n oSettings.oInit = oInit;\n allSettings.push(oSettings); // Need to add the instance after the instance after the settings object has been added\n // to the settings array, so we can self reference the table instance if more than one\n\n oSettings.oInstance = _that.length === 1 ? _that : $this.dataTable(); // Backwards compatibility, before we apply all the defaults\n\n _fnCompatOpts(oInit);\n\n _fnLanguageCompat(oInit.oLanguage); // If the length menu is given, but the init display length is not, use the length menu\n\n\n if (oInit.aLengthMenu && !oInit.iDisplayLength) {\n oInit.iDisplayLength = Array.isArray(oInit.aLengthMenu[0]) ? oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n } // Apply the defaults and init options to make a single init object will all\n // options defined from defaults and instance options.\n\n\n oInit = _fnExtend($.extend(true, {}, defaults), oInit); // Map the initialisation options onto the settings object\n\n _fnMap(oSettings.oFeatures, oInit, [\"bPaginate\", \"bLengthChange\", \"bFilter\", \"bSort\", \"bSortMulti\", \"bInfo\", \"bProcessing\", \"bAutoWidth\", \"bSortClasses\", \"bServerSide\", \"bDeferRender\"]);\n\n _fnMap(oSettings, oInit, [\"asStripeClasses\", \"ajax\", \"fnServerData\", \"fnFormatNumber\", \"sServerMethod\", \"aaSorting\", \"aaSortingFixed\", \"aLengthMenu\", \"sPaginationType\", \"sAjaxSource\", \"sAjaxDataProp\", \"iStateDuration\", \"sDom\", \"bSortCellsTop\", \"iTabIndex\", \"fnStateLoadCallback\", \"fnStateSaveCallback\", \"renderer\", \"searchDelay\", \"rowId\", [\"iCookieDuration\", \"iStateDuration\"], // backwards compat\n [\"oSearch\", \"oPreviousSearch\"], [\"aoSearchCols\", \"aoPreSearchCols\"], [\"iDisplayLength\", \"_iDisplayLength\"]]);\n\n _fnMap(oSettings.oScroll, oInit, [[\"sScrollX\", \"sX\"], [\"sScrollXInner\", \"sXInner\"], [\"sScrollY\", \"sY\"], [\"bScrollCollapse\", \"bCollapse\"]]);\n\n _fnMap(oSettings.oLanguage, oInit, \"fnInfoCallback\");\n /* Callback functions which are array driven */\n\n\n _fnCallbackReg(oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user');\n\n _fnCallbackReg(oSettings, 'aoServerParams', oInit.fnServerParams, 'user');\n\n _fnCallbackReg(oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user');\n\n _fnCallbackReg(oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user');\n\n _fnCallbackReg(oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user');\n\n _fnCallbackReg(oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user');\n\n _fnCallbackReg(oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user');\n\n _fnCallbackReg(oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user');\n\n _fnCallbackReg(oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user');\n\n _fnCallbackReg(oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user');\n\n _fnCallbackReg(oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user');\n\n oSettings.rowIdFn = _fnGetObjectDataFn(oInit.rowId);\n /* Browser support detection */\n\n _fnBrowserDetect(oSettings);\n\n var oClasses = oSettings.oClasses;\n $.extend(oClasses, DataTable.ext.classes, oInit.oClasses);\n $this.addClass(oClasses.sTable);\n\n if (oSettings.iInitDisplayStart === undefined) {\n /* Display start point, taking into account the save saving */\n oSettings.iInitDisplayStart = oInit.iDisplayStart;\n oSettings._iDisplayStart = oInit.iDisplayStart;\n }\n\n if (oInit.iDeferLoading !== null) {\n oSettings.bDeferLoading = true;\n var tmp = Array.isArray(oInit.iDeferLoading);\n oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n }\n /* Language definitions */\n\n\n var oLanguage = oSettings.oLanguage;\n $.extend(true, oLanguage, oInit.oLanguage);\n\n if (oLanguage.sUrl) {\n /* Get the language definitions from a file - because this Ajax call makes the language\n * get async to the remainder of this function we use bInitHandedOff to indicate that\n * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n */\n $.ajax({\n dataType: 'json',\n url: oLanguage.sUrl,\n success: function success(json) {\n _fnCamelToHungarian(defaults.oLanguage, json);\n\n _fnLanguageCompat(json);\n\n $.extend(true, oLanguage, json, oSettings.oInit.oLanguage);\n\n _fnCallbackFire(oSettings, null, 'i18n', [oSettings]);\n\n _fnInitialise(oSettings);\n },\n error: function error() {\n // Error occurred loading language file, continue on as best we can\n _fnInitialise(oSettings);\n }\n });\n bInitHandedOff = true;\n } else {\n _fnCallbackFire(oSettings, null, 'i18n', [oSettings]);\n }\n /*\n * Stripes\n */\n\n\n if (oInit.asStripeClasses === null) {\n oSettings.asStripeClasses = [oClasses.sStripeOdd, oClasses.sStripeEven];\n }\n /* Remove row stripe classes if they are already on the table row */\n\n\n var stripeClasses = oSettings.asStripeClasses;\n var rowOne = $this.children('tbody').find('tr').eq(0);\n\n if ($.inArray(true, $.map(stripeClasses, function (el, i) {\n return rowOne.hasClass(el);\n })) !== -1) {\n $('tbody tr', this).removeClass(stripeClasses.join(' '));\n oSettings.asDestroyStripes = stripeClasses.slice();\n }\n /*\n * Columns\n * See if we should load columns automatically or use defined ones\n */\n\n\n var anThs = [];\n var aoColumnsInit;\n var nThead = this.getElementsByTagName('thead');\n\n if (nThead.length !== 0) {\n _fnDetectHeader(oSettings.aoHeader, nThead[0]);\n\n anThs = _fnGetUniqueThs(oSettings);\n }\n /* If not given a column array, generate one with nulls */\n\n\n if (oInit.aoColumns === null) {\n aoColumnsInit = [];\n\n for (i = 0, iLen = anThs.length; i < iLen; i++) {\n aoColumnsInit.push(null);\n }\n } else {\n aoColumnsInit = oInit.aoColumns;\n }\n /* Add the columns */\n\n\n for (i = 0, iLen = aoColumnsInit.length; i < iLen; i++) {\n _fnAddColumn(oSettings, anThs ? anThs[i] : null);\n }\n /* Apply the column definitions */\n\n\n _fnApplyColumnDefs(oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n _fnColumnOptions(oSettings, iCol, oDef);\n });\n /* HTML5 attribute detection - build an mData object automatically if the\n * attributes are found\n */\n\n\n if (rowOne.length) {\n var a = function a(cell, name) {\n return cell.getAttribute('data-' + name) !== null ? name : null;\n };\n\n $(rowOne[0]).children('th, td').each(function (i, cell) {\n var col = oSettings.aoColumns[i];\n\n if (col.mData === i) {\n var sort = a(cell, 'sort') || a(cell, 'order');\n var filter = a(cell, 'filter') || a(cell, 'search');\n\n if (sort !== null || filter !== null) {\n col.mData = {\n _: i + '.display',\n sort: sort !== null ? i + '.@data-' + sort : undefined,\n type: sort !== null ? i + '.@data-' + sort : undefined,\n filter: filter !== null ? i + '.@data-' + filter : undefined\n };\n\n _fnColumnOptions(oSettings, i);\n }\n }\n });\n }\n\n var features = oSettings.oFeatures;\n\n var loadedInit = function loadedInit() {\n /*\n * Sorting\n * @todo For modularisation (1.11) this needs to do into a sort start up handler\n */\n // If aaSorting is not defined, then we use the first indicator in asSorting\n // in case that has been altered, so the default sort reflects that option\n if (oInit.aaSorting === undefined) {\n var sorting = oSettings.aaSorting;\n\n for (i = 0, iLen = sorting.length; i < iLen; i++) {\n sorting[i][1] = oSettings.aoColumns[i].asSorting[0];\n }\n }\n /* Do a first pass on the sorting classes (allows any size changes to be taken into\n * account, and also will apply sorting disabled classes if disabled\n */\n\n\n _fnSortingClasses(oSettings);\n\n if (features.bSort) {\n _fnCallbackReg(oSettings, 'aoDrawCallback', function () {\n if (oSettings.bSorted) {\n var aSort = _fnSortFlatten(oSettings);\n\n var sortedColumns = {};\n $.each(aSort, function (i, val) {\n sortedColumns[val.src] = val.dir;\n });\n\n _fnCallbackFire(oSettings, null, 'order', [oSettings, aSort, sortedColumns]);\n\n _fnSortAria(oSettings);\n }\n });\n }\n\n _fnCallbackReg(oSettings, 'aoDrawCallback', function () {\n if (oSettings.bSorted || _fnDataSource(oSettings) === 'ssp' || features.bDeferRender) {\n _fnSortingClasses(oSettings);\n }\n }, 'sc');\n /*\n * Final init\n * Cache the header, body and footer as required, creating them if needed\n */\n // Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\n\n var captions = $this.children('caption').each(function () {\n this._captionSide = $(this).css('caption-side');\n });\n var thead = $this.children('thead');\n\n if (thead.length === 0) {\n thead = $('').appendTo($this);\n }\n\n oSettings.nTHead = thead[0];\n var tbody = $this.children('tbody');\n\n if (tbody.length === 0) {\n tbody = $('').insertAfter(thead);\n }\n\n oSettings.nTBody = tbody[0];\n var tfoot = $this.children('tfoot');\n\n if (tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\")) {\n // If we are a scrolling table, and no footer has been given, then we need to create\n // a tfoot element for the caption element to be appended to\n tfoot = $('').appendTo($this);\n }\n\n if (tfoot.length === 0 || tfoot.children().length === 0) {\n $this.addClass(oClasses.sNoFooter);\n } else if (tfoot.length > 0) {\n oSettings.nTFoot = tfoot[0];\n\n _fnDetectHeader(oSettings.aoFooter, oSettings.nTFoot);\n }\n /* Check if there is data passing into the constructor */\n\n\n if (oInit.aaData) {\n for (i = 0; i < oInit.aaData.length; i++) {\n _fnAddData(oSettings, oInit.aaData[i]);\n }\n } else if (oSettings.bDeferLoading || _fnDataSource(oSettings) == 'dom') {\n /* Grab the data from the page - only do this when deferred loading or no Ajax\n * source since there is no point in reading the DOM data if we are then going\n * to replace it with Ajax data\n */\n _fnAddTr(oSettings, $(oSettings.nTBody).children('tr'));\n }\n /* Copy the data index array */\n\n\n oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n /* Initialisation complete - table can be drawn */\n\n oSettings.bInitialised = true;\n /* Check if we need to initialise the table (it might not have been handed off to the\n * language processor)\n */\n\n if (bInitHandedOff === false) {\n _fnInitialise(oSettings);\n }\n };\n /* Must be done after everything which can be overridden by the state saving! */\n\n\n _fnCallbackReg(oSettings, 'aoDrawCallback', _fnSaveState, 'state_save');\n\n if (oInit.bStateSave) {\n features.bStateSave = true;\n\n _fnLoadState(oSettings, oInit, loadedInit);\n } else {\n loadedInit();\n }\n });\n _that = null;\n return this;\n };\n /*\n * It is useful to have variables which are scoped locally so only the\n * DataTables functions can access them and they don't leak into global space.\n * At the same time these functions are often useful over multiple files in the\n * core and API, so we list, or at least document, all variables which are used\n * by DataTables as private variables here. This also ensures that there is no\n * clashing of variable names and that they can easily referenced for reuse.\n */\n // Defined else where\n // _selector_run\n // _selector_opts\n // _selector_first\n // _selector_row_indexes\n\n\n var _ext; // DataTable.ext\n\n\n var _Api2; // DataTable.Api\n\n\n var _api_register; // DataTable.Api.register\n\n\n var _api_registerPlural; // DataTable.Api.registerPlural\n\n\n var _re_dic = {};\n var _re_new_lines = /[\\r\\n\\u2028]/g;\n var _re_html = /<.*?>/g; // This is not strict ISO8601 - Date.parse() is quite lax, although\n // implementations differ between browsers.\n\n var _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/; // Escape regular expression special characters\n\n var _re_escape_regex = new RegExp('(\\\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-'].join('|\\\\') + ')', 'g'); // http://en.wikipedia.org/wiki/Foreign_exchange_market\n // - \\u20BD - Russian ruble.\n // - \\u20a9 - South Korean Won\n // - \\u20BA - Turkish Lira\n // - \\u20B9 - Indian Rupee\n // - R - Brazil (R$) and South Africa\n // - fr - Swiss Franc\n // - kr - Swedish krona, Norwegian krone and Danish krone\n // - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n // - Ƀ - Bitcoin\n // - Ξ - Ethereum\n // standards as thousands separators.\n\n\n var _re_formatted_numeric = /['\\u00A0,$£€¥%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfkɃΞ]/gi;\n\n var _empty = function _empty(d) {\n return !d || d === true || d === '-' ? true : false;\n };\n\n var _intVal = function _intVal(s) {\n var integer = parseInt(s, 10);\n return !isNaN(integer) && isFinite(s) ? integer : null;\n }; // Convert from a formatted number with characters other than `.` as the\n // decimal place, to a Javascript number\n\n\n var _numToDecimal = function _numToDecimal(num, decimalPoint) {\n // Cache created regular expressions for speed as this function is called often\n if (!_re_dic[decimalPoint]) {\n _re_dic[decimalPoint] = new RegExp(_fnEscapeRegex(decimalPoint), 'g');\n }\n\n return typeof num === 'string' && decimalPoint !== '.' ? num.replace(/\\./g, '').replace(_re_dic[decimalPoint], '.') : num;\n };\n\n var _isNumber = function _isNumber(d, decimalPoint, formatted) {\n var strType = typeof d === 'string'; // If empty return immediately so there must be a number if it is a\n // formatted string (this stops the string \"k\", or \"kr\", etc being detected\n // as a formatted number for currency\n\n if (_empty(d)) {\n return true;\n }\n\n if (decimalPoint && strType) {\n d = _numToDecimal(d, decimalPoint);\n }\n\n if (formatted && strType) {\n d = d.replace(_re_formatted_numeric, '');\n }\n\n return !isNaN(parseFloat(d)) && isFinite(d);\n }; // A string without HTML in it can be considered to be HTML still\n\n\n var _isHtml = function _isHtml(d) {\n return _empty(d) || typeof d === 'string';\n };\n\n var _htmlNumeric = function _htmlNumeric(d, decimalPoint, formatted) {\n if (_empty(d)) {\n return true;\n }\n\n var html = _isHtml(d);\n\n return !html ? null : _isNumber(_stripHtml(d), decimalPoint, formatted) ? true : null;\n };\n\n var _pluck = function _pluck(a, prop, prop2) {\n var out = [];\n var i = 0,\n ien = a.length; // Could have the test in the loop for slightly smaller code, but speed\n // is essential here\n\n if (prop2 !== undefined) {\n for (; i < ien; i++) {\n if (a[i] && a[i][prop]) {\n out.push(a[i][prop][prop2]);\n }\n }\n } else {\n for (; i < ien; i++) {\n if (a[i]) {\n out.push(a[i][prop]);\n }\n }\n }\n\n return out;\n }; // Basically the same as _pluck, but rather than looping over `a` we use `order`\n // as the indexes to pick from `a`\n\n\n var _pluck_order = function _pluck_order(a, order, prop, prop2) {\n var out = [];\n var i = 0,\n ien = order.length; // Could have the test in the loop for slightly smaller code, but speed\n // is essential here\n\n if (prop2 !== undefined) {\n for (; i < ien; i++) {\n if (a[order[i]][prop]) {\n out.push(a[order[i]][prop][prop2]);\n }\n }\n } else {\n for (; i < ien; i++) {\n out.push(a[order[i]][prop]);\n }\n }\n\n return out;\n };\n\n var _range = function _range(len, start) {\n var out = [];\n var end;\n\n if (start === undefined) {\n start = 0;\n end = len;\n } else {\n end = start;\n start = len;\n }\n\n for (var i = start; i < end; i++) {\n out.push(i);\n }\n\n return out;\n };\n\n var _removeEmpty = function _removeEmpty(a) {\n var out = [];\n\n for (var i = 0, ien = a.length; i < ien; i++) {\n if (a[i]) {\n // careful - will remove all falsy values!\n out.push(a[i]);\n }\n }\n\n return out;\n };\n\n var _stripHtml = function _stripHtml(d) {\n return d.replace(_re_html, '');\n };\n /**\n * Determine if all values in the array are unique. This means we can short\n * cut the _unique method at the cost of a single loop. A sorted array is used\n * to easily check the values.\n *\n * @param {array} src Source array\n * @return {boolean} true if all unique, false otherwise\n * @ignore\n */\n\n\n var _areAllUnique = function _areAllUnique(src) {\n if (src.length < 2) {\n return true;\n }\n\n var sorted = src.slice().sort();\n var last = sorted[0];\n\n for (var i = 1, ien = sorted.length; i < ien; i++) {\n if (sorted[i] === last) {\n return false;\n }\n\n last = sorted[i];\n }\n\n return true;\n };\n /**\n * Find the unique elements in a source array.\n *\n * @param {array} src Source array\n * @return {array} Array of unique items\n * @ignore\n */\n\n\n var _unique = function _unique(src) {\n if (_areAllUnique(src)) {\n return src.slice();\n } // A faster unique method is to use object keys to identify used values,\n // but this doesn't work with arrays or objects, which we must also\n // consider. See jsperf.com/compare-array-unique-versions/4 for more\n // information.\n\n\n var out = [],\n val,\n i,\n ien = src.length,\n j,\n k = 0;\n\n again: for (i = 0; i < ien; i++) {\n val = src[i];\n\n for (j = 0; j < k; j++) {\n if (out[j] === val) {\n continue again;\n }\n }\n\n out.push(val);\n k++;\n }\n\n return out;\n }; // Surprisingly this is faster than [].concat.apply\n // https://jsperf.com/flatten-an-array-loop-vs-reduce/2\n\n\n var _flatten = function _flatten(out, val) {\n if (Array.isArray(val)) {\n for (var i = 0; i < val.length; i++) {\n _flatten(out, val[i]);\n }\n } else {\n out.push(val);\n }\n\n return out;\n };\n\n var _includes = function _includes(search, start) {\n if (start === undefined) {\n start = 0;\n }\n\n return this.indexOf(search, start) !== -1;\n }; // Array.isArray polyfill.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n\n\n if (!Array.isArray) {\n Array.isArray = function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n };\n }\n\n if (!Array.prototype.includes) {\n Array.prototype.includes = _includes;\n } // .trim() polyfill\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim\n\n\n if (!String.prototype.trim) {\n String.prototype.trim = function () {\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n }\n\n if (!String.prototype.includes) {\n String.prototype.includes = _includes;\n }\n /**\n * DataTables utility methods\n * \n * This namespace provides helper methods that DataTables uses internally to\n * create a DataTable, but which are not exclusively used only for DataTables.\n * These methods can be used by extension authors to save the duplication of\n * code.\n *\n * @namespace\n */\n\n\n DataTable.util = {\n /**\n * Throttle the calls to a function. Arguments and context are maintained\n * for the throttled function.\n *\n * @param {function} fn Function to be called\n * @param {integer} freq Call frequency in mS\n * @return {function} Wrapped function\n */\n throttle: function throttle(fn, freq) {\n var frequency = freq !== undefined ? freq : 200,\n last,\n timer;\n return function () {\n var that = this,\n now = +new Date(),\n args = arguments;\n\n if (last && now < last + frequency) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = undefined;\n fn.apply(that, args);\n }, frequency);\n } else {\n last = now;\n fn.apply(that, args);\n }\n };\n },\n\n /**\n * Escape a string such that it can be used in a regular expression\n *\n * @param {string} val string to escape\n * @returns {string} escaped string\n */\n escapeRegex: function escapeRegex(val) {\n return val.replace(_re_escape_regex, '\\\\$1');\n },\n\n /**\n * Create a function that will write to a nested object or array\n * @param {*} source JSON notation string\n * @returns Write function\n */\n set: function set(source) {\n if ($.isPlainObject(source)) {\n /* Unlike get, only the underscore (global) option is used for for\n * setting data since we don't know the type here. This is why an object\n * option is not documented for `mData` (which is read/write), but it is\n * for `mRender` which is read only.\n */\n return DataTable.util.set(source._);\n } else if (source === null) {\n // Nothing to do when the data source is null\n return function () {};\n } else if (typeof source === 'function') {\n return function (data, val, meta) {\n source(data, 'set', val, meta);\n };\n } else if (typeof source === 'string' && (source.indexOf('.') !== -1 || source.indexOf('[') !== -1 || source.indexOf('(') !== -1)) {\n // Like the get, we need to get data from a nested object\n var setData = function setData(data, val, src) {\n var a = _fnSplitObjNotation(src),\n b;\n\n var aLast = a[a.length - 1];\n var arrayNotation, funcNotation, o, innerSrc;\n\n for (var i = 0, iLen = a.length - 1; i < iLen; i++) {\n // Protect against prototype pollution\n if (a[i] === '__proto__' || a[i] === 'constructor') {\n throw new Error('Cannot set prototype values');\n } // Check if we are dealing with an array notation request\n\n\n arrayNotation = a[i].match(__reArray);\n funcNotation = a[i].match(__reFn);\n\n if (arrayNotation) {\n a[i] = a[i].replace(__reArray, '');\n data[a[i]] = []; // Get the remainder of the nested object to set so we can recurse\n\n b = a.slice();\n b.splice(0, i + 1);\n innerSrc = b.join('.'); // Traverse each entry in the array setting the properties requested\n\n if (Array.isArray(val)) {\n for (var j = 0, jLen = val.length; j < jLen; j++) {\n o = {};\n setData(o, val[j], innerSrc);\n data[a[i]].push(o);\n }\n } else {\n // We've been asked to save data to an array, but it\n // isn't array data to be saved. Best that can be done\n // is to just save the value.\n data[a[i]] = val;\n } // The inner call to setData has already traversed through the remainder\n // of the source and has set the data, thus we can exit here\n\n\n return;\n } else if (funcNotation) {\n // Function call\n a[i] = a[i].replace(__reFn, '');\n data = data[a[i]](val);\n } // If the nested object doesn't currently exist - since we are\n // trying to set the value - create it\n\n\n if (data[a[i]] === null || data[a[i]] === undefined) {\n data[a[i]] = {};\n }\n\n data = data[a[i]];\n } // Last item in the input - i.e, the actual set\n\n\n if (aLast.match(__reFn)) {\n // Function call\n data = data[aLast.replace(__reFn, '')](val);\n } else {\n // If array notation is used, we just want to strip it and use the property name\n // and assign the value. If it isn't used, then we get the result we want anyway\n data[aLast.replace(__reArray, '')] = val;\n }\n };\n\n return function (data, val) {\n // meta is also passed in, but not used\n return setData(data, val, source);\n };\n } else {\n // Array or flat object mapping\n return function (data, val) {\n // meta is also passed in, but not used\n data[source] = val;\n };\n }\n },\n\n /**\n * Create a function that will read nested objects from arrays, based on JSON notation\n * @param {*} source JSON notation string\n * @returns Value read\n */\n get: function get(source) {\n if ($.isPlainObject(source)) {\n // Build an object of get functions, and wrap them in a single call\n var o = {};\n $.each(source, function (key, val) {\n if (val) {\n o[key] = DataTable.util.get(val);\n }\n });\n return function (data, type, row, meta) {\n var t = o[type] || o._;\n return t !== undefined ? t(data, type, row, meta) : data;\n };\n } else if (source === null) {\n // Give an empty string for rendering / sorting etc\n return function (data) {\n // type, row and meta also passed, but not used\n return data;\n };\n } else if (typeof source === 'function') {\n return function (data, type, row, meta) {\n return source(data, type, row, meta);\n };\n } else if (typeof source === 'string' && (source.indexOf('.') !== -1 || source.indexOf('[') !== -1 || source.indexOf('(') !== -1)) {\n /* If there is a . in the source string then the data source is in a\n * nested object so we loop over the data for each level to get the next\n * level down. On each loop we test for undefined, and if found immediately\n * return. This allows entire objects to be missing and sDefaultContent to\n * be used if defined, rather than throwing an error\n */\n var fetchData = function fetchData(data, type, src) {\n var arrayNotation, funcNotation, out, innerSrc;\n\n if (src !== \"\") {\n var a = _fnSplitObjNotation(src);\n\n for (var i = 0, iLen = a.length; i < iLen; i++) {\n // Check if we are dealing with special notation\n arrayNotation = a[i].match(__reArray);\n funcNotation = a[i].match(__reFn);\n\n if (arrayNotation) {\n // Array notation\n a[i] = a[i].replace(__reArray, ''); // Condition allows simply [] to be passed in\n\n if (a[i] !== \"\") {\n data = data[a[i]];\n }\n\n out = []; // Get the remainder of the nested object to get\n\n a.splice(0, i + 1);\n innerSrc = a.join('.'); // Traverse each entry in the array getting the properties requested\n\n if (Array.isArray(data)) {\n for (var j = 0, jLen = data.length; j < jLen; j++) {\n out.push(fetchData(data[j], type, innerSrc));\n }\n } // If a string is given in between the array notation indicators, that\n // is used to join the strings together, otherwise an array is returned\n\n\n var join = arrayNotation[0].substring(1, arrayNotation[0].length - 1);\n data = join === \"\" ? out : out.join(join); // The inner call to fetchData has already traversed through the remainder\n // of the source requested, so we exit from the loop\n\n break;\n } else if (funcNotation) {\n // Function call\n a[i] = a[i].replace(__reFn, '');\n data = data[a[i]]();\n continue;\n }\n\n if (data === null || data[a[i]] === undefined) {\n return undefined;\n }\n\n data = data[a[i]];\n }\n }\n\n return data;\n };\n\n return function (data, type) {\n // row and meta also passed, but not used\n return fetchData(data, type, source);\n };\n } else {\n // Array or flat object mapping\n return function (data, type) {\n // row and meta also passed, but not used\n return data[source];\n };\n }\n }\n };\n /**\n * Create a mapping object that allows camel case parameters to be looked up\n * for their Hungarian counterparts. The mapping is stored in a private\n * parameter called `_hungarianMap` which can be accessed on the source object.\n * @param {object} o\n * @memberof DataTable#oApi\n */\n\n function _fnHungarianMap(o) {\n var hungarian = 'a aa ai ao as b fn i m o s ',\n match,\n newKey,\n map = {};\n $.each(o, function (key, val) {\n match = key.match(/^([^A-Z]+?)([A-Z])/);\n\n if (match && hungarian.indexOf(match[1] + ' ') !== -1) {\n newKey = key.replace(match[0], match[2].toLowerCase());\n map[newKey] = key;\n\n if (match[1] === 'o') {\n _fnHungarianMap(o[key]);\n }\n }\n });\n o._hungarianMap = map;\n }\n /**\n * Convert from camel case parameters to Hungarian, based on a Hungarian map\n * created by _fnHungarianMap.\n * @param {object} src The model object which holds all parameters that can be\n * mapped.\n * @param {object} user The object to convert from camel case to Hungarian.\n * @param {boolean} force When set to `true`, properties which already have a\n * Hungarian value in the `user` object will be overwritten. Otherwise they\n * won't be.\n * @memberof DataTable#oApi\n */\n\n\n function _fnCamelToHungarian(src, user, force) {\n if (!src._hungarianMap) {\n _fnHungarianMap(src);\n }\n\n var hungarianKey;\n $.each(user, function (key, val) {\n hungarianKey = src._hungarianMap[key];\n\n if (hungarianKey !== undefined && (force || user[hungarianKey] === undefined)) {\n // For objects, we need to buzz down into the object to copy parameters\n if (hungarianKey.charAt(0) === 'o') {\n // Copy the camelCase options over to the hungarian\n if (!user[hungarianKey]) {\n user[hungarianKey] = {};\n }\n\n $.extend(true, user[hungarianKey], user[key]);\n\n _fnCamelToHungarian(src[hungarianKey], user[hungarianKey], force);\n } else {\n user[hungarianKey] = user[key];\n }\n }\n });\n }\n /**\n * Language compatibility - when certain options are given, and others aren't, we\n * need to duplicate the values over, in order to provide backwards compatibility\n * with older language files.\n * @param {object} oSettings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnLanguageCompat(lang) {\n // Note the use of the Hungarian notation for the parameters in this method as\n // this is called after the mapping of camelCase to Hungarian\n var defaults = DataTable.defaults.oLanguage; // Default mapping\n\n var defaultDecimal = defaults.sDecimal;\n\n if (defaultDecimal) {\n _addNumericSort(defaultDecimal);\n }\n\n if (lang) {\n var zeroRecords = lang.sZeroRecords; // Backwards compatibility - if there is no sEmptyTable given, then use the same as\n // sZeroRecords - assuming that is given.\n\n if (!lang.sEmptyTable && zeroRecords && defaults.sEmptyTable === \"No data available in table\") {\n _fnMap(lang, lang, 'sZeroRecords', 'sEmptyTable');\n } // Likewise with loading records\n\n\n if (!lang.sLoadingRecords && zeroRecords && defaults.sLoadingRecords === \"Loading...\") {\n _fnMap(lang, lang, 'sZeroRecords', 'sLoadingRecords');\n } // Old parameter name of the thousands separator mapped onto the new\n\n\n if (lang.sInfoThousands) {\n lang.sThousands = lang.sInfoThousands;\n }\n\n var decimal = lang.sDecimal;\n\n if (decimal && defaultDecimal !== decimal) {\n _addNumericSort(decimal);\n }\n }\n }\n /**\n * Map one parameter onto another\n * @param {object} o Object to map\n * @param {*} knew The new parameter name\n * @param {*} old The old parameter name\n */\n\n\n var _fnCompatMap = function _fnCompatMap(o, knew, old) {\n if (o[knew] !== undefined) {\n o[old] = o[knew];\n }\n };\n /**\n * Provide backwards compatibility for the main DT options. Note that the new\n * options are mapped onto the old parameters, so this is an external interface\n * change only.\n * @param {object} init Object to map\n */\n\n\n function _fnCompatOpts(init) {\n _fnCompatMap(init, 'ordering', 'bSort');\n\n _fnCompatMap(init, 'orderMulti', 'bSortMulti');\n\n _fnCompatMap(init, 'orderClasses', 'bSortClasses');\n\n _fnCompatMap(init, 'orderCellsTop', 'bSortCellsTop');\n\n _fnCompatMap(init, 'order', 'aaSorting');\n\n _fnCompatMap(init, 'orderFixed', 'aaSortingFixed');\n\n _fnCompatMap(init, 'paging', 'bPaginate');\n\n _fnCompatMap(init, 'pagingType', 'sPaginationType');\n\n _fnCompatMap(init, 'pageLength', 'iDisplayLength');\n\n _fnCompatMap(init, 'searching', 'bFilter'); // Boolean initialisation of x-scrolling\n\n\n if (typeof init.sScrollX === 'boolean') {\n init.sScrollX = init.sScrollX ? '100%' : '';\n }\n\n if (typeof init.scrollX === 'boolean') {\n init.scrollX = init.scrollX ? '100%' : '';\n } // Column search objects are in an array, so it needs to be converted\n // element by element\n\n\n var searchCols = init.aoSearchCols;\n\n if (searchCols) {\n for (var i = 0, ien = searchCols.length; i < ien; i++) {\n if (searchCols[i]) {\n _fnCamelToHungarian(DataTable.models.oSearch, searchCols[i]);\n }\n }\n }\n }\n /**\n * Provide backwards compatibility for column options. Note that the new options\n * are mapped onto the old parameters, so this is an external interface change\n * only.\n * @param {object} init Object to map\n */\n\n\n function _fnCompatCols(init) {\n _fnCompatMap(init, 'orderable', 'bSortable');\n\n _fnCompatMap(init, 'orderData', 'aDataSort');\n\n _fnCompatMap(init, 'orderSequence', 'asSorting');\n\n _fnCompatMap(init, 'orderDataType', 'sortDataType'); // orderData can be given as an integer\n\n\n var dataSort = init.aDataSort;\n\n if (typeof dataSort === 'number' && !Array.isArray(dataSort)) {\n init.aDataSort = [dataSort];\n }\n }\n /**\n * Browser feature detection for capabilities, quirks\n * @param {object} settings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnBrowserDetect(settings) {\n // We don't need to do this every time DataTables is constructed, the values\n // calculated are specific to the browser and OS configuration which we\n // don't expect to change between initialisations\n if (!DataTable.__browser) {\n var browser = {};\n DataTable.__browser = browser; // Scrolling feature / quirks detection\n\n var n = $('
').css({\n position: 'fixed',\n top: 0,\n left: $(window).scrollLeft() * -1,\n // allow for scrolling\n height: 1,\n width: 1,\n overflow: 'hidden'\n }).append($('
').css({\n position: 'absolute',\n top: 1,\n left: 1,\n width: 100,\n overflow: 'scroll'\n }).append($('
').css({\n width: '100%',\n height: 10\n }))).appendTo('body');\n var outer = n.children();\n var inner = outer.children(); // Numbers below, in order, are:\n // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n //\n // IE6 XP: 100 100 100 83\n // IE7 Vista: 100 100 100 83\n // IE 8+ Windows: 83 83 100 83\n // Evergreen Windows: 83 83 100 83\n // Evergreen Mac with scrollbars: 85 85 100 85\n // Evergreen Mac without scrollbars: 100 100 100 100\n // Get scrollbar width\n\n browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth; // IE6/7 will oversize a width 100% element inside a scrolling element, to\n // include the width of the scrollbar, while other browsers ensure the inner\n // element is contained without forcing scrolling\n\n browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; // In rtl text layout, some browsers (most, but not all) will place the\n // scrollbar on the left, rather than the right.\n\n browser.bScrollbarLeft = Math.round(inner.offset().left) !== 1; // IE8- don't provide height and width for getBoundingClientRect\n\n browser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n n.remove();\n }\n\n $.extend(settings.oBrowser, DataTable.__browser);\n settings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n }\n /**\n * Array.prototype reduce[Right] method, used for browsers which don't support\n * JS 1.6. Done this way to reduce code size, since we iterate either way\n * @param {object} settings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnReduce(that, fn, init, start, end, inc) {\n var i = start,\n value,\n isSet = false;\n\n if (init !== undefined) {\n value = init;\n isSet = true;\n }\n\n while (i !== end) {\n if (!that.hasOwnProperty(i)) {\n continue;\n }\n\n value = isSet ? fn(value, that[i], i, that) : that[i];\n isSet = true;\n i += inc;\n }\n\n return value;\n }\n /**\n * Add a column to the list used for the table with default values\n * @param {object} oSettings dataTables settings object\n * @param {node} nTh The th element for this column\n * @memberof DataTable#oApi\n */\n\n\n function _fnAddColumn(oSettings, nTh) {\n // Add column to aoColumns array\n var oDefaults = DataTable.defaults.column;\n var iCol = oSettings.aoColumns.length;\n var oCol = $.extend({}, DataTable.models.oColumn, oDefaults, {\n \"nTh\": nTh ? nTh : document.createElement('th'),\n \"sTitle\": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',\n \"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n \"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n idx: iCol\n });\n oSettings.aoColumns.push(oCol); // Add search object for column specific search. Note that the `searchCols[ iCol ]`\n // passed into extend can be undefined. This allows the user to give a default\n // with only some of the parameters defined, and also not give a default\n\n var searchCols = oSettings.aoPreSearchCols;\n searchCols[iCol] = $.extend({}, DataTable.models.oSearch, searchCols[iCol]); // Use the default column options function to initialise classes etc\n\n _fnColumnOptions(oSettings, iCol, $(nTh).data());\n }\n /**\n * Apply options for a column\n * @param {object} oSettings dataTables settings object\n * @param {int} iCol column index to consider\n * @param {object} oOptions object with sType, bVisible and bSearchable etc\n * @memberof DataTable#oApi\n */\n\n\n function _fnColumnOptions(oSettings, iCol, oOptions) {\n var oCol = oSettings.aoColumns[iCol];\n var oClasses = oSettings.oClasses;\n var th = $(oCol.nTh); // Try to get width information from the DOM. We can't get it from CSS\n // as we'd need to parse the CSS stylesheet. `width` option can override\n\n if (!oCol.sWidthOrig) {\n // Width attribute\n oCol.sWidthOrig = th.attr('width') || null; // Style attribute\n\n var t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\n if (t) {\n oCol.sWidthOrig = t[1];\n }\n }\n /* User specified column options */\n\n\n if (oOptions !== undefined && oOptions !== null) {\n // Backwards compatibility\n _fnCompatCols(oOptions); // Map camel case parameters to their Hungarian counterparts\n\n\n _fnCamelToHungarian(DataTable.defaults.column, oOptions, true);\n /* Backwards compatibility for mDataProp */\n\n\n if (oOptions.mDataProp !== undefined && !oOptions.mData) {\n oOptions.mData = oOptions.mDataProp;\n }\n\n if (oOptions.sType) {\n oCol._sManualType = oOptions.sType;\n } // `class` is a reserved word in Javascript, so we need to provide\n // the ability to use a valid name for the camel case input\n\n\n if (oOptions.className && !oOptions.sClass) {\n oOptions.sClass = oOptions.className;\n }\n\n if (oOptions.sClass) {\n th.addClass(oOptions.sClass);\n }\n\n var origClass = oCol.sClass;\n $.extend(oCol, oOptions);\n\n _fnMap(oCol, oOptions, \"sWidth\", \"sWidthOrig\"); // Merge class from previously defined classes with this one, rather than just\n // overwriting it in the extend above\n\n\n if (origClass !== oCol.sClass) {\n oCol.sClass = origClass + ' ' + oCol.sClass;\n }\n /* iDataSort to be applied (backwards compatibility), but aDataSort will take\n * priority if defined\n */\n\n\n if (oOptions.iDataSort !== undefined) {\n oCol.aDataSort = [oOptions.iDataSort];\n }\n\n _fnMap(oCol, oOptions, \"aDataSort\");\n }\n /* Cache the data get and set functions for speed */\n\n\n var mDataSrc = oCol.mData;\n\n var mData = _fnGetObjectDataFn(mDataSrc);\n\n var mRender = oCol.mRender ? _fnGetObjectDataFn(oCol.mRender) : null;\n\n var attrTest = function attrTest(src) {\n return typeof src === 'string' && src.indexOf('@') !== -1;\n };\n\n oCol._bAttrSrc = $.isPlainObject(mDataSrc) && (attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter));\n oCol._setter = null;\n\n oCol.fnGetData = function (rowData, type, meta) {\n var innerData = mData(rowData, type, undefined, meta);\n return mRender && type ? mRender(innerData, type, rowData, meta) : innerData;\n };\n\n oCol.fnSetData = function (rowData, val, meta) {\n return _fnSetObjectDataFn(mDataSrc)(rowData, val, meta);\n }; // Indicate if DataTables should read DOM data as an object or array\n // Used in _fnGetRowElements\n\n\n if (typeof mDataSrc !== 'number') {\n oSettings._rowReadObject = true;\n }\n /* Feature sorting overrides column specific when off */\n\n\n if (!oSettings.oFeatures.bSort) {\n oCol.bSortable = false;\n th.addClass(oClasses.sSortableNone); // Have to add class here as order event isn't called\n }\n /* Check that the class assignment is correct for sorting */\n\n\n var bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n var bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\n if (!oCol.bSortable || !bAsc && !bDesc) {\n oCol.sSortingClass = oClasses.sSortableNone;\n oCol.sSortingClassJUI = \"\";\n } else if (bAsc && !bDesc) {\n oCol.sSortingClass = oClasses.sSortableAsc;\n oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n } else if (!bAsc && bDesc) {\n oCol.sSortingClass = oClasses.sSortableDesc;\n oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n } else {\n oCol.sSortingClass = oClasses.sSortable;\n oCol.sSortingClassJUI = oClasses.sSortJUI;\n }\n }\n /**\n * Adjust the table column widths for new data. Note: you would probably want to\n * do a redraw after calling this function!\n * @param {object} settings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnAdjustColumnSizing(settings) {\n /* Not interested in doing column width calculation if auto-width is disabled */\n if (settings.oFeatures.bAutoWidth !== false) {\n var columns = settings.aoColumns;\n\n _fnCalculateColumnWidths(settings);\n\n for (var i = 0, iLen = columns.length; i < iLen; i++) {\n columns[i].nTh.style.width = columns[i].sWidth;\n }\n }\n\n var scroll = settings.oScroll;\n\n if (scroll.sY !== '' || scroll.sX !== '') {\n _fnScrollDraw(settings);\n }\n\n _fnCallbackFire(settings, null, 'column-sizing', [settings]);\n }\n /**\n * Convert the index of a visible column to the index in the data array (take account\n * of hidden columns)\n * @param {object} oSettings dataTables settings object\n * @param {int} iMatch Visible column index to lookup\n * @returns {int} i the data index\n * @memberof DataTable#oApi\n */\n\n\n function _fnVisibleToColumnIndex(oSettings, iMatch) {\n var aiVis = _fnGetColumns(oSettings, 'bVisible');\n\n return typeof aiVis[iMatch] === 'number' ? aiVis[iMatch] : null;\n }\n /**\n * Convert the index of an index in the data array and convert it to the visible\n * column index (take account of hidden columns)\n * @param {int} iMatch Column index to lookup\n * @param {object} oSettings dataTables settings object\n * @returns {int} i the data index\n * @memberof DataTable#oApi\n */\n\n\n function _fnColumnIndexToVisible(oSettings, iMatch) {\n var aiVis = _fnGetColumns(oSettings, 'bVisible');\n\n var iPos = $.inArray(iMatch, aiVis);\n return iPos !== -1 ? iPos : null;\n }\n /**\n * Get the number of visible columns\n * @param {object} oSettings dataTables settings object\n * @returns {int} i the number of visible columns\n * @memberof DataTable#oApi\n */\n\n\n function _fnVisbleColumns(oSettings) {\n var vis = 0; // No reduce in IE8, use a loop for now\n\n $.each(oSettings.aoColumns, function (i, col) {\n if (col.bVisible && $(col.nTh).css('display') !== 'none') {\n vis++;\n }\n });\n return vis;\n }\n /**\n * Get an array of column indexes that match a given property\n * @param {object} oSettings dataTables settings object\n * @param {string} sParam Parameter in aoColumns to look for - typically\n * bVisible or bSearchable\n * @returns {array} Array of indexes with matched properties\n * @memberof DataTable#oApi\n */\n\n\n function _fnGetColumns(oSettings, sParam) {\n var a = [];\n $.map(oSettings.aoColumns, function (val, i) {\n if (val[sParam]) {\n a.push(i);\n }\n });\n return a;\n }\n /**\n * Calculate the 'type' of a column\n * @param {object} settings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnColumnTypes(settings) {\n var columns = settings.aoColumns;\n var data = settings.aoData;\n var types = DataTable.ext.type.detect;\n var i, ien, j, jen, k, ken;\n var col, cell, detectedType, cache; // For each column, spin over the \n\n for (i = 0, ien = columns.length; i < ien; i++) {\n col = columns[i];\n cache = [];\n\n if (!col.sType && col._sManualType) {\n col.sType = col._sManualType;\n } else if (!col.sType) {\n for (j = 0, jen = types.length; j < jen; j++) {\n for (k = 0, ken = data.length; k < ken; k++) {\n // Use a cache array so we only need to get the type data\n // from the formatter once (when using multiple detectors)\n if (cache[k] === undefined) {\n cache[k] = _fnGetCellData(settings, k, i, 'type');\n }\n\n detectedType = types[j](cache[k], settings); // If null, then this type can't apply to this column, so\n // rather than testing all cells, break out. There is an\n // exception for the last type which is `html`. We need to\n // scan all rows since it is possible to mix string and HTML\n // types\n\n if (!detectedType && j !== types.length - 1) {\n break;\n } // Only a single match is needed for html type since it is\n // bottom of the pile and very similar to string - but it\n // must not be empty\n\n\n if (detectedType === 'html' && !_empty(cache[k])) {\n break;\n }\n } // Type is valid for all data points in the column - use this\n // type\n\n\n if (detectedType) {\n col.sType = detectedType;\n break;\n }\n } // Fall back - if no type was detected, always use string\n\n\n if (!col.sType) {\n col.sType = 'string';\n }\n }\n }\n }\n /**\n * Take the column definitions and static columns arrays and calculate how\n * they relate to column indexes. The callback function will then apply the\n * definition found for a column to a suitable configuration object.\n * @param {object} oSettings dataTables settings object\n * @param {array} aoColDefs The aoColumnDefs array that is to be applied\n * @param {array} aoCols The aoColumns array that defines columns individually\n * @param {function} fn Callback function - takes two parameters, the calculated\n * column index and the definition for that column.\n * @memberof DataTable#oApi\n */\n\n\n function _fnApplyColumnDefs(oSettings, aoColDefs, aoCols, fn) {\n var i, iLen, j, jLen, k, kLen, def;\n var columns = oSettings.aoColumns; // Column definitions with aTargets\n\n if (aoColDefs) {\n /* Loop over the definitions array - loop in reverse so first instance has priority */\n for (i = aoColDefs.length - 1; i >= 0; i--) {\n def = aoColDefs[i];\n /* Each definition can target multiple columns, as it is an array */\n\n var aTargets = def.target !== undefined ? def.target : def.targets !== undefined ? def.targets : def.aTargets;\n\n if (!Array.isArray(aTargets)) {\n aTargets = [aTargets];\n }\n\n for (j = 0, jLen = aTargets.length; j < jLen; j++) {\n if (typeof aTargets[j] === 'number' && aTargets[j] >= 0) {\n /* Add columns that we don't yet know about */\n while (columns.length <= aTargets[j]) {\n _fnAddColumn(oSettings);\n }\n /* Integer, basic index */\n\n\n fn(aTargets[j], def);\n } else if (typeof aTargets[j] === 'number' && aTargets[j] < 0) {\n /* Negative integer, right to left column counting */\n fn(columns.length + aTargets[j], def);\n } else if (typeof aTargets[j] === 'string') {\n /* Class name matching on TH element */\n for (k = 0, kLen = columns.length; k < kLen; k++) {\n if (aTargets[j] == \"_all\" || $(columns[k].nTh).hasClass(aTargets[j])) {\n fn(k, def);\n }\n }\n }\n }\n }\n } // Statically defined columns array\n\n\n if (aoCols) {\n for (i = 0, iLen = aoCols.length; i < iLen; i++) {\n fn(i, aoCols[i]);\n }\n }\n }\n /**\n * Add a data array to the table, creating DOM node etc. This is the parallel to\n * _fnGatherData, but for adding rows from a Javascript source, rather than a\n * DOM source.\n * @param {object} oSettings dataTables settings object\n * @param {array} aData data array to be added\n * @param {node} [nTr] TR element to add to the table - optional. If not given,\n * DataTables will create a row automatically\n * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n * if nTr is.\n * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n * @memberof DataTable#oApi\n */\n\n\n function _fnAddData(oSettings, aDataIn, nTr, anTds) {\n /* Create the object for storing information about this new row */\n var iRow = oSettings.aoData.length;\n var oData = $.extend(true, {}, DataTable.models.oRow, {\n src: nTr ? 'dom' : 'data',\n idx: iRow\n });\n oData._aData = aDataIn;\n oSettings.aoData.push(oData);\n /* Create the cells */\n\n var nTd, sThisType;\n var columns = oSettings.aoColumns; // Invalidate the column types as the new data needs to be revalidated\n\n for (var i = 0, iLen = columns.length; i < iLen; i++) {\n columns[i].sType = null;\n }\n /* Add to the display array */\n\n\n oSettings.aiDisplayMaster.push(iRow);\n var id = oSettings.rowIdFn(aDataIn);\n\n if (id !== undefined) {\n oSettings.aIds[id] = oData;\n }\n /* Create the DOM information, or register it if already present */\n\n\n if (nTr || !oSettings.oFeatures.bDeferRender) {\n _fnCreateTr(oSettings, iRow, nTr, anTds);\n }\n\n return iRow;\n }\n /**\n * Add one or more TR elements to the table. Generally we'd expect to\n * use this for reading data from a DOM sourced table, but it could be\n * used for an TR element. Note that if a TR is given, it is used (i.e.\n * it is not cloned).\n * @param {object} settings dataTables settings object\n * @param {array|node|jQuery} trs The TR element(s) to add to the table\n * @returns {array} Array of indexes for the added rows\n * @memberof DataTable#oApi\n */\n\n\n function _fnAddTr(settings, trs) {\n var row; // Allow an individual node to be passed in\n\n if (!(trs instanceof $)) {\n trs = $(trs);\n }\n\n return trs.map(function (i, el) {\n row = _fnGetRowElements(settings, el);\n return _fnAddData(settings, row.data, el, row.cells);\n });\n }\n /**\n * Take a TR element and convert it to an index in aoData\n * @param {object} oSettings dataTables settings object\n * @param {node} n the TR element to find\n * @returns {int} index if the node is found, null if not\n * @memberof DataTable#oApi\n */\n\n\n function _fnNodeToDataIndex(oSettings, n) {\n return n._DT_RowIndex !== undefined ? n._DT_RowIndex : null;\n }\n /**\n * Take a TD element and convert it into a column data index (not the visible index)\n * @param {object} oSettings dataTables settings object\n * @param {int} iRow The row number the TD/TH can be found in\n * @param {node} n The TD/TH element to find\n * @returns {int} index if the node is found, -1 if not\n * @memberof DataTable#oApi\n */\n\n\n function _fnNodeToColumnIndex(oSettings, iRow, n) {\n return $.inArray(n, oSettings.aoData[iRow].anCells);\n }\n /**\n * Get the data for a given cell from the internal cache, taking into account data mapping\n * @param {object} settings dataTables settings object\n * @param {int} rowIdx aoData row id\n * @param {int} colIdx Column index\n * @param {string} type data get type ('display', 'type' 'filter|search' 'sort|order')\n * @returns {*} Cell data\n * @memberof DataTable#oApi\n */\n\n\n function _fnGetCellData(settings, rowIdx, colIdx, type) {\n if (type === 'search') {\n type = 'filter';\n } else if (type === 'order') {\n type = 'sort';\n }\n\n var draw = settings.iDraw;\n var col = settings.aoColumns[colIdx];\n var rowData = settings.aoData[rowIdx]._aData;\n var defaultContent = col.sDefaultContent;\n var cellData = col.fnGetData(rowData, type, {\n settings: settings,\n row: rowIdx,\n col: colIdx\n });\n\n if (cellData === undefined) {\n if (settings.iDrawError != draw && defaultContent === null) {\n _fnLog(settings, 0, \"Requested unknown parameter \" + (typeof col.mData == 'function' ? '{function}' : \"'\" + col.mData + \"'\") + \" for row \" + rowIdx + \", column \" + colIdx, 4);\n\n settings.iDrawError = draw;\n }\n\n return defaultContent;\n } // When the data source is null and a specific data type is requested (i.e.\n // not the original data), we can use default column data\n\n\n if ((cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined) {\n cellData = defaultContent;\n } else if (typeof cellData === 'function') {\n // If the data source is a function, then we run it and use the return,\n // executing in the scope of the data object (for instances)\n return cellData.call(rowData);\n }\n\n if (cellData === null && type === 'display') {\n return '';\n }\n\n if (type === 'filter') {\n var fomatters = DataTable.ext.type.search;\n\n if (fomatters[col.sType]) {\n cellData = fomatters[col.sType](cellData);\n }\n }\n\n return cellData;\n }\n /**\n * Set the value for a specific cell, into the internal data cache\n * @param {object} settings dataTables settings object\n * @param {int} rowIdx aoData row id\n * @param {int} colIdx Column index\n * @param {*} val Value to set\n * @memberof DataTable#oApi\n */\n\n\n function _fnSetCellData(settings, rowIdx, colIdx, val) {\n var col = settings.aoColumns[colIdx];\n var rowData = settings.aoData[rowIdx]._aData;\n col.fnSetData(rowData, val, {\n settings: settings,\n row: rowIdx,\n col: colIdx\n });\n } // Private variable that is used to match action syntax in the data property object\n\n\n var __reArray = /\\[.*?\\]$/;\n var __reFn = /\\(\\)$/;\n /**\n * Split string on periods, taking into account escaped periods\n * @param {string} str String to split\n * @return {array} Split string\n */\n\n function _fnSplitObjNotation(str) {\n return $.map(str.match(/(\\\\.|[^\\.])+/g) || [''], function (s) {\n return s.replace(/\\\\\\./g, '.');\n });\n }\n /**\n * Return a function that can be used to get data from a source object, taking\n * into account the ability to use nested objects as a source\n * @param {string|int|function} mSource The data source for the object\n * @returns {function} Data get function\n * @memberof DataTable#oApi\n */\n\n\n var _fnGetObjectDataFn = DataTable.util.get;\n /**\n * Return a function that can be used to set data from a source object, taking\n * into account the ability to use nested objects as a source\n * @param {string|int|function} mSource The data source for the object\n * @returns {function} Data set function\n * @memberof DataTable#oApi\n */\n\n var _fnSetObjectDataFn = DataTable.util.set;\n /**\n * Return an array with the full table data\n * @param {object} oSettings dataTables settings object\n * @returns array {array} aData Master data array\n * @memberof DataTable#oApi\n */\n\n function _fnGetDataMaster(settings) {\n return _pluck(settings.aoData, '_aData');\n }\n /**\n * Nuke the table\n * @param {object} oSettings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnClearTable(settings) {\n settings.aoData.length = 0;\n settings.aiDisplayMaster.length = 0;\n settings.aiDisplay.length = 0;\n settings.aIds = {};\n }\n /**\n * Take an array of integers (index array) and remove a target integer (value - not\n * the key!)\n * @param {array} a Index array to target\n * @param {int} iTarget value to find\n * @memberof DataTable#oApi\n */\n\n\n function _fnDeleteIndex(a, iTarget, splice) {\n var iTargetIndex = -1;\n\n for (var i = 0, iLen = a.length; i < iLen; i++) {\n if (a[i] == iTarget) {\n iTargetIndex = i;\n } else if (a[i] > iTarget) {\n a[i]--;\n }\n }\n\n if (iTargetIndex != -1 && splice === undefined) {\n a.splice(iTargetIndex, 1);\n }\n }\n /**\n * Mark cached data as invalid such that a re-read of the data will occur when\n * the cached data is next requested. Also update from the data source object.\n *\n * @param {object} settings DataTables settings object\n * @param {int} rowIdx Row index to invalidate\n * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom'\n * or 'data'\n * @param {int} [colIdx] Column index to invalidate. If undefined the whole\n * row will be invalidated\n * @memberof DataTable#oApi\n *\n * @todo For the modularisation of v1.11 this will need to become a callback, so\n * the sort and filter methods can subscribe to it. That will required\n * initialisation options for sorting, which is why it is not already baked in\n */\n\n\n function _fnInvalidate(settings, rowIdx, src, colIdx) {\n var row = settings.aoData[rowIdx];\n var i, ien;\n\n var cellWrite = function cellWrite(cell, col) {\n // This is very frustrating, but in IE if you just write directly\n // to innerHTML, and elements that are overwritten are GC'ed,\n // even if there is a reference to them elsewhere\n while (cell.childNodes.length) {\n cell.removeChild(cell.firstChild);\n }\n\n cell.innerHTML = _fnGetCellData(settings, rowIdx, col, 'display');\n }; // Are we reading last data from DOM or the data object?\n\n\n if (src === 'dom' || (!src || src === 'auto') && row.src === 'dom') {\n // Read the data from the DOM\n row._aData = _fnGetRowElements(settings, row, colIdx, colIdx === undefined ? undefined : row._aData).data;\n } else {\n // Reading from data object, update the DOM\n var cells = row.anCells;\n\n if (cells) {\n if (colIdx !== undefined) {\n cellWrite(cells[colIdx], colIdx);\n } else {\n for (i = 0, ien = cells.length; i < ien; i++) {\n cellWrite(cells[i], i);\n }\n }\n }\n } // For both row and cell invalidation, the cached data for sorting and\n // filtering is nulled out\n\n\n row._aSortData = null;\n row._aFilterData = null; // Invalidate the type for a specific column (if given) or all columns since\n // the data might have changed\n\n var cols = settings.aoColumns;\n\n if (colIdx !== undefined) {\n cols[colIdx].sType = null;\n } else {\n for (i = 0, ien = cols.length; i < ien; i++) {\n cols[i].sType = null;\n } // Update DataTables special `DT_*` attributes for the row\n\n\n _fnRowAttributes(settings, row);\n }\n }\n /**\n * Build a data source object from an HTML row, reading the contents of the\n * cells that are in the row.\n *\n * @param {object} settings DataTables settings object\n * @param {node|object} TR element from which to read data or existing row\n * object from which to re-read the data from the cells\n * @param {int} [colIdx] Optional column index\n * @param {array|object} [d] Data source object. If `colIdx` is given then this\n * parameter should also be given and will be used to write the data into.\n * Only the column in question will be written\n * @returns {object} Object with two parameters: `data` the data read, in\n * document order, and `cells` and array of nodes (they can be useful to the\n * caller, so rather than needing a second traversal to get them, just return\n * them from here).\n * @memberof DataTable#oApi\n */\n\n\n function _fnGetRowElements(settings, row, colIdx, d) {\n var tds = [],\n td = row.firstChild,\n name,\n col,\n o,\n i = 0,\n contents,\n columns = settings.aoColumns,\n objectRead = settings._rowReadObject; // Allow the data object to be passed in, or construct\n\n d = d !== undefined ? d : objectRead ? {} : [];\n\n var attr = function attr(str, td) {\n if (typeof str === 'string') {\n var idx = str.indexOf('@');\n\n if (idx !== -1) {\n var attr = str.substring(idx + 1);\n\n var setter = _fnSetObjectDataFn(str);\n\n setter(d, td.getAttribute(attr));\n }\n }\n }; // Read data from a cell and store into the data object\n\n\n var cellProcess = function cellProcess(cell) {\n if (colIdx === undefined || colIdx === i) {\n col = columns[i];\n contents = cell.innerHTML.trim();\n\n if (col && col._bAttrSrc) {\n var setter = _fnSetObjectDataFn(col.mData._);\n\n setter(d, contents);\n attr(col.mData.sort, cell);\n attr(col.mData.type, cell);\n attr(col.mData.filter, cell);\n } else {\n // Depending on the `data` option for the columns the data can\n // be read to either an object or an array.\n if (objectRead) {\n if (!col._setter) {\n // Cache the setter function\n col._setter = _fnSetObjectDataFn(col.mData);\n }\n\n col._setter(d, contents);\n } else {\n d[i] = contents;\n }\n }\n }\n\n i++;\n };\n\n if (td) {\n // `tr` element was passed in\n while (td) {\n name = td.nodeName.toUpperCase();\n\n if (name == \"TD\" || name == \"TH\") {\n cellProcess(td);\n tds.push(td);\n }\n\n td = td.nextSibling;\n }\n } else {\n // Existing row object passed in\n tds = row.anCells;\n\n for (var j = 0, jen = tds.length; j < jen; j++) {\n cellProcess(tds[j]);\n }\n } // Read the ID from the DOM if present\n\n\n var rowNode = row.firstChild ? row : row.nTr;\n\n if (rowNode) {\n var id = rowNode.getAttribute('id');\n\n if (id) {\n _fnSetObjectDataFn(settings.rowId)(d, id);\n }\n }\n\n return {\n data: d,\n cells: tds\n };\n }\n /**\n * Create a new TR element (and it's TD children) for a row\n * @param {object} oSettings dataTables settings object\n * @param {int} iRow Row to consider\n * @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n * DataTables will create a row automatically\n * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n * if nTr is.\n * @memberof DataTable#oApi\n */\n\n\n function _fnCreateTr(oSettings, iRow, nTrIn, anTds) {\n var row = oSettings.aoData[iRow],\n rowData = row._aData,\n cells = [],\n nTr,\n nTd,\n oCol,\n i,\n iLen,\n create;\n\n if (row.nTr === null) {\n nTr = nTrIn || document.createElement('tr');\n row.nTr = nTr;\n row.anCells = cells;\n /* Use a private property on the node to allow reserve mapping from the node\n * to the aoData array for fast look up\n */\n\n nTr._DT_RowIndex = iRow;\n /* Special parameters can be given by the data source to be used on the row */\n\n _fnRowAttributes(oSettings, row);\n /* Process each column */\n\n\n for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {\n oCol = oSettings.aoColumns[i];\n create = nTrIn ? false : true;\n nTd = create ? document.createElement(oCol.sCellType) : anTds[i];\n nTd._DT_CellIndex = {\n row: iRow,\n column: i\n };\n cells.push(nTd); // Need to create the HTML if new, or if a rendering function is defined\n\n if (create || (oCol.mRender || oCol.mData !== i) && (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i + '.display')) {\n nTd.innerHTML = _fnGetCellData(oSettings, iRow, i, 'display');\n }\n /* Add user defined class */\n\n\n if (oCol.sClass) {\n nTd.className += ' ' + oCol.sClass;\n } // Visibility - add or remove as required\n\n\n if (oCol.bVisible && !nTrIn) {\n nTr.appendChild(nTd);\n } else if (!oCol.bVisible && nTrIn) {\n nTd.parentNode.removeChild(nTd);\n }\n\n if (oCol.fnCreatedCell) {\n oCol.fnCreatedCell.call(oSettings.oInstance, nTd, _fnGetCellData(oSettings, iRow, i), rowData, iRow, i);\n }\n }\n\n _fnCallbackFire(oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells]);\n }\n }\n /**\n * Add attributes to a row based on the special `DT_*` parameters in a data\n * source object.\n * @param {object} settings DataTables settings object\n * @param {object} DataTables row object for the row to be modified\n * @memberof DataTable#oApi\n */\n\n\n function _fnRowAttributes(settings, row) {\n var tr = row.nTr;\n var data = row._aData;\n\n if (tr) {\n var id = settings.rowIdFn(data);\n\n if (id) {\n tr.id = id;\n }\n\n if (data.DT_RowClass) {\n // Remove any classes added by DT_RowClass before\n var a = data.DT_RowClass.split(' ');\n row.__rowc = row.__rowc ? _unique(row.__rowc.concat(a)) : a;\n $(tr).removeClass(row.__rowc.join(' ')).addClass(data.DT_RowClass);\n }\n\n if (data.DT_RowAttr) {\n $(tr).attr(data.DT_RowAttr);\n }\n\n if (data.DT_RowData) {\n $(tr).data(data.DT_RowData);\n }\n }\n }\n /**\n * Create the HTML header for the table\n * @param {object} oSettings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnBuildHead(oSettings) {\n var i, ien, cell, row, column;\n var thead = oSettings.nTHead;\n var tfoot = oSettings.nTFoot;\n var createHeader = $('th, td', thead).length === 0;\n var classes = oSettings.oClasses;\n var columns = oSettings.aoColumns;\n\n if (createHeader) {\n row = $('').appendTo(thead);\n }\n\n for (i = 0, ien = columns.length; i < ien; i++) {\n column = columns[i];\n cell = $(column.nTh).addClass(column.sClass);\n\n if (createHeader) {\n cell.appendTo(row);\n } // 1.11 move into sorting\n\n\n if (oSettings.oFeatures.bSort) {\n cell.addClass(column.sSortingClass);\n\n if (column.bSortable !== false) {\n cell.attr('tabindex', oSettings.iTabIndex).attr('aria-controls', oSettings.sTableId);\n\n _fnSortAttachListener(oSettings, column.nTh, i);\n }\n }\n\n if (column.sTitle != cell[0].innerHTML) {\n cell.html(column.sTitle);\n }\n\n _fnRenderer(oSettings, 'header')(oSettings, cell, column, classes);\n }\n\n if (createHeader) {\n _fnDetectHeader(oSettings.aoHeader, thead);\n }\n /* Deal with the footer - add classes if required */\n\n\n $(thead).children('tr').children('th, td').addClass(classes.sHeaderTH);\n $(tfoot).children('tr').children('th, td').addClass(classes.sFooterTH); // Cache the footer cells. Note that we only take the cells from the first\n // row in the footer. If there is more than one row the user wants to\n // interact with, they need to use the table().foot() method. Note also this\n // allows cells to be used for multiple columns using colspan\n\n if (tfoot !== null) {\n var cells = oSettings.aoFooter[0];\n\n for (i = 0, ien = cells.length; i < ien; i++) {\n column = columns[i];\n column.nTf = cells[i].cell;\n\n if (column.sClass) {\n $(column.nTf).addClass(column.sClass);\n }\n }\n }\n }\n /**\n * Draw the header (or footer) element based on the column visibility states. The\n * methodology here is to use the layout array from _fnDetectHeader, modified for\n * the instantaneous column visibility, to construct the new layout. The grid is\n * traversed over cell at a time in a rows x columns grid fashion, although each\n * cell insert can cover multiple elements in the grid - which is tracks using the\n * aApplied array. Cell inserts in the grid will only occur where there isn't\n * already a cell in that position.\n * @param {object} oSettings dataTables settings object\n * @param array {objects} aoSource Layout array from _fnDetectHeader\n * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n * @memberof DataTable#oApi\n */\n\n\n function _fnDrawHead(oSettings, aoSource, bIncludeHidden) {\n var i, iLen, j, jLen, k, kLen, n, nLocalTr;\n var aoLocal = [];\n var aApplied = [];\n var iColumns = oSettings.aoColumns.length;\n var iRowspan, iColspan;\n\n if (!aoSource) {\n return;\n }\n\n if (bIncludeHidden === undefined) {\n bIncludeHidden = false;\n }\n /* Make a copy of the master layout array, but without the visible columns in it */\n\n\n for (i = 0, iLen = aoSource.length; i < iLen; i++) {\n aoLocal[i] = aoSource[i].slice();\n aoLocal[i].nTr = aoSource[i].nTr;\n /* Remove any columns which are currently hidden */\n\n for (j = iColumns - 1; j >= 0; j--) {\n if (!oSettings.aoColumns[j].bVisible && !bIncludeHidden) {\n aoLocal[i].splice(j, 1);\n }\n }\n /* Prep the applied array - it needs an element for each row */\n\n\n aApplied.push([]);\n }\n\n for (i = 0, iLen = aoLocal.length; i < iLen; i++) {\n nLocalTr = aoLocal[i].nTr;\n /* All cells are going to be replaced, so empty out the row */\n\n if (nLocalTr) {\n while (n = nLocalTr.firstChild) {\n nLocalTr.removeChild(n);\n }\n }\n\n for (j = 0, jLen = aoLocal[i].length; j < jLen; j++) {\n iRowspan = 1;\n iColspan = 1;\n /* Check to see if there is already a cell (row/colspan) covering our target\n * insert point. If there is, then there is nothing to do.\n */\n\n if (aApplied[i][j] === undefined) {\n nLocalTr.appendChild(aoLocal[i][j].cell);\n aApplied[i][j] = 1;\n /* Expand the cell to cover as many rows as needed */\n\n while (aoLocal[i + iRowspan] !== undefined && aoLocal[i][j].cell == aoLocal[i + iRowspan][j].cell) {\n aApplied[i + iRowspan][j] = 1;\n iRowspan++;\n }\n /* Expand the cell to cover as many columns as needed */\n\n\n while (aoLocal[i][j + iColspan] !== undefined && aoLocal[i][j].cell == aoLocal[i][j + iColspan].cell) {\n /* Must update the applied array over the rows for the columns */\n for (k = 0; k < iRowspan; k++) {\n aApplied[i + k][j + iColspan] = 1;\n }\n\n iColspan++;\n }\n /* Do the actual expansion in the DOM */\n\n\n $(aoLocal[i][j].cell).attr('rowspan', iRowspan).attr('colspan', iColspan);\n }\n }\n }\n }\n /**\n * Insert the required TR nodes into the table for display\n * @param {object} oSettings dataTables settings object\n * @param ajaxComplete true after ajax call to complete rendering\n * @memberof DataTable#oApi\n */\n\n\n function _fnDraw(oSettings, ajaxComplete) {\n // Allow for state saving and a custom start position\n _fnStart(oSettings);\n /* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\n\n var aPreDraw = _fnCallbackFire(oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings]);\n\n if ($.inArray(false, aPreDraw) !== -1) {\n _fnProcessingDisplay(oSettings, false);\n\n return;\n }\n\n var anRows = [];\n var iRowCount = 0;\n var asStripeClasses = oSettings.asStripeClasses;\n var iStripes = asStripeClasses.length;\n var oLang = oSettings.oLanguage;\n var bServerSide = _fnDataSource(oSettings) == 'ssp';\n var aiDisplay = oSettings.aiDisplay;\n var iDisplayStart = oSettings._iDisplayStart;\n var iDisplayEnd = oSettings.fnDisplayEnd();\n oSettings.bDrawing = true;\n /* Server-side processing draw intercept */\n\n if (oSettings.bDeferLoading) {\n oSettings.bDeferLoading = false;\n oSettings.iDraw++;\n\n _fnProcessingDisplay(oSettings, false);\n } else if (!bServerSide) {\n oSettings.iDraw++;\n } else if (!oSettings.bDestroying && !ajaxComplete) {\n _fnAjaxUpdate(oSettings);\n\n return;\n }\n\n if (aiDisplay.length !== 0) {\n var iStart = bServerSide ? 0 : iDisplayStart;\n var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\n for (var j = iStart; j < iEnd; j++) {\n var iDataIndex = aiDisplay[j];\n var aoData = oSettings.aoData[iDataIndex];\n\n if (aoData.nTr === null) {\n _fnCreateTr(oSettings, iDataIndex);\n }\n\n var nRow = aoData.nTr;\n /* Remove the old striping classes and then add the new one */\n\n if (iStripes !== 0) {\n var sStripe = asStripeClasses[iRowCount % iStripes];\n\n if (aoData._sRowStripe != sStripe) {\n $(nRow).removeClass(aoData._sRowStripe).addClass(sStripe);\n aoData._sRowStripe = sStripe;\n }\n } // Row callback functions - might want to manipulate the row\n // iRowCount and j are not currently documented. Are they at all\n // useful?\n\n\n _fnCallbackFire(oSettings, 'aoRowCallback', null, [nRow, aoData._aData, iRowCount, j, iDataIndex]);\n\n anRows.push(nRow);\n iRowCount++;\n }\n } else {\n /* Table is empty - create a row with an empty message in it */\n var sZero = oLang.sZeroRecords;\n\n if (oSettings.iDraw == 1 && _fnDataSource(oSettings) == 'ajax') {\n sZero = oLang.sLoadingRecords;\n } else if (oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0) {\n sZero = oLang.sEmptyTable;\n }\n\n anRows[0] = $('', {\n 'class': iStripes ? asStripeClasses[0] : ''\n }).append($('', {\n 'valign': 'top',\n 'colSpan': _fnVisbleColumns(oSettings),\n 'class': oSettings.oClasses.sRowEmpty\n }).html(sZero))[0];\n }\n /* Header and footer callbacks */\n\n\n _fnCallbackFire(oSettings, 'aoHeaderCallback', 'header', [$(oSettings.nTHead).children('tr')[0], _fnGetDataMaster(oSettings), iDisplayStart, iDisplayEnd, aiDisplay]);\n\n _fnCallbackFire(oSettings, 'aoFooterCallback', 'footer', [$(oSettings.nTFoot).children('tr')[0], _fnGetDataMaster(oSettings), iDisplayStart, iDisplayEnd, aiDisplay]);\n\n var body = $(oSettings.nTBody);\n body.children().detach();\n body.append($(anRows));\n /* Call all required callback functions for the end of a draw */\n\n _fnCallbackFire(oSettings, 'aoDrawCallback', 'draw', [oSettings]);\n /* Draw is complete, sorting and filtering must be as well */\n\n\n oSettings.bSorted = false;\n oSettings.bFiltered = false;\n oSettings.bDrawing = false;\n }\n /**\n * Redraw the table - taking account of the various features which are enabled\n * @param {object} oSettings dataTables settings object\n * @param {boolean} [holdPosition] Keep the current paging position. By default\n * the paging is reset to the first page\n * @memberof DataTable#oApi\n */\n\n\n function _fnReDraw(settings, holdPosition) {\n var features = settings.oFeatures,\n sort = features.bSort,\n filter = features.bFilter;\n\n if (sort) {\n _fnSort(settings);\n }\n\n if (filter) {\n _fnFilterComplete(settings, settings.oPreviousSearch);\n } else {\n // No filtering, so we want to just use the display master\n settings.aiDisplay = settings.aiDisplayMaster.slice();\n }\n\n if (holdPosition !== true) {\n settings._iDisplayStart = 0;\n } // Let any modules know about the draw hold position state (used by\n // scrolling internally)\n\n\n settings._drawHold = holdPosition;\n\n _fnDraw(settings);\n\n settings._drawHold = false;\n }\n /**\n * Add the options to the page HTML for the table\n * @param {object} oSettings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnAddOptionsHtml(oSettings) {\n var classes = oSettings.oClasses;\n var table = $(oSettings.nTable);\n var holding = $('
').insertBefore(table); // Holding element for speed\n\n var features = oSettings.oFeatures; // All DataTables are wrapped in a div\n\n var insert = $('
', {\n id: oSettings.sTableId + '_wrapper',\n 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' ' + classes.sNoFooter)\n });\n oSettings.nHolding = holding[0];\n oSettings.nTableWrapper = insert[0];\n oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n /* Loop over the user set positioning and place the elements as needed */\n\n var aDom = oSettings.sDom.split('');\n var featureNode, cOption, nNewNode, cNext, sAttr, j;\n\n for (var i = 0; i < aDom.length; i++) {\n featureNode = null;\n cOption = aDom[i];\n\n if (cOption == '<') {\n /* New container div */\n nNewNode = $('
')[0];\n /* Check to see if we should append an id and/or a class name to the container */\n\n cNext = aDom[i + 1];\n\n if (cNext == \"'\" || cNext == '\"') {\n sAttr = \"\";\n j = 2;\n\n while (aDom[i + j] != cNext) {\n sAttr += aDom[i + j];\n j++;\n }\n /* Replace jQuery UI constants @todo depreciated */\n\n\n if (sAttr == \"H\") {\n sAttr = classes.sJUIHeader;\n } else if (sAttr == \"F\") {\n sAttr = classes.sJUIFooter;\n }\n /* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n * breaks the string into parts and applies them as needed\n */\n\n\n if (sAttr.indexOf('.') != -1) {\n var aSplit = sAttr.split('.');\n nNewNode.id = aSplit[0].substr(1, aSplit[0].length - 1);\n nNewNode.className = aSplit[1];\n } else if (sAttr.charAt(0) == \"#\") {\n nNewNode.id = sAttr.substr(1, sAttr.length - 1);\n } else {\n nNewNode.className = sAttr;\n }\n\n i += j;\n /* Move along the position array */\n }\n\n insert.append(nNewNode);\n insert = $(nNewNode);\n } else if (cOption == '>') {\n /* End container div */\n insert = insert.parent();\n } // @todo Move options into their own plugins?\n else if (cOption == 'l' && features.bPaginate && features.bLengthChange) {\n /* Length */\n featureNode = _fnFeatureHtmlLength(oSettings);\n } else if (cOption == 'f' && features.bFilter) {\n /* Filter */\n featureNode = _fnFeatureHtmlFilter(oSettings);\n } else if (cOption == 'r' && features.bProcessing) {\n /* pRocessing */\n featureNode = _fnFeatureHtmlProcessing(oSettings);\n } else if (cOption == 't') {\n /* Table */\n featureNode = _fnFeatureHtmlTable(oSettings);\n } else if (cOption == 'i' && features.bInfo) {\n /* Info */\n featureNode = _fnFeatureHtmlInfo(oSettings);\n } else if (cOption == 'p' && features.bPaginate) {\n /* Pagination */\n featureNode = _fnFeatureHtmlPaginate(oSettings);\n } else if (DataTable.ext.feature.length !== 0) {\n /* Plug-in features */\n var aoFeatures = DataTable.ext.feature;\n\n for (var k = 0, kLen = aoFeatures.length; k < kLen; k++) {\n if (cOption == aoFeatures[k].cFeature) {\n featureNode = aoFeatures[k].fnInit(oSettings);\n break;\n }\n }\n }\n /* Add to the 2D features array */\n\n\n if (featureNode) {\n var aanFeatures = oSettings.aanFeatures;\n\n if (!aanFeatures[cOption]) {\n aanFeatures[cOption] = [];\n }\n\n aanFeatures[cOption].push(featureNode);\n insert.append(featureNode);\n }\n }\n /* Built our DOM structure - replace the holding div with what we want */\n\n\n holding.replaceWith(insert);\n oSettings.nHolding = null;\n }\n /**\n * Use the DOM source to create up an array of header cells. The idea here is to\n * create a layout grid (array) of rows x columns, which contains a reference\n * to the cell that that point in the grid (regardless of col/rowspan), such that\n * any column / row could be removed and the new grid constructed\n * @param array {object} aLayout Array to store the calculated layout in\n * @param {node} nThead The header/footer element for the table\n * @memberof DataTable#oApi\n */\n\n\n function _fnDetectHeader(aLayout, nThead) {\n var nTrs = $(nThead).children('tr');\n var nTr, nCell;\n var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n var bUnique;\n\n var fnShiftCol = function fnShiftCol(a, i, j) {\n var k = a[i];\n\n while (k[j]) {\n j++;\n }\n\n return j;\n };\n\n aLayout.splice(0, aLayout.length);\n /* We know how many rows there are in the layout - so prep it */\n\n for (i = 0, iLen = nTrs.length; i < iLen; i++) {\n aLayout.push([]);\n }\n /* Calculate a layout array */\n\n\n for (i = 0, iLen = nTrs.length; i < iLen; i++) {\n nTr = nTrs[i];\n iColumn = 0;\n /* For every cell in the row... */\n\n nCell = nTr.firstChild;\n\n while (nCell) {\n if (nCell.nodeName.toUpperCase() == \"TD\" || nCell.nodeName.toUpperCase() == \"TH\") {\n /* Get the col and rowspan attributes from the DOM and sanitise them */\n iColspan = nCell.getAttribute('colspan') * 1;\n iRowspan = nCell.getAttribute('rowspan') * 1;\n iColspan = !iColspan || iColspan === 0 || iColspan === 1 ? 1 : iColspan;\n iRowspan = !iRowspan || iRowspan === 0 || iRowspan === 1 ? 1 : iRowspan;\n /* There might be colspan cells already in this row, so shift our target\n * accordingly\n */\n\n iColShifted = fnShiftCol(aLayout, i, iColumn);\n /* Cache calculation for unique columns */\n\n bUnique = iColspan === 1 ? true : false;\n /* If there is col / rowspan, copy the information into the layout grid */\n\n for (l = 0; l < iColspan; l++) {\n for (k = 0; k < iRowspan; k++) {\n aLayout[i + k][iColShifted + l] = {\n \"cell\": nCell,\n \"unique\": bUnique\n };\n aLayout[i + k].nTr = nTr;\n }\n }\n }\n\n nCell = nCell.nextSibling;\n }\n }\n }\n /**\n * Get an array of unique th elements, one for each column\n * @param {object} oSettings dataTables settings object\n * @param {node} nHeader automatically detect the layout from this node - optional\n * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n * @returns array {node} aReturn list of unique th's\n * @memberof DataTable#oApi\n */\n\n\n function _fnGetUniqueThs(oSettings, nHeader, aLayout) {\n var aReturn = [];\n\n if (!aLayout) {\n aLayout = oSettings.aoHeader;\n\n if (nHeader) {\n aLayout = [];\n\n _fnDetectHeader(aLayout, nHeader);\n }\n }\n\n for (var i = 0, iLen = aLayout.length; i < iLen; i++) {\n for (var j = 0, jLen = aLayout[i].length; j < jLen; j++) {\n if (aLayout[i][j].unique && (!aReturn[j] || !oSettings.bSortCellsTop)) {\n aReturn[j] = aLayout[i][j].cell;\n }\n }\n }\n\n return aReturn;\n }\n /**\n * Set the start position for draw\n * @param {object} oSettings dataTables settings object\n */\n\n\n function _fnStart(oSettings) {\n var bServerSide = _fnDataSource(oSettings) == 'ssp';\n var iInitDisplayStart = oSettings.iInitDisplayStart; // Check and see if we have an initial draw position from state saving\n\n if (iInitDisplayStart !== undefined && iInitDisplayStart !== -1) {\n oSettings._iDisplayStart = bServerSide ? iInitDisplayStart : iInitDisplayStart >= oSettings.fnRecordsDisplay() ? 0 : iInitDisplayStart;\n oSettings.iInitDisplayStart = -1;\n }\n }\n /**\n * Create an Ajax call based on the table's settings, taking into account that\n * parameters can have multiple forms, and backwards compatibility.\n *\n * @param {object} oSettings dataTables settings object\n * @param {array} data Data to send to the server, required by\n * DataTables - may be augmented by developer callbacks\n * @param {function} fn Callback function to run when data is obtained\n */\n\n\n function _fnBuildAjax(oSettings, data, fn) {\n // Compatibility with 1.9-, allow fnServerData and event to manipulate\n _fnCallbackFire(oSettings, 'aoServerParams', 'serverParams', [data]); // Convert to object based for 1.10+ if using the old array scheme which can\n // come from server-side processing or serverParams\n\n\n if (data && Array.isArray(data)) {\n var tmp = {};\n var rbracket = /(.*?)\\[\\]$/;\n $.each(data, function (key, val) {\n var match = val.name.match(rbracket);\n\n if (match) {\n // Support for arrays\n var name = match[0];\n\n if (!tmp[name]) {\n tmp[name] = [];\n }\n\n tmp[name].push(val.value);\n } else {\n tmp[val.name] = val.value;\n }\n });\n data = tmp;\n }\n\n var ajaxData;\n var ajax = oSettings.ajax;\n var instance = oSettings.oInstance;\n\n var callback = function callback(json) {\n var status = oSettings.jqXHR ? oSettings.jqXHR.status : null;\n\n if (json === null || typeof status === 'number' && status == 204) {\n json = {};\n\n _fnAjaxDataSrc(oSettings, json, []);\n }\n\n var error = json.error || json.sError;\n\n if (error) {\n _fnLog(oSettings, 0, error);\n }\n\n oSettings.json = json;\n\n _fnCallbackFire(oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR]);\n\n fn(json);\n };\n\n if ($.isPlainObject(ajax) && ajax.data) {\n ajaxData = ajax.data;\n var newData = typeof ajaxData === 'function' ? ajaxData(data, oSettings) : // fn can manipulate data or return\n ajaxData; // an object object or array to merge\n // If the function returned something, use that alone\n\n data = typeof ajaxData === 'function' && newData ? newData : $.extend(true, data, newData); // Remove the data property as we've resolved it already and don't want\n // jQuery to do it again (it is restored at the end of the function)\n\n delete ajax.data;\n }\n\n var baseAjax = {\n \"data\": data,\n \"success\": callback,\n \"dataType\": \"json\",\n \"cache\": false,\n \"type\": oSettings.sServerMethod,\n \"error\": function error(xhr, _error, thrown) {\n var ret = _fnCallbackFire(oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR]);\n\n if ($.inArray(true, ret) === -1) {\n if (_error == \"parsererror\") {\n _fnLog(oSettings, 0, 'Invalid JSON response', 1);\n } else if (xhr.readyState === 4) {\n _fnLog(oSettings, 0, 'Ajax error', 7);\n }\n }\n\n _fnProcessingDisplay(oSettings, false);\n }\n }; // Store the data submitted for the API\n\n oSettings.oAjaxData = data; // Allow plug-ins and external processes to modify the data\n\n _fnCallbackFire(oSettings, null, 'preXhr', [oSettings, data]);\n\n if (oSettings.fnServerData) {\n // DataTables 1.9- compatibility\n oSettings.fnServerData.call(instance, oSettings.sAjaxSource, $.map(data, function (val, key) {\n // Need to convert back to 1.9 trad format\n return {\n name: key,\n value: val\n };\n }), callback, oSettings);\n } else if (oSettings.sAjaxSource || typeof ajax === 'string') {\n // DataTables 1.9- compatibility\n oSettings.jqXHR = $.ajax($.extend(baseAjax, {\n url: ajax || oSettings.sAjaxSource\n }));\n } else if (typeof ajax === 'function') {\n // Is a function - let the caller define what needs to be done\n oSettings.jqXHR = ajax.call(instance, data, callback, oSettings);\n } else {\n // Object to extend the base settings\n oSettings.jqXHR = $.ajax($.extend(baseAjax, ajax)); // Restore for next time around\n\n ajax.data = ajaxData;\n }\n }\n /**\n * Update the table using an Ajax call\n * @param {object} settings dataTables settings object\n * @returns {boolean} Block the table drawing or not\n * @memberof DataTable#oApi\n */\n\n\n function _fnAjaxUpdate(settings) {\n settings.iDraw++;\n\n _fnProcessingDisplay(settings, true);\n\n _fnBuildAjax(settings, _fnAjaxParameters(settings), function (json) {\n _fnAjaxUpdateDraw(settings, json);\n });\n }\n /**\n * Build up the parameters in an object needed for a server-side processing\n * request. Note that this is basically done twice, is different ways - a modern\n * method which is used by default in DataTables 1.10 which uses objects and\n * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n * the sAjaxSource option is used in the initialisation, or the legacyAjax\n * option is set.\n * @param {object} oSettings dataTables settings object\n * @returns {bool} block the table drawing or not\n * @memberof DataTable#oApi\n */\n\n\n function _fnAjaxParameters(settings) {\n var columns = settings.aoColumns,\n columnCount = columns.length,\n features = settings.oFeatures,\n preSearch = settings.oPreviousSearch,\n preColSearch = settings.aoPreSearchCols,\n i,\n data = [],\n dataProp,\n column,\n columnSearch,\n sort = _fnSortFlatten(settings),\n displayStart = settings._iDisplayStart,\n displayLength = features.bPaginate !== false ? settings._iDisplayLength : -1;\n\n var param = function param(name, value) {\n data.push({\n 'name': name,\n 'value': value\n });\n }; // DataTables 1.9- compatible method\n\n\n param('sEcho', settings.iDraw);\n param('iColumns', columnCount);\n param('sColumns', _pluck(columns, 'sName').join(','));\n param('iDisplayStart', displayStart);\n param('iDisplayLength', displayLength); // DataTables 1.10+ method\n\n var d = {\n draw: settings.iDraw,\n columns: [],\n order: [],\n start: displayStart,\n length: displayLength,\n search: {\n value: preSearch.sSearch,\n regex: preSearch.bRegex\n }\n };\n\n for (i = 0; i < columnCount; i++) {\n column = columns[i];\n columnSearch = preColSearch[i];\n dataProp = typeof column.mData == \"function\" ? 'function' : column.mData;\n d.columns.push({\n data: dataProp,\n name: column.sName,\n searchable: column.bSearchable,\n orderable: column.bSortable,\n search: {\n value: columnSearch.sSearch,\n regex: columnSearch.bRegex\n }\n });\n param(\"mDataProp_\" + i, dataProp);\n\n if (features.bFilter) {\n param('sSearch_' + i, columnSearch.sSearch);\n param('bRegex_' + i, columnSearch.bRegex);\n param('bSearchable_' + i, column.bSearchable);\n }\n\n if (features.bSort) {\n param('bSortable_' + i, column.bSortable);\n }\n }\n\n if (features.bFilter) {\n param('sSearch', preSearch.sSearch);\n param('bRegex', preSearch.bRegex);\n }\n\n if (features.bSort) {\n $.each(sort, function (i, val) {\n d.order.push({\n column: val.col,\n dir: val.dir\n });\n param('iSortCol_' + i, val.col);\n param('sSortDir_' + i, val.dir);\n });\n param('iSortingCols', sort.length);\n } // If the legacy.ajax parameter is null, then we automatically decide which\n // form to use, based on sAjaxSource\n\n\n var legacy = DataTable.ext.legacy.ajax;\n\n if (legacy === null) {\n return settings.sAjaxSource ? data : d;\n } // Otherwise, if legacy has been specified then we use that to decide on the\n // form\n\n\n return legacy ? data : d;\n }\n /**\n * Data the data from the server (nuking the old) and redraw the table\n * @param {object} oSettings dataTables settings object\n * @param {object} json json data return from the server.\n * @param {string} json.sEcho Tracking flag for DataTables to match requests\n * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n * @param {array} json.aaData The data to display on this page\n * @param {string} [json.sColumns] Column ordering (sName, comma separated)\n * @memberof DataTable#oApi\n */\n\n\n function _fnAjaxUpdateDraw(settings, json) {\n // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n // Support both\n var compat = function compat(old, modern) {\n return json[old] !== undefined ? json[old] : json[modern];\n };\n\n var data = _fnAjaxDataSrc(settings, json);\n\n var draw = compat('sEcho', 'draw');\n var recordsTotal = compat('iTotalRecords', 'recordsTotal');\n var recordsFiltered = compat('iTotalDisplayRecords', 'recordsFiltered');\n\n if (draw !== undefined) {\n // Protect against out of sequence returns\n if (draw * 1 < settings.iDraw) {\n return;\n }\n\n settings.iDraw = draw * 1;\n } // No data in returned object, so rather than an array, we show an empty table\n\n\n if (!data) {\n data = [];\n }\n\n _fnClearTable(settings);\n\n settings._iRecordsTotal = parseInt(recordsTotal, 10);\n settings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\n for (var i = 0, ien = data.length; i < ien; i++) {\n _fnAddData(settings, data[i]);\n }\n\n settings.aiDisplay = settings.aiDisplayMaster.slice();\n\n _fnDraw(settings, true);\n\n if (!settings._bInitComplete) {\n _fnInitComplete(settings, json);\n }\n\n _fnProcessingDisplay(settings, false);\n }\n /**\n * Get the data from the JSON data source to use for drawing a table. Using\n * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n * source object, or from a processing function.\n * @param {object} oSettings dataTables settings object\n * @param {object} json Data source object / array from the server\n * @return {array} Array of data to use\n */\n\n\n function _fnAjaxDataSrc(oSettings, json, write) {\n var dataSrc = $.isPlainObject(oSettings.ajax) && oSettings.ajax.dataSrc !== undefined ? oSettings.ajax.dataSrc : oSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\n if (!write) {\n if (dataSrc === 'data') {\n // If the default, then we still want to support the old style, and safely ignore\n // it if possible\n return json.aaData || json[dataSrc];\n }\n\n return dataSrc !== \"\" ? _fnGetObjectDataFn(dataSrc)(json) : json;\n } // set\n\n\n _fnSetObjectDataFn(dataSrc)(json, write);\n }\n /**\n * Generate the node required for filtering text\n * @returns {node} Filter control element\n * @param {object} oSettings dataTables settings object\n * @memberof DataTable#oApi\n */\n\n\n function _fnFeatureHtmlFilter(settings) {\n var classes = settings.oClasses;\n var tableId = settings.sTableId;\n var language = settings.oLanguage;\n var previousSearch = settings.oPreviousSearch;\n var features = settings.aanFeatures;\n var input = '';\n var str = language.sSearch;\n str = str.match(/_INPUT_/) ? str.replace('_INPUT_', input) : str + input;\n var filter = $('
', {\n 'id': !features.f ? tableId + '_filter' : null,\n 'class': classes.sFilter\n }).append($('