annotate DataTables-1.9.4/media/unit_testing/unit_test.js @ 0:3c160414da2e

initial upload
author shiltemann
date Thu, 26 Feb 2015 14:05:23 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3c160414da2e initial upload
shiltemann
parents:
diff changeset
1 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
2 * File: unit_test.js
3c160414da2e initial upload
shiltemann
parents:
diff changeset
3 * Version: 0.0.1
3c160414da2e initial upload
shiltemann
parents:
diff changeset
4 * CVS: $Id$
3c160414da2e initial upload
shiltemann
parents:
diff changeset
5 * Description: Unit test framework
3c160414da2e initial upload
shiltemann
parents:
diff changeset
6 * Author: Allan Jardine (www.sprymedia.co.uk)
3c160414da2e initial upload
shiltemann
parents:
diff changeset
7 * Created: Sun Mar 8 22:02:49 GMT 2009
3c160414da2e initial upload
shiltemann
parents:
diff changeset
8 * Modified: $Date$ by $Author$
3c160414da2e initial upload
shiltemann
parents:
diff changeset
9 * Language: Javascript
3c160414da2e initial upload
shiltemann
parents:
diff changeset
10 * License: GPL v2 or BSD 3 point style
3c160414da2e initial upload
shiltemann
parents:
diff changeset
11 * Project: DataTables
3c160414da2e initial upload
shiltemann
parents:
diff changeset
12 * Contact: allan.jardine@sprymedia.co.uk
3c160414da2e initial upload
shiltemann
parents:
diff changeset
13 *
3c160414da2e initial upload
shiltemann
parents:
diff changeset
14 * Copyright 2009 Allan Jardine, all rights reserved.
3c160414da2e initial upload
shiltemann
parents:
diff changeset
15 *
3c160414da2e initial upload
shiltemann
parents:
diff changeset
16 * Description:
3c160414da2e initial upload
shiltemann
parents:
diff changeset
17 * This is a javascript library suitable for use as a unit testing framework. Employing a queuing
3c160414da2e initial upload
shiltemann
parents:
diff changeset
18 * mechanisim to take account of async events in javascript, this library will communicates with
3c160414da2e initial upload
shiltemann
parents:
diff changeset
19 * a controller frame (to report individual test status).
3c160414da2e initial upload
shiltemann
parents:
diff changeset
20 *
3c160414da2e initial upload
shiltemann
parents:
diff changeset
21 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
22
3c160414da2e initial upload
shiltemann
parents:
diff changeset
23
3c160414da2e initial upload
shiltemann
parents:
diff changeset
24 var oTest = {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
25 /* Block further tests from occuring - might be end of tests or due to async wait */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
26 bBlock: false,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
27
3c160414da2e initial upload
shiltemann
parents:
diff changeset
28 /* Number of times to try retesting for a blocking test */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
29 iReTestLimit: 20,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
30
3c160414da2e initial upload
shiltemann
parents:
diff changeset
31 /* Amount of time to wait between trying for an async test */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
32 iReTestDelay: 150,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
33
3c160414da2e initial upload
shiltemann
parents:
diff changeset
34 /* End tests - external control */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
35 bEnd: false,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
36
3c160414da2e initial upload
shiltemann
parents:
diff changeset
37 /* Internal variables */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
38 _aoQueue: [],
3c160414da2e initial upload
shiltemann
parents:
diff changeset
39 _iReTest: 0,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
40 _bFinished: false,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
41
3c160414da2e initial upload
shiltemann
parents:
diff changeset
42
3c160414da2e initial upload
shiltemann
parents:
diff changeset
43 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3c160414da2e initial upload
shiltemann
parents:
diff changeset
44 * Recommened public functions
3c160414da2e initial upload
shiltemann
parents:
diff changeset
45 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
46
3c160414da2e initial upload
shiltemann
parents:
diff changeset
47 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
48 * Function: fnTest
3c160414da2e initial upload
shiltemann
parents:
diff changeset
49 * Purpose: Add a test to the queue
3c160414da2e initial upload
shiltemann
parents:
diff changeset
50 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
51 * Inputs: string:sMessage - name of the test
3c160414da2e initial upload
shiltemann
parents:
diff changeset
52 * function:fnTest - function which will be evaludated to get the test result
3c160414da2e initial upload
shiltemann
parents:
diff changeset
53 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
54 "fnTest": function ( sMessage, fnSetup, fnTest )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
55 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
56 this._aoQueue.push( {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
57 "sMessage": sMessage,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
58 "fnSetup": fnSetup,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
59 "fnTest": fnTest,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
60 "bPoll": false
3c160414da2e initial upload
shiltemann
parents:
diff changeset
61 } );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
62 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
63 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
64
3c160414da2e initial upload
shiltemann
parents:
diff changeset
65 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
66 * Function: fnWaitTest
3c160414da2e initial upload
shiltemann
parents:
diff changeset
67 * Purpose: Add a test to the queue which has a re-test cycle
3c160414da2e initial upload
shiltemann
parents:
diff changeset
68 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
69 * Inputs: string:sMessage - name of the test
3c160414da2e initial upload
shiltemann
parents:
diff changeset
70 * function:fnTest - function which will be evaludated to get the test result
3c160414da2e initial upload
shiltemann
parents:
diff changeset
71 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
72 "fnWaitTest": function ( sMessage, fnSetup, fnTest )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
73 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
74 this._aoQueue.push( {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
75 "sMessage": sMessage,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
76 "fnSetup": fnSetup,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
77 "fnTest": fnTest,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
78 "bPoll": true
3c160414da2e initial upload
shiltemann
parents:
diff changeset
79 } );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
80 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
81 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
82
3c160414da2e initial upload
shiltemann
parents:
diff changeset
83 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
84 * Function: fnStart
3c160414da2e initial upload
shiltemann
parents:
diff changeset
85 * Purpose: Indicate that this is a new unit and what it is testing (message to end user)
3c160414da2e initial upload
shiltemann
parents:
diff changeset
86 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
87 * Inputs: string:sMessage - message to give to the user about this unit
3c160414da2e initial upload
shiltemann
parents:
diff changeset
88 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
89 "fnStart": function ( sMessage )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
90 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
91 window.parent.controller.fnStartMessage( sMessage );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
92 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
93
3c160414da2e initial upload
shiltemann
parents:
diff changeset
94 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
95 * Function: fnComplete
3c160414da2e initial upload
shiltemann
parents:
diff changeset
96 * Purpose: Tell the controller that we are all done here
3c160414da2e initial upload
shiltemann
parents:
diff changeset
97 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
98 * Inputs: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
99 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
100 "fnComplete": function ()
3c160414da2e initial upload
shiltemann
parents:
diff changeset
101 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
102 this._bFinished = true;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
103 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
104 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
105
3c160414da2e initial upload
shiltemann
parents:
diff changeset
106 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
107 * Function: fnCookieDestroy
3c160414da2e initial upload
shiltemann
parents:
diff changeset
108 * Purpose: Destroy a cookie of a given name
3c160414da2e initial upload
shiltemann
parents:
diff changeset
109 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
110 * Inputs: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
111 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
112 "fnCookieDestroy": function ( oTable )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
113 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
114 var sName = oTable.fnSettings().sCookiePrefix+oTable.fnSettings().sInstance;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
115 var aParts = window.location.pathname.split('/');
3c160414da2e initial upload
shiltemann
parents:
diff changeset
116 var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g,"").toLowerCase();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
117 document.cookie = sNameFile+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+
3c160414da2e initial upload
shiltemann
parents:
diff changeset
118 aParts.join('/') + "/";
3c160414da2e initial upload
shiltemann
parents:
diff changeset
119 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
120
3c160414da2e initial upload
shiltemann
parents:
diff changeset
121
3c160414da2e initial upload
shiltemann
parents:
diff changeset
122
3c160414da2e initial upload
shiltemann
parents:
diff changeset
123 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3c160414da2e initial upload
shiltemann
parents:
diff changeset
124 * Internal functions
3c160414da2e initial upload
shiltemann
parents:
diff changeset
125 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
126
3c160414da2e initial upload
shiltemann
parents:
diff changeset
127
3c160414da2e initial upload
shiltemann
parents:
diff changeset
128 "_fnReTest": function ( oTestInfo )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
129 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
130 var bResult = oTestInfo.fnTest( );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
131 if ( bResult )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
132 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
133 /* Test passed on retry */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
134 this._fnResult( true );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
135 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
136 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
137 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
138 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
139 if ( this._iReTest < this.iReTestLimit )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
140 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
141 this._iReTest++;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
142 setTimeout( function() {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
143 oTest._fnReTest( oTestInfo );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
144 }, this.iReTestDelay );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
145 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
146 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
147 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
148 this._fnResult( false );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
149 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
150 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
151 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
152
3c160414da2e initial upload
shiltemann
parents:
diff changeset
153 "_fnNext": function ()
3c160414da2e initial upload
shiltemann
parents:
diff changeset
154 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
155 if ( this.bEnd )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
156 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
157 return;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
158 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
159
3c160414da2e initial upload
shiltemann
parents:
diff changeset
160 if ( !this.bBlock && this._aoQueue.length > 0 )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
161 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
162 var oNextTest = this._aoQueue.shift();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
163 window.parent.controller.fnTestStart( oNextTest.sMessage );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
164 this.bBlock = true;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
165
3c160414da2e initial upload
shiltemann
parents:
diff changeset
166 if ( typeof oNextTest.fnSetup == 'function' )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
167 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
168 oNextTest.fnSetup( );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
169 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
170 var bResult = oNextTest.fnTest( );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
171 //bResult = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
172
3c160414da2e initial upload
shiltemann
parents:
diff changeset
173 if ( oNextTest.bPoll )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
174 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
175 if ( bResult )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
176 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
177 this._fnResult( true );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
178 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
179 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
180 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
181 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
182 _iReTest = 0;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
183 setTimeout( function() {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
184 oTest._fnReTest( oNextTest );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
185 }, this.iReTestDelay );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
186 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
187 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
188 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
189 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
190 this._fnResult( bResult );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
191 this._fnNext();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
192 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
193 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
194 else if ( !this.bBlock && this._aoQueue.length == 0 && this._bFinished )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
195 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
196 window.parent.controller.fnUnitComplete( );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
197 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
198 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
199
3c160414da2e initial upload
shiltemann
parents:
diff changeset
200 "_fnResult": function ( b )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
201 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
202 window.parent.controller.fnTestResult( b );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
203 this.bBlock = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
204 if ( !b )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
205 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
206 this.bEnd = true;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
207 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
208 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
209 };
3c160414da2e initial upload
shiltemann
parents:
diff changeset
210
3c160414da2e initial upload
shiltemann
parents:
diff changeset
211
3c160414da2e initial upload
shiltemann
parents:
diff changeset
212 var oDispacher = {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
213 "click": function ( nNode, oSpecial )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
214 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
215 var evt = this.fnCreateEvent( 'click', nNode, oSpecial );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
216 if ( nNode.dispatchEvent )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
217 nNode.dispatchEvent(evt);
3c160414da2e initial upload
shiltemann
parents:
diff changeset
218 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
219 nNode.fireEvent('onclick', evt);
3c160414da2e initial upload
shiltemann
parents:
diff changeset
220 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
221
3c160414da2e initial upload
shiltemann
parents:
diff changeset
222 "change": function ( nNode )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
223 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
224 var evt = this.fnCreateEvent( 'change', nNode );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
225 if ( nNode.dispatchEvent )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
226 nNode.dispatchEvent(evt);
3c160414da2e initial upload
shiltemann
parents:
diff changeset
227 else
3c160414da2e initial upload
shiltemann
parents:
diff changeset
228 nNode.fireEvent('onchange', evt);
3c160414da2e initial upload
shiltemann
parents:
diff changeset
229 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
230
3c160414da2e initial upload
shiltemann
parents:
diff changeset
231
3c160414da2e initial upload
shiltemann
parents:
diff changeset
232 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
233 * Function: fnCreateEvent
3c160414da2e initial upload
shiltemann
parents:
diff changeset
234 * Purpose: Create an event oject based on the type to trigger an event - x-platform
3c160414da2e initial upload
shiltemann
parents:
diff changeset
235 * Returns: event:evt
3c160414da2e initial upload
shiltemann
parents:
diff changeset
236 * Inputs: string:sType - type of event
3c160414da2e initial upload
shiltemann
parents:
diff changeset
237 * node:nTarget - target node of the event
3c160414da2e initial upload
shiltemann
parents:
diff changeset
238 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
239 fnCreateEvent: function( sType, nTarget, oSpecial )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
240 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
241 var evt = null;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
242 var oTargetPos = this._fnGetPos( nTarget );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
243 var sTypeGroup = this._fnEventTypeGroup( sType );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
244 if ( typeof oSpecial == 'undefined' )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
245 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
246 oSpecial = {};
3c160414da2e initial upload
shiltemann
parents:
diff changeset
247 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
248
3c160414da2e initial upload
shiltemann
parents:
diff changeset
249 var ctrlKey = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
250 var altKey = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
251 var shiftKey = (typeof oSpecial.shift != 'undefined') ? oSpecial.shift : false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
252 var metaKey = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
253 var button = false;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
254
3c160414da2e initial upload
shiltemann
parents:
diff changeset
255 if ( document.createEvent )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
256 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
257 switch ( sTypeGroup )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
258 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
259 case 'mouse':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
260 evt = document.createEvent( "MouseEvents" );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
261 evt.initMouseEvent( sType, true, true, window, 0, oTargetPos[0], oTargetPos[1],
3c160414da2e initial upload
shiltemann
parents:
diff changeset
262 oTargetPos[0], oTargetPos[1], ctrlKey, altKey, shiftKey,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
263 metaKey, button, null );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
264 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
265
3c160414da2e initial upload
shiltemann
parents:
diff changeset
266 case 'html':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
267 evt = document.createEvent( "HTMLEvents" );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
268 evt.initEvent( sType, true, true );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
269 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
270
3c160414da2e initial upload
shiltemann
parents:
diff changeset
271 case 'ui':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
272 evt = document.createEvent( "UIEvents" );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
273 evt.initUIEvent( sType, true, true, window, 0 );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
274 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
275
3c160414da2e initial upload
shiltemann
parents:
diff changeset
276 default:
3c160414da2e initial upload
shiltemann
parents:
diff changeset
277 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
278 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
279 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
280 else if ( document.createEventObject )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
281 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
282 switch ( sTypeGroup )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
283 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
284 case 'mouse':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
285 evt = document.createEventObject();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
286 evt.screenX = oTargetPos[0];
3c160414da2e initial upload
shiltemann
parents:
diff changeset
287 evt.screenX = oTargetPos[1];
3c160414da2e initial upload
shiltemann
parents:
diff changeset
288 evt.clientX = oTargetPos[0];
3c160414da2e initial upload
shiltemann
parents:
diff changeset
289 evt.clientY = oTargetPos[1];
3c160414da2e initial upload
shiltemann
parents:
diff changeset
290 evt.ctrlKey = ctrlKey;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
291 evt.altKey = altKey;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
292 evt.shiftKey = shiftKey;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
293 evt.metaKey = metaKey;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
294 evt.button = button;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
295 evt.relatedTarget = null;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
296 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
297
3c160414da2e initial upload
shiltemann
parents:
diff changeset
298 case 'html':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
299 /* fall through to basic event object */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
300
3c160414da2e initial upload
shiltemann
parents:
diff changeset
301 case 'ui':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
302 evt = document.createEventObject();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
303 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
304
3c160414da2e initial upload
shiltemann
parents:
diff changeset
305 default:
3c160414da2e initial upload
shiltemann
parents:
diff changeset
306 break;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
307 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
308 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
309
3c160414da2e initial upload
shiltemann
parents:
diff changeset
310 return evt;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
311 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
312
3c160414da2e initial upload
shiltemann
parents:
diff changeset
313 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
314 * Function: DesignCore.fnGetPos
3c160414da2e initial upload
shiltemann
parents:
diff changeset
315 * Purpose: Get the position of an element on the page
3c160414da2e initial upload
shiltemann
parents:
diff changeset
316 * Returns: array[ 0-int:left, 1-int:top ]
3c160414da2e initial upload
shiltemann
parents:
diff changeset
317 * Inputs: node:obj - node to analyse
3c160414da2e initial upload
shiltemann
parents:
diff changeset
318 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
319 _fnGetPos: function ( obj )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
320 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
321 var curleft = 0;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
322 var curtop = 0;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
323
3c160414da2e initial upload
shiltemann
parents:
diff changeset
324 if (obj.offsetParent)
3c160414da2e initial upload
shiltemann
parents:
diff changeset
325 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
326 curleft = obj.offsetLeft;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
327 curtop = obj.offsetTop;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
328 while (obj = obj.offsetParent )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
329 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
330 curleft += obj.offsetLeft;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
331 curtop += obj.offsetTop;
3c160414da2e initial upload
shiltemann
parents:
diff changeset
332 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
333 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
334 return [curleft,curtop];
3c160414da2e initial upload
shiltemann
parents:
diff changeset
335 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
336
3c160414da2e initial upload
shiltemann
parents:
diff changeset
337
3c160414da2e initial upload
shiltemann
parents:
diff changeset
338 /*
3c160414da2e initial upload
shiltemann
parents:
diff changeset
339 * Function: _fnEventTypeGroup
3c160414da2e initial upload
shiltemann
parents:
diff changeset
340 * Purpose: Group the event types as per w3c groupings
3c160414da2e initial upload
shiltemann
parents:
diff changeset
341 * Returns: -
3c160414da2e initial upload
shiltemann
parents:
diff changeset
342 * Inputs: string:sType
3c160414da2e initial upload
shiltemann
parents:
diff changeset
343 */
3c160414da2e initial upload
shiltemann
parents:
diff changeset
344 _fnEventTypeGroup: function ( sType )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
345 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
346 switch ( sType )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
347 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
348 case 'click':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
349 case 'dblclick':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
350 case 'mousedown':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
351 case 'mousemove':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
352 case 'mouseout':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
353 case 'mouseover':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
354 case 'mouseup':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
355 return 'mouse';
3c160414da2e initial upload
shiltemann
parents:
diff changeset
356
3c160414da2e initial upload
shiltemann
parents:
diff changeset
357 case 'change':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
358 case 'focus':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
359 case 'blur':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
360 case 'select':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
361 case 'submit':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
362 return 'html';
3c160414da2e initial upload
shiltemann
parents:
diff changeset
363
3c160414da2e initial upload
shiltemann
parents:
diff changeset
364 case 'keydown':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
365 case 'keypress':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
366 case 'keyup':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
367 case 'load':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
368 case 'unload':
3c160414da2e initial upload
shiltemann
parents:
diff changeset
369 return 'ui';
3c160414da2e initial upload
shiltemann
parents:
diff changeset
370
3c160414da2e initial upload
shiltemann
parents:
diff changeset
371 default:
3c160414da2e initial upload
shiltemann
parents:
diff changeset
372 return 'custom';
3c160414da2e initial upload
shiltemann
parents:
diff changeset
373 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
374 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
375 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
376
3c160414da2e initial upload
shiltemann
parents:
diff changeset
377
3c160414da2e initial upload
shiltemann
parents:
diff changeset
378 var oSession = {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
379 nTable: null,
3c160414da2e initial upload
shiltemann
parents:
diff changeset
380
3c160414da2e initial upload
shiltemann
parents:
diff changeset
381 fnCache: function ()
3c160414da2e initial upload
shiltemann
parents:
diff changeset
382 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
383 this.nTable = document.getElementById('demo').cloneNode(true);
3c160414da2e initial upload
shiltemann
parents:
diff changeset
384 },
3c160414da2e initial upload
shiltemann
parents:
diff changeset
385
3c160414da2e initial upload
shiltemann
parents:
diff changeset
386 fnRestore: function ()
3c160414da2e initial upload
shiltemann
parents:
diff changeset
387 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
388 while( $.fn.dataTableSettings.length > 0 )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
389 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
390 try {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
391 $.fn.dataTableSettings[0].oInstance.fnDestroy();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
392 } catch (e) {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
393 $.fn.dataTableSettings.splice( 0, 1 );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
394 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
395 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
396 //$.fn.dataTableSettings.splice( 0, $.fn.dataTableSettings.length );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
397 var nDemo = document.getElementById('demo');
3c160414da2e initial upload
shiltemann
parents:
diff changeset
398 nDemo.innerHTML = "";
3c160414da2e initial upload
shiltemann
parents:
diff changeset
399 for ( var i=0, iLen=this.nTable.childNodes.length ; i<iLen ; i++ )
3c160414da2e initial upload
shiltemann
parents:
diff changeset
400 {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
401 nDemo.appendChild( this.nTable.childNodes[0] );
3c160414da2e initial upload
shiltemann
parents:
diff changeset
402 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
403 this.fnCache();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
404 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
405 }
3c160414da2e initial upload
shiltemann
parents:
diff changeset
406
3c160414da2e initial upload
shiltemann
parents:
diff changeset
407 $(document).ready( function () {
3c160414da2e initial upload
shiltemann
parents:
diff changeset
408 oSession.fnCache();
3c160414da2e initial upload
shiltemann
parents:
diff changeset
409 } );