Add datatables-1.9.4 and jquery-1.10.2 libraries
[proteocache.git] / webapp / resources / datatables-1.9.4 / media / src / DataTables.js
1 /**
2  * @summary     DataTables
3  * @description Paginate, search and sort HTML tables
4  * @version     1.9.4
5  * @file        jquery.dataTables.js
6  * @author      Allan Jardine (www.sprymedia.co.uk)
7  * @contact     www.sprymedia.co.uk/contact
8  *
9  * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.
10  *
11  * This source file is free software, under either the GPL v2 license or a
12  * BSD style license, available at:
13  *   http://datatables.net/license_gpl2
14  *   http://datatables.net/license_bsd
15  * 
16  * This source file is distributed in the hope that it will be useful, but 
17  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
18  * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
19  * 
20  * For details please refer to: http://www.datatables.net
21  */
22
23 /*jslint evil: true, undef: true, browser: true */
24 /*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/
25
26 (/** @lends <global> */function( window, document, undefined ) {
27
28 (function( factory ) {
29         "use strict";
30
31         // Define as an AMD module if possible
32         if ( typeof define === 'function' && define.amd )
33         {
34                 define( ['jquery'], factory );
35         }
36         /* Define using browser globals otherwise
37          * Prevent multiple instantiations if the script is loaded twice
38          */
39         else if ( jQuery && !jQuery.fn.dataTable )
40         {
41                 factory( jQuery );
42         }
43 }
44 (/** @lends <global> */function( $ ) {
45         "use strict";
46         /** 
47          * DataTables is a plug-in for the jQuery Javascript library. It is a 
48          * highly flexible tool, based upon the foundations of progressive 
49          * enhancement, which will add advanced interaction controls to any 
50          * HTML table. For a full list of features please refer to
51          * <a href="http://datatables.net">DataTables.net</a>.
52          *
53          * Note that the <i>DataTable</i> object is not a global variable but is
54          * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which 
55          * it may be  accessed.
56          *
57          *  @class
58          *  @param {object} [oInit={}] Configuration object for DataTables. Options
59          *    are defined by {@link DataTable.defaults}
60          *  @requires jQuery 1.3+
61          * 
62          *  @example
63          *    // Basic initialisation
64          *    $(document).ready( function {
65          *      $('#example').dataTable();
66          *    } );
67          *  
68          *  @example
69          *    // Initialisation with configuration options - in this case, disable
70          *    // pagination and sorting.
71          *    $(document).ready( function {
72          *      $('#example').dataTable( {
73          *        "bPaginate": false,
74          *        "bSort": false 
75          *      } );
76          *    } );
77          */
78         var DataTable = function( oInit )
79         {
80                 require('core.columns.js');
81                 require('core.data.js');
82                 require('core.draw.js');
83                 require('core.ajax.js');
84                 require('core.filter.js');
85                 require('core.info.js');
86                 require('core.init.js');
87                 require('core.length.js');
88                 require('core.page.js');
89                 require('core.processing.js');
90                 require('core.scrolling.js');
91                 require('core.sizing.js');
92                 require('core.sort.js');
93                 require('core.state.js');
94                 require('core.support.js');
95
96                 require('api.methods.js');
97                 require('api.internal.js');
98                 
99                 var _that = this;
100                 this.each(function() {
101                         require('core.constructor.js');
102                 } );
103                 _that = null;
104                 return this;
105         };
106
107         require('api.static.js');
108
109         /**
110          * Version string for plug-ins to check compatibility. Allowed format is
111          * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
112          * e are optional
113          *  @member
114          *  @type string
115          *  @default Version number
116          */
117         DataTable.version = "1.9.4";
118
119         /**
120          * Private data store, containing all of the settings objects that are created for the
121          * tables on a given page.
122          * 
123          * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> 
124          * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.
125          *  @member
126          *  @type array
127          *  @default []
128          *  @private
129          */
130         DataTable.settings = [];
131
132         /**
133          * Object models container, for the various models that DataTables has available
134          * to it. These models define the objects that are used to hold the active state 
135          * and configuration of the table.
136          *  @namespace
137          */
138         DataTable.models = {};
139         require('model.ext.js');
140         require('model.search.js');
141         require('model.row.js');
142         require('model.column.js');
143         require('model.defaults.js');
144         require('model.defaults.columns.js');
145         require('model.settings.js');
146
147         /**
148          * Extension object for DataTables that is used to provide all extension options.
149          * 
150          * Note that the <i>DataTable.ext</i> object is available through
151          * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is
152          * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.
153          *  @namespace
154          *  @extends DataTable.models.ext
155          */
156         DataTable.ext = $.extend( true, {}, DataTable.models.ext );
157         require('ext.classes.js');
158         require('ext.paging.js');
159         require('ext.sorting.js');
160         require('ext.types.js');
161
162         // jQuery aliases
163         $.fn.DataTable = DataTable;
164         $.fn.dataTable = DataTable;
165         $.fn.dataTableSettings = DataTable.settings;
166         $.fn.dataTableExt = DataTable.ext;
167
168
169         // Information about events fired by DataTables - for documentation.
170         /**
171          * Draw event, fired whenever the table is redrawn on the page, at the same point as
172          * fnDrawCallback. This may be useful for binding events or performing calculations when
173          * the table is altered at all.
174          *  @name DataTable#draw
175          *  @event
176          *  @param {event} e jQuery event object
177          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
178          */
179
180         /**
181          * Filter event, fired when the filtering applied to the table (using the build in global
182          * global filter, or column filters) is altered.
183          *  @name DataTable#filter
184          *  @event
185          *  @param {event} e jQuery event object
186          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
187          */
188
189         /**
190          * Page change event, fired when the paging of the table is altered.
191          *  @name DataTable#page
192          *  @event
193          *  @param {event} e jQuery event object
194          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
195          */
196
197         /**
198          * Sort event, fired when the sorting applied to the table is altered.
199          *  @name DataTable#sort
200          *  @event
201          *  @param {event} e jQuery event object
202          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
203          */
204
205         /**
206          * DataTables initialisation complete event, fired when the table is fully drawn,
207          * including Ajax data loaded, if Ajax data is required.
208          *  @name DataTable#init
209          *  @event
210          *  @param {event} e jQuery event object
211          *  @param {object} oSettings DataTables settings object
212          *  @param {object} json The JSON object request from the server - only
213          *    present if client-side Ajax sourced data is used</li></ol>
214          */
215
216         /**
217          * State save event, fired when the table has changed state a new state save is required.
218          * This method allows modification of the state saving object prior to actually doing the
219          * save, including addition or other state properties (for plug-ins) or modification
220          * of a DataTables core property.
221          *  @name DataTable#stateSaveParams
222          *  @event
223          *  @param {event} e jQuery event object
224          *  @param {object} oSettings DataTables settings object
225          *  @param {object} json The state information to be saved
226          */
227
228         /**
229          * State load event, fired when the table is loading state from the stored data, but
230          * prior to the settings object being modified by the saved state - allowing modification
231          * of the saved state is required or loading of state for a plug-in.
232          *  @name DataTable#stateLoadParams
233          *  @event
234          *  @param {event} e jQuery event object
235          *  @param {object} oSettings DataTables settings object
236          *  @param {object} json The saved state information
237          */
238
239         /**
240          * State loaded event, fired when state has been loaded from stored data and the settings
241          * object has been modified by the loaded data.
242          *  @name DataTable#stateLoaded
243          *  @event
244          *  @param {event} e jQuery event object
245          *  @param {object} oSettings DataTables settings object
246          *  @param {object} json The saved state information
247          */
248
249         /**
250          * Processing event, fired when DataTables is doing some kind of processing (be it,
251          * sort, filter or anything else). Can be used to indicate to the end user that
252          * there is something happening, or that something has finished.
253          *  @name DataTable#processing
254          *  @event
255          *  @param {event} e jQuery event object
256          *  @param {object} oSettings DataTables settings object
257          *  @param {boolean} bShow Flag for if DataTables is doing processing or not
258          */
259
260         /**
261          * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to 
262          * made to the server for new data (note that this trigger is called in fnServerData,
263          * if you override fnServerData and which to use this event, you need to trigger it in
264          * you success function).
265          *  @name DataTable#xhr
266          *  @event
267          *  @param {event} e jQuery event object
268          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
269          *  @param {object} json JSON returned from the server
270          */
271
272         /**
273          * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing
274          * the bDestroy:true parameter in the initialisation object. This can be used to remove
275          * bound events, added DOM nodes, etc.
276          *  @name DataTable#destroy
277          *  @event
278          *  @param {event} e jQuery event object
279          *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
280          */
281 }));
282
283 }(window, document));
284