{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./vendor/assets/libs/datatables/datatables.js","webpack:///./node_modules/datatables.net/js/jquery.dataTables.js","webpack:///./node_modules/datatables.net-bs4/js/dataTables.bootstrap4.js","webpack:///external \"$.fn.dataTable\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","_typeof","iterator","obj","constructor","factory","$","document","undefined","_ext","_Api2","_api_register","_api_registerPlural","DataTable","options","this","sSelector","oOpts","api","_","rows","data","traditional","_fnSettingsFromNode","iApiIndex","fnAddData","redraw","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","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","sId","getAttribute","bInitHandedOff","defaults","$this","_fnCompatOpts","_fnCompatCols","_fnCamelToHungarian","extend","allSettings","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","_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","sort","filter","features","loadedInit","aaSorting","sorting","asSorting","_fnSortingClasses","bSort","bSorted","aSort","_fnSortFlatten","sortedColumns","val","dir","_fnCallbackFire","_fnSortAria","_fnDataSource","bDeferRender","captions","_captionSide","css","thead","appendTo","tbody","nTBody","tfoot","sNoFooter","aoFooter","aaData","_fnAddData","_fnAddTr","aiDisplay","aiDisplayMaster","bInitialised","bStateSave","_fnSaveState","_fnLoadState","_re_dic","_re_new_lines","_re_html","_re_date","_re_escape_regex","RegExp","_re_formatted_numeric","_empty","_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","_fnHungarianMap","match","newKey","indexOf","_hungarianMap","user","force","hungarianKey","charAt","lang","defaultDecimal","sDecimal","_addNumericSort","zeroRecords","sZeroRecords","sEmptyTable","sLoadingRecords","sInfoThousands","sThousands","decimal","_fnCompatMap","knew","old","init","sScrollX","scrollX","searchCols","aoSearchCols","oSearch","dataSort","aDataSort","__browser","browser","position","top","left","scrollLeft","height","overflow","append","outer","inner","barWidth","offsetWidth","clientWidth","bScrollOversize","bScrollbarLeft","Math","round","offset","bBounding","getBoundingClientRect","oBrowser","iBarWidth","_fnReduce","that","inc","isSet","nTh","oDefaults","oCol","oColumn","createElement","sTitle","innerHTML","idx","aoPreSearchCols","oOptions","th","sWidthOrig","attr","mDataProp","sType","_sManualType","className","iDataSort","mDataSrc","mRender","attrTest","_bAttrSrc","_setter","rowData","meta","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","jLen","kLen","def","aTargets","targets","aDataIn","anTds","oData","oRow","_aData","aIds","_fnCreateTr","trs","_fnGetRowElements","cells","_fnNodeToColumnIndex","anCells","rowIdx","colIdx","iDraw","defaultContent","sDefaultContent","cellData","iDrawError","_fnSetCellData","__reArray","__reFn","_fnSplitObjNotation","str","mSource","fetchData","arrayNotation","funcNotation","innerSrc","substring","setData","b","aLast","_fnGetDataMaster","_fnClearTable","_fnDeleteIndex","iTarget","iTargetIndex","_fnInvalidate","cellWrite","childNodes","removeChild","firstChild","_aSortData","_aFilterData","cols","_fnRowAttributes","contents","tds","td","objectRead","setter","cellProcess","trim","nextSibling","rowNode","nTrIn","nTd","_DT_RowIndex","sCellType","_DT_CellIndex","appendChild","fnCreatedCell","setAttribute","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","aPreDraw","anRows","iRowCount","iStripes","oLang","aoOpenRows","bServerSide","bDrawing","fnRecordsDisplay","iDisplayEnd","fnDisplayEnd","_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","iColShifted","bUnique","nTrs","fnShiftCol","nHeader","aReturn","unique","bSortCellsTop","_fnBuildAjax","rbracket","ajaxData","instance","jqXHR","newData","baseAjax","sError","sServerMethod","xhr","_error","thrown","ret","readyState","oAjaxData","fnServerData","sAjaxSource","bAjaxDataGet","_fnAjaxParameters","_fnAjaxUpdateDraw","dataProp","columnSearch","columnCount","preSearch","preColSearch","displayStart","displayLength","_iDisplayLength","param","sSearch","regex","sName","searchable","bSearchable","orderable","legacy","compat","modern","_fnAjaxDataSrc","recordsTotal","recordsFiltered","_bInitComplete","_fnInitComplete","dataSrc","sAjaxDataProp","tableId","language","previousSearch","input","sFilterInput","f","sFilter","searchFn","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","util","throttle","freq","timer","frequency","now","Date","args","arguments","clearTimeout","setTimeout","apply","escapeRegex","__filter_div","__filter_div_textContent","textContent","filterData","fomatters","wasInvalidated","toString","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","visRecords","pages","buttons","_fnPageChange","action","records","floor","changed","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","dtHeaderCells","headerWidths","footerWidths","headerContent","footerContent","zeroOut","nSizer","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","scrollBarVis","scrollHeight","clientHeight","clone","prependTo","_fnApplyToChildren","outerWidth","offsetHeight","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","removeAttribute","sSortAscending","sSortDescending","_fnSortListener","nextSortIdx","next","bSortMulti","sortIdx","attachTo","_fnBindAction","shiftKey","oldSort","aLastSort","sortClass","sSortColumn","bSortClasses","customData","customSort","sSortDataType","state","time","oSavedState","fnStateSaveCallback","loaded","abStateLoad","duration","iStateDuration","oLoadedState","fnStateLoadCallback","level","msg","tn","console","log","sErrMode","errMode","alert","Error","mappedName","extender","breakRefs","blur","which","preventDefault","sStore","callbackArr","eventName","reverse","Event","result","renderer","host","__apiStruct","__arrayProto","Array","Api","context","ctxSettings","mixed","jq","tables","_toSettings","selector","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","__details_remove","_details","_detailsShow","__details_display","insertAfter","__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","rowSelector","columnSelector","allCells","fnSelector","__cell_selector","internalOpts","cellsNoOpts","selected","set","caseInsen","versionCheck","version","iThis","iThat","aThis","aThat","isDataTable","fnIsDataTable","is","head","foot","fnTables","camelToHungarian","jqRows","orig","jqTable","jqTbody","jqWrapper","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","focus","parsed","string","__numericReplace","decimalPlace","re1","re2","Infinity","ts","sSortAsc","sSortDesc","jqueryui","sSortJUIWrapper","sSortIcon","sSortJUIAsc","sSortJUIDesc","__htmlEscapeEntities","render","number","thousands","precision","prefix","postfix","negative","flo","toFixed","abs","intPart","floatPart","text","_fnNodeToDataIndex","_fnCalculateEnd","dataTableSettings","dataTableExt","dom","bootstrap","currentTarget"],"mappings":"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","file":"js/vendor/libs/datatables/datatables-898feed90f9f918c42ef.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://optimal.seneris.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 785);\n","(function() { module.exports = window[\"jQuery\"]; }());","import 'datatables.net/js/jquery.dataTables.js'\nimport 'datatables.net-bs4/js/dataTables.bootstrap4.js'\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! DataTables 1.10.20\n * ©2008-2019 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @description Paginate, search and order HTML tables\n * @version 1.10.20\n * @file jquery.dataTables.js\n * @author SpryMedia Ltd\n * @contact www.datatables.net\n * @copyright Copyright 2008-2019 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 factory(jQuery, window, document);\n }\n})(function ($, window, document, undefined) {\n \"use strict\";\n /**\n * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n * flexible tool, based upon the foundations of progressive enhancement,\n * which will add advanced interaction controls to any HTML table. For a\n * full list of features please refer to\n * [DataTables.net](href=\"http://datatables.net).\n *\n * Note that the `DataTable` object is not a global variable but is aliased\n * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n * be accessed.\n *\n * @class\n * @param {object} [init={}] Configuration object for DataTables. Options\n * are defined by {@link DataTable.defaults}\n * @requires jQuery 1.7+\n *\n * @example\n * // Basic initialisation\n * $(document).ready( function {\n * $('#example').dataTable();\n * } );\n *\n * @example\n * // Initialisation with configuration options - in this case, disable\n * // pagination and sorting.\n * $(document).ready( function {\n * $('#example').dataTable( {\n * \"paginate\": false,\n * \"sort\": false\n * } );\n * } );\n */\n\n var DataTable = function DataTable(options) {\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 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 = $.isArray(data) && ($.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 = $.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 = $.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 _fnLanguageCompat(json);\n\n _fnCamelToHungarian(defaults.oLanguage, json);\n\n $.extend(true, oLanguage, json);\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 }\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 = $('').appendTo($this);\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 if (oInit.bStateSave) {\n features.bStateSave = true;\n\n _fnCallbackReg(oSettings, 'aoDrawCallback', _fnSaveState, 'state_save');\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 = /[',$£€¥%\\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 };\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 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' && !$.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 $.extend(oCol, oOptions);\n\n _fnMap(oCol, oOptions, \"sWidth\", \"sWidthOrig\");\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 * Covert 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 * Covert 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\n\n\n if (detectedType === 'html') {\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.targets !== undefined ? def.targets : def.aTargets;\n\n if (!$.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' 'sort')\n * @returns {*} Cell data\n * @memberof DataTable#oApi\n */\n\n\n function _fnGetCellData(settings, rowIdx, colIdx, type) {\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 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 function _fnGetObjectDataFn(mSource) {\n if ($.isPlainObject(mSource)) {\n /* Build an object of get functions, and wrap them in a single call */\n var o = {};\n $.each(mSource, function (key, val) {\n if (val) {\n o[key] = _fnGetObjectDataFn(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 (mSource === 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 mSource === 'function') {\n return function (data, type, row, meta) {\n return mSource(data, type, row, meta);\n };\n } else if (typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1 || mSource.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 ($.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, mSource);\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[mSource];\n };\n }\n }\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\n function _fnSetObjectDataFn(mSource) {\n if ($.isPlainObject(mSource)) {\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 _fnSetObjectDataFn(mSource._);\n } else if (mSource === null) {\n /* Nothing to do when the data source is null */\n return function () {};\n } else if (typeof mSource === 'function') {\n return function (data, val, meta) {\n mSource(data, 'set', val, meta);\n };\n } else if (typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1 || mSource.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 // Check if we are dealing with an array notation request\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 ($.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, mSource);\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[mSource] = val;\n };\n }\n }\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\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 = $.trim(cell.innerHTML);\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 || (!nTrIn || 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 } // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved\n // and deployed\n\n\n row.nTr.setAttribute('role', 'row');\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 /* ARIA role for the rows */\n\n\n $(thead).find('>tr').attr('role', 'row');\n /* Deal with the footer - add classes if required */\n\n $(thead).find('>tr>th, >tr>td').addClass(classes.sHeaderTH);\n $(tfoot).find('>tr>th, >tr>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 * @memberof DataTable#oApi\n */\n\n\n function _fnDraw(oSettings) {\n /* Provide a pre-callback function which can be used to cancel the draw is false is returned */\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 i, iLen, n;\n var anRows = [];\n var iRowCount = 0;\n var asStripeClasses = oSettings.asStripeClasses;\n var iStripes = asStripeClasses.length;\n var iOpenRows = oSettings.aoOpenRows.length;\n var oLang = oSettings.oLanguage;\n var iInitDisplayStart = oSettings.iInitDisplayStart;\n var bServerSide = _fnDataSource(oSettings) == 'ssp';\n var aiDisplay = oSettings.aiDisplay;\n oSettings.bDrawing = true;\n /* 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 var iDisplayStart = oSettings._iDisplayStart;\n var iDisplayEnd = oSettings.fnDisplayEnd();\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 && !_fnAjaxUpdate(oSettings)) {\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 * 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 && $.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 _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\": function success(json) {\n var error = json.error || json.sError;\n\n if (error) {\n _fnLog(oSettings, 0, error);\n }\n\n oSettings.json = json;\n callback(json);\n },\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 if (settings.bAjaxDataGet) {\n settings.iDraw++;\n\n _fnProcessingDisplay(settings, true);\n\n _fnBuildAjax(settings, _fnAjaxParameters(settings), function (json) {\n _fnAjaxUpdateDraw(settings, json);\n });\n\n return false;\n }\n\n return true;\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) {\n // Protect against out of sequence returns\n if (draw * 1 < settings.iDraw) {\n return;\n }\n\n settings.iDraw = draw * 1;\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 settings.bAjaxDataGet = false;\n\n _fnDraw(settings);\n\n if (!settings._bInitComplete) {\n _fnInitComplete(settings, json);\n }\n\n settings.bAjaxDataGet = true;\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) {\n var dataSrc = $.isPlainObject(oSettings.ajax) && oSettings.ajax.dataSrc !== undefined ? oSettings.ajax.dataSrc : oSettings.sAjaxDataProp; // Compatibility with 1.9-.\n // Compatibility with 1.9-. In order to read from aaData, check if the\n // default has been changed, if not, check for aaData\n\n if (dataSrc === 'data') {\n return json.aaData || json[dataSrc];\n }\n\n return dataSrc !== \"\" ? _fnGetObjectDataFn(dataSrc)(json) : json;\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($('