1 | var eventGroupByType,
|
2 | initialisers,
|
3 | modern,
|
4 | ancient,
|
5 | modifiers,
|
6 | getModifiersList;
|
7 |
|
8 |
|
9 |
|
10 | modifiers = [
|
11 | [ 'ctrlKey', 'Control' ],
|
12 | [ 'shiftKey', 'Shift' ],
|
13 | [ 'altKey', 'Alt' ],
|
14 | [ 'metaKey', 'Meta' ]
|
15 | ];
|
16 |
|
17 | getModifiersList = function ( params ) {
|
18 | var list = [], i, modifier;
|
19 |
|
20 | i = modifiers.length;
|
21 | while ( i-- ) {
|
22 | modifier = modifiers[i];
|
23 | if ( params[ modifier[0] ] ) {
|
24 | list[ list.length ] = modifier[1];
|
25 | }
|
26 | }
|
27 |
|
28 | return list.join( ' ' );
|
29 | };
|
30 |
|
31 |
|
32 |
|
33 | (function () {
|
34 | var group, types, i, initMethod;
|
35 |
|
36 | eventGroupByType = {};
|
37 |
|
38 | for ( group in eventTypesByGroup ) {
|
39 | if ( eventTypesByGroup.hasOwnProperty( group ) ) {
|
40 | types = eventTypesByGroup[ group ].split( ' ' );
|
41 |
|
42 | i = types.length;
|
43 | while ( i-- ) {
|
44 | eventGroupByType[ types[i] ] = group;
|
45 | }
|
46 | }
|
47 | }
|
48 |
|
49 | for ( initMethod in initialiserParams ) {
|
50 | if ( initialiserParams.hasOwnProperty( initMethod ) ) {
|
51 | initialiserParams[ initMethod ] = initialiserParams[ initMethod ].split( ' ' );
|
52 | }
|
53 | }
|
54 | }());
|
55 |
|
56 |
|
57 |
|
58 | try {
|
59 |
|
60 | new MouseEvent( 'click' );
|
61 | modern = true;
|
62 | }
|
63 |
|
64 | catch ( err ) {
|
65 | if ( !document.createEvent ) {
|
66 | if ( document.createEventObject ) {
|
67 | ancient = true;
|
68 | } else {
|
69 | throw new Error( 'Events cannot be created in this browser' );
|
70 | }
|
71 | }
|
72 | }
|
73 |
|
74 | if ( modern ) {
|
75 | useModern();
|
76 | }
|
77 |
|
78 | else if ( !ancient ) {
|
79 | useLegacy();
|
80 | }
|
81 |
|
82 | else {
|
83 | useAncient();
|
84 | }
|
85 |
|
86 |
|
87 | simulant.params = function ( type ) {
|
88 | var group;
|
89 |
|
90 | group = eventGroupByType[ type ];
|
91 | return initialiserParams[ initialisersByGroup[ group ][1] ].split( ' ' );
|
92 | };
|
93 |
|