@base-framework/base 2.6.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/base.min.js +1 -0
  2. package/es5/base.js +2968 -0
  3. package/es5/modules/ajax.js +663 -0
  4. package/es5/modules/animation.js +188 -0
  5. package/es5/modules/animations.js +1080 -0
  6. package/es5/modules/atom.js +65 -0
  7. package/es5/modules/component.js +1310 -0
  8. package/es5/modules/data-binder.js +1131 -0
  9. package/es5/modules/data.js +1808 -0
  10. package/es5/modules/date.js +525 -0
  11. package/es5/modules/form-validator.js +324 -0
  12. package/es5/modules/history.js +126 -0
  13. package/es5/modules/html-builder.js +461 -0
  14. package/es5/modules/layout.js +1679 -0
  15. package/es5/modules/mouse.js +124 -0
  16. package/es5/modules/nav-link.js +123 -0
  17. package/es5/modules/olderversions/animations-ease.js +1095 -0
  18. package/es5/modules/olderversions/animations-update.js +1048 -0
  19. package/es5/modules/olderversions/base-animations.js +636 -0
  20. package/es5/modules/olderversions/base-component-class.js +100 -0
  21. package/es5/modules/olderversions/base-data-binder-1.js +407 -0
  22. package/es5/modules/olderversions/base-data-binder-class.js +358 -0
  23. package/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  24. package/es5/modules/olderversions/base-mode-1.js +777 -0
  25. package/es5/modules/olderversions/base-model-class.js +585 -0
  26. package/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  27. package/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  28. package/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  29. package/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  30. package/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  31. package/es5/modules/olderversions/data-tracker.js +187 -0
  32. package/es5/modules/olderversions/event-update.js +666 -0
  33. package/es5/modules/olderversions/nav-link.js +119 -0
  34. package/es5/modules/olderversions/router-with-templates-1.js +785 -0
  35. package/es5/modules/olderversions/router-with-templates.js +701 -0
  36. package/es5/modules/prototypes/ajax.js +657 -0
  37. package/es5/modules/prototypes/atom.js +65 -0
  38. package/es5/modules/prototypes/component.js +972 -0
  39. package/es5/modules/prototypes/data-binder.js +1089 -0
  40. package/es5/modules/prototypes/data.js +1290 -0
  41. package/es5/modules/prototypes/html-builder.js +414 -0
  42. package/es5/modules/prototypes/layout.js +879 -0
  43. package/es5/modules/router.js +1680 -0
  44. package/es5/modules/state.js +274 -0
  45. package/es6/.jshintrc +3 -0
  46. package/es6/base.js +41 -0
  47. package/es6/core.js +1 -0
  48. package/es6/data-tracker.js +351 -0
  49. package/es6/events.js +602 -0
  50. package/es6/legacy/es5/base.js +2968 -0
  51. package/es6/legacy/es5/modules/ajax.js +663 -0
  52. package/es6/legacy/es5/modules/animation.js +188 -0
  53. package/es6/legacy/es5/modules/animations.js +1080 -0
  54. package/es6/legacy/es5/modules/atom.js +65 -0
  55. package/es6/legacy/es5/modules/component.js +1310 -0
  56. package/es6/legacy/es5/modules/data-binder.js +1131 -0
  57. package/es6/legacy/es5/modules/data.js +1808 -0
  58. package/es6/legacy/es5/modules/date.js +525 -0
  59. package/es6/legacy/es5/modules/form-validator.js +324 -0
  60. package/es6/legacy/es5/modules/history.js +126 -0
  61. package/es6/legacy/es5/modules/html-builder.js +461 -0
  62. package/es6/legacy/es5/modules/layout.js +1679 -0
  63. package/es6/legacy/es5/modules/mouse.js +124 -0
  64. package/es6/legacy/es5/modules/nav-link.js +123 -0
  65. package/es6/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  66. package/es6/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  67. package/es6/legacy/es5/modules/olderversions/base-animations.js +636 -0
  68. package/es6/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  69. package/es6/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  70. package/es6/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  71. package/es6/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  72. package/es6/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  73. package/es6/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  74. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  75. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  76. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  77. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  78. package/es6/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  79. package/es6/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  80. package/es6/legacy/es5/modules/olderversions/event-update.js +666 -0
  81. package/es6/legacy/es5/modules/olderversions/nav-link.js +119 -0
  82. package/es6/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  83. package/es6/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  84. package/es6/legacy/es5/modules/prototypes/ajax.js +657 -0
  85. package/es6/legacy/es5/modules/prototypes/atom.js +65 -0
  86. package/es6/legacy/es5/modules/prototypes/component.js +972 -0
  87. package/es6/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  88. package/es6/legacy/es5/modules/prototypes/data.js +1290 -0
  89. package/es6/legacy/es5/modules/prototypes/html-builder.js +414 -0
  90. package/es6/legacy/es5/modules/prototypes/layout.js +879 -0
  91. package/es6/legacy/es5/modules/router.js +1680 -0
  92. package/es6/legacy/es5/modules/state.js +274 -0
  93. package/es6/main.js +1331 -0
  94. package/es6/modules/ajax/ajax.js +514 -0
  95. package/es6/modules/animation/animation.js +236 -0
  96. package/es6/modules/animations/animation-controller.js +231 -0
  97. package/es6/modules/animations/animation.js +64 -0
  98. package/es6/modules/animations/attr-movement.js +66 -0
  99. package/es6/modules/animations/css-movement.js +170 -0
  100. package/es6/modules/animations/movement.js +131 -0
  101. package/es6/modules/animations/value.js +187 -0
  102. package/es6/modules/atom/atom.js +54 -0
  103. package/es6/modules/component/component.js +230 -0
  104. package/es6/modules/component/event-helper.js +119 -0
  105. package/es6/modules/component/jot.js +144 -0
  106. package/es6/modules/component/state-helper.js +262 -0
  107. package/es6/modules/component/unit.js +551 -0
  108. package/es6/modules/data/attrs.js +40 -0
  109. package/es6/modules/data/basic-data.js +500 -0
  110. package/es6/modules/data/data-utils.js +29 -0
  111. package/es6/modules/data/data.js +3 -0
  112. package/es6/modules/data/deep-data.js +541 -0
  113. package/es6/modules/data/model-service.js +528 -0
  114. package/es6/modules/data/model.js +133 -0
  115. package/es6/modules/data/simple-data.js +33 -0
  116. package/es6/modules/data-binder/connection-tracker.js +113 -0
  117. package/es6/modules/data-binder/connection.js +16 -0
  118. package/es6/modules/data-binder/data-binder.js +352 -0
  119. package/es6/modules/data-binder/data-pub-sub.js +141 -0
  120. package/es6/modules/data-binder/data-source.js +56 -0
  121. package/es6/modules/data-binder/element-source.js +219 -0
  122. package/es6/modules/data-binder/one-way-connection.js +46 -0
  123. package/es6/modules/data-binder/one-way-source.js +43 -0
  124. package/es6/modules/data-binder/source.js +36 -0
  125. package/es6/modules/data-binder/two-way-connection.js +75 -0
  126. package/es6/modules/data-binder/two-way-source.js +41 -0
  127. package/es6/modules/date/date.js +544 -0
  128. package/es6/modules/history/history.js +89 -0
  129. package/es6/modules/html-builder/html-builder.js +434 -0
  130. package/es6/modules/import/import.js +390 -0
  131. package/es6/modules/layout/layout-builder.js +1269 -0
  132. package/es6/modules/layout/layout-parser.js +134 -0
  133. package/es6/modules/layout/watcher-helper.js +282 -0
  134. package/es6/modules/mouse/mouse.js +114 -0
  135. package/es6/modules/router/component-helper.js +163 -0
  136. package/es6/modules/router/history-controller.js +216 -0
  137. package/es6/modules/router/nav-link.js +124 -0
  138. package/es6/modules/router/route.js +401 -0
  139. package/es6/modules/router/router.js +789 -0
  140. package/es6/modules/router/utils.js +31 -0
  141. package/es6/modules/state/state-target.js +91 -0
  142. package/es6/modules/state/state.js +171 -0
  143. package/es6/package-lock.json +13 -0
  144. package/es6/package.json +28 -0
  145. package/es6/shared/objects.js +99 -0
  146. package/legacy/es5/base.js +2968 -0
  147. package/legacy/es5/modules/ajax.js +663 -0
  148. package/legacy/es5/modules/animation.js +188 -0
  149. package/legacy/es5/modules/animations.js +1080 -0
  150. package/legacy/es5/modules/atom.js +65 -0
  151. package/legacy/es5/modules/component.js +1310 -0
  152. package/legacy/es5/modules/data-binder.js +1131 -0
  153. package/legacy/es5/modules/data.js +1808 -0
  154. package/legacy/es5/modules/date.js +525 -0
  155. package/legacy/es5/modules/form-validator.js +324 -0
  156. package/legacy/es5/modules/history.js +126 -0
  157. package/legacy/es5/modules/html-builder.js +461 -0
  158. package/legacy/es5/modules/layout.js +1679 -0
  159. package/legacy/es5/modules/mouse.js +124 -0
  160. package/legacy/es5/modules/nav-link.js +123 -0
  161. package/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  162. package/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  163. package/legacy/es5/modules/olderversions/base-animations.js +636 -0
  164. package/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  165. package/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  166. package/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  167. package/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  168. package/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  169. package/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  170. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  171. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  172. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  173. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  174. package/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  175. package/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  176. package/legacy/es5/modules/olderversions/event-update.js +666 -0
  177. package/legacy/es5/modules/olderversions/nav-link.js +119 -0
  178. package/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  179. package/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  180. package/legacy/es5/modules/prototypes/ajax.js +657 -0
  181. package/legacy/es5/modules/prototypes/atom.js +65 -0
  182. package/legacy/es5/modules/prototypes/component.js +972 -0
  183. package/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  184. package/legacy/es5/modules/prototypes/data.js +1290 -0
  185. package/legacy/es5/modules/prototypes/html-builder.js +414 -0
  186. package/legacy/es5/modules/prototypes/layout.js +879 -0
  187. package/legacy/es5/modules/router.js +1680 -0
  188. package/legacy/es5/modules/state.js +274 -0
  189. package/package.json +8 -3
  190. package/update +16 -0
@@ -0,0 +1,666 @@
1
+ /* base framework module */
2
+ (function(global)
3
+ {
4
+ "use strict";
5
+
6
+ var DataTracker = base.DataTracker;
7
+
8
+ /* this will register the event system to the
9
+ data tracker to remove events that have been
10
+ added in layouts. */
11
+ DataTracker.addType('events', function(data)
12
+ {
13
+ base.events.removeEvent(data);
14
+ });
15
+
16
+ base.extend.events =
17
+ {
18
+ getEvents: function(obj)
19
+ {
20
+ if(!obj || typeof obj !== 'object')
21
+ {
22
+ return false;
23
+ }
24
+ return DataTracker.get(obj, 'events');
25
+ },
26
+
27
+ /* this will create an object to use through the event
28
+ tracker.
29
+ @param string event = the name of the event to listen
30
+ @param object obj = obj to add the listener
31
+ @param function fn = function to perform on event
32
+ @param bool capture = event capture
33
+ @param bool swapped = tells if the even return was
34
+ swapped with a standardized function.
35
+ @param function originalFn = the original function
36
+ return function was swapped.
37
+ */
38
+ createEventObj: function(event, obj, fn, capture, swapped, originalFn)
39
+ {
40
+ /* we want to check if the swapped param was set */
41
+ swapped = (swapped === true);
42
+
43
+ return {
44
+ event: event,
45
+ obj: obj,
46
+ fn: fn,
47
+ capture: capture,
48
+ swapped: swapped,
49
+ originalFn: originalFn
50
+ };
51
+ },
52
+
53
+ /* this will setup the add function to cache the
54
+ proper function so we only check one time.
55
+ @return (function) the function */
56
+ _add: function()
57
+ {
58
+ /* create a local function to perform the check
59
+ once then override the function */
60
+ var addEvent;
61
+ if(typeof global.addEventListener === 'function')
62
+ {
63
+ // modern browsers
64
+ addEvent = function(obj, event, fn, capture)
65
+ {
66
+ obj.addEventListener(event, fn, capture);
67
+ };
68
+ }
69
+ else if(typeof document.attachEvent === 'function')
70
+ {
71
+ // old ie
72
+ addEvent = function(obj, event, fn, capture)
73
+ {
74
+ obj.attachEvent("on" + event, fn);
75
+ };
76
+ }
77
+ else
78
+ {
79
+ addEvent = function(obj, event, fn, capture)
80
+ {
81
+ obj["on" + event] = fn;
82
+ };
83
+ }
84
+
85
+ /* this will override method with cached method
86
+ and we need to return and call with object */
87
+ return base.overrideMethod(this, '_add', addEvent, arguments);
88
+ },
89
+
90
+ /* this will and an event listener and add
91
+ to the event tracker.
92
+ @param string event = the name of the event to listen
93
+ @param object obj = obj to add the listener
94
+ @param function fn = function to perform on event
95
+ @param bool capture = event capture
96
+ @param bool swapped = tells if the even return was
97
+ swapped with a standardized function.
98
+ @param function originalFn = the original function */
99
+ add: function(event, obj, fn, capture, swapped, data)
100
+ {
101
+ if(!obj || typeof obj !== 'object')
102
+ {
103
+ return this;
104
+ }
105
+
106
+ capture = (typeof capture !== 'undefined')? capture : false;
107
+
108
+ /* we want to create an event object and add it the
109
+ the active events to track */
110
+ var data = this.createEventObj(event, obj, fn, capture, swapped, data);
111
+ DataTracker.add(obj, 'events', data);
112
+
113
+ this._add(obj, event, fn, capture);
114
+
115
+ return this;
116
+ },
117
+
118
+ /* this remove the event and remove from the tracker.
119
+ @param string event = the name of the event to listen
120
+ @param object obj = obj to add the listener
121
+ @param function fn = function to perform on event
122
+ @param bool capture = event capture */
123
+ remove: function(event, obj, fn, capture)
124
+ {
125
+ capture = (typeof capture !== 'undefined')? capture : false;
126
+
127
+ /* we want to select the event from the active events array */
128
+ var result = this.getEvent(event, obj, fn, capture);
129
+ if(result === false)
130
+ {
131
+ return this;
132
+ }
133
+
134
+ if(typeof result === 'object')
135
+ {
136
+ /* we want to use the remove event method and just
137
+ pass the listener object */
138
+ this.removeEvent(result);
139
+ }
140
+ return this;
141
+ },
142
+
143
+ /* this will setup the remove function to cache the
144
+ proper function so we only check one time.
145
+ @return (function) the function */
146
+ _remove: function()
147
+ {
148
+ /* create a local function to perform the check
149
+ once then override the function */
150
+ var removeEvent;
151
+ if(typeof global.removeEventListener === 'function')
152
+ {
153
+ // modern browsers
154
+ removeEvent = function(obj, event, fn, capture)
155
+ {
156
+ obj.removeEventListener(event, fn, capture);
157
+ };
158
+ }
159
+ else if(typeof document.detachEvent === 'function')
160
+ {
161
+ // old ie
162
+ removeEvent = function(obj, event, fn, capture)
163
+ {
164
+ obj.detachEvent("on" + event, fn);
165
+ };
166
+ }
167
+ else
168
+ {
169
+ removeEvent = function(obj, event, fn, capture)
170
+ {
171
+ obj["on" + event] = null;
172
+ };
173
+ }
174
+
175
+ /* this will override method with cached method
176
+ and we need to return and call with object */
177
+ return base.overrideMethod(this, '_remove', removeEvent, arguments);
178
+ },
179
+
180
+ /* this will remove an event object and the listener
181
+ from the active events array.
182
+ @param (object) listener = the listener object from
183
+ the active events array */
184
+ removeEvent: function(listener)
185
+ {
186
+ if(typeof listener === 'object')
187
+ {
188
+ this._remove(listener.obj, listener.event, listener.fn, listener.capture);
189
+ }
190
+ return this;
191
+ },
192
+
193
+ /* this will search for an return an active event or return
194
+ false if nothing found.
195
+ @param string event = the name of the event to listen
196
+ @param object obj = obj to add the listener
197
+ @param function fn = function to perform on event
198
+ @param bool capture = event capture
199
+ @return (mixed) the event object or false if not found */
200
+ getEvent: function(event, obj, fn, capture)
201
+ {
202
+ if(typeof eventObj !== 'object')
203
+ {
204
+ return false;
205
+ }
206
+
207
+ var events = this.getEvents(obj);
208
+ if(!events || events.length < 1)
209
+ {
210
+ return false;
211
+ }
212
+
213
+ var eventObj = this.createEventObj(event, obj, fn, capture);
214
+ /* if the search returns anything but false we
215
+ found our active event */
216
+ return this.searchEvents(eventObj, events);
217
+ },
218
+
219
+ /* this will search for an return an active event or return
220
+ false if nothing found.
221
+ @param object eventObj = the listener object to search */
222
+ searchEvents: function(eventObj, events)
223
+ {
224
+ var swappable = this.isSwappedEventType(eventObj.event);
225
+ for(var i = 0, maxLength = events.length; i < maxLength; i++)
226
+ {
227
+ var listener = events[i];
228
+ if(listener.event !== eventObj.event || listener.obj !== eventObj.obj)
229
+ {
230
+ continue;
231
+ }
232
+
233
+ if(listener.fn === eventObj.fn || (swappable === true && listener.originalFn === eventObj.fn))
234
+ {
235
+ return listener;
236
+ }
237
+ }
238
+
239
+ return false;
240
+ },
241
+
242
+ /* this will remove all events added to an element through
243
+ the base framework.
244
+
245
+ @param (object) obj = the element object */
246
+ removeEvents: function(obj)
247
+ {
248
+ if(!obj || typeof obj !== 'object')
249
+ {
250
+ return this;
251
+ }
252
+
253
+ DataTracker.remove(obj, 'events');
254
+
255
+ return this;
256
+ },
257
+
258
+ swappedEvents: [
259
+ 'DOMMouseScroll',
260
+ 'wheel',
261
+ 'mousewheel',
262
+ 'mousemove',
263
+ 'popstate'
264
+ ],
265
+
266
+ addSwappedType: function(type)
267
+ {
268
+ this.swappedEvents.push(type);
269
+ },
270
+
271
+ /* this will check if an event type could be swapped.
272
+ @param string event = the type of event
273
+ */
274
+ isSwappedEventType: function(event)
275
+ {
276
+ /* we want to check if the event type is in the
277
+ swapped event array */
278
+ var index = base.inArray(this.swappedEvents, event);
279
+ return (index > -1);
280
+ }
281
+ };
282
+
283
+ base.augment(
284
+ {
285
+ /* this will add an event listener.
286
+ @param string event = the name of the event to listen
287
+ @param object obj = obj to add the listener
288
+ @param function fn = function to perform on event
289
+ @param bool capture = event capture
290
+ @return (object) a reference to the base object */
291
+ addListener: function(event, obj, fn, capture)
292
+ {
293
+ /* we want to add this to the active events */
294
+ this.events.add(event, obj, fn, capture);
295
+
296
+ return this;
297
+ },
298
+
299
+ /* this will add an event listener.
300
+ @param mixed event = the name of the event to listen
301
+ @param object obj = obj to add the listener
302
+ @param function fn = function to perform on event
303
+ @param bool capture = event capture
304
+ @return (object) a reference to the base object */
305
+ on: function(event, obj, fn, capture)
306
+ {
307
+ var events = this.events;
308
+ if(this.isArray(event))
309
+ {
310
+ for(var i = 0, length = event.length; i < length; i++)
311
+ {
312
+ var evt = event[i];
313
+ events.add(evt, obj, fn, capture);
314
+ }
315
+ }
316
+ else
317
+ {
318
+ events.add(event, obj, fn, capture);
319
+ }
320
+ return this;
321
+ },
322
+
323
+ /* this will remove an event listener.
324
+ @param mixed event = the name of the event to listen
325
+ @param object obj = obj to remove the listener
326
+ @param function fn = function to perform on event
327
+ @param bool capture = event capture
328
+ @return (object) a reference to the base object */
329
+ off: function(event, obj, fn, capture)
330
+ {
331
+ var events = this.events;
332
+ if(this.isArray(event))
333
+ {
334
+ for(var i = 0, length = event.length; i < length; i++)
335
+ {
336
+ var evt = event[i];
337
+ events.remove(evt, obj, fn, capture);
338
+ }
339
+ }
340
+ else
341
+ {
342
+ events.remove(event, obj, fn, capture);
343
+ }
344
+ return this;
345
+ },
346
+
347
+ /* this will remove an event listener.
348
+ @param string event = the name of the event to listen
349
+ @param object obj = obj to add the listener
350
+ @param function fn = function to perform on event
351
+ @param bool capture = event capture
352
+ @return (object) a reference to the base object */
353
+ removeListener: function(event, obj, fn, capture)
354
+ {
355
+ /* we want to remove this from the active events */
356
+ this.events.remove(event, obj, fn, capture);
357
+
358
+ return this;
359
+ },
360
+
361
+ _createEvent: function()
362
+ {
363
+ /* create a local function to perform the check
364
+ once then override the function */
365
+ var createEvent;
366
+ if('CustomEvent' in window)
367
+ {
368
+ createEvent = function(obj, event, eventType, settings, params)
369
+ {
370
+ var e;
371
+ if(eventType === 'HTMLEvents')
372
+ {
373
+ e = new Event(event);
374
+ }
375
+ else if(eventType === 'MouseEvents')
376
+ {
377
+ e = new MouseEvent(event, settings);
378
+ }
379
+ else
380
+ {
381
+ e = new CustomEvent(event, params);
382
+ }
383
+ return e;
384
+ };
385
+ }
386
+ else if('createEventObject' in document)
387
+ {
388
+ createEvent = function(obj, event, eventType, settings, params)
389
+ {
390
+ var e = document.createEventObject();
391
+ e.eventType = event;
392
+ return e;
393
+ };
394
+ }
395
+ else
396
+ {
397
+ createEvent = function(obj, event, eventType, settings, params)
398
+ {
399
+ var e = document.createEvent(eventType);
400
+ if (eventType === 'HTMLEvents')
401
+ {
402
+ obj.initEvent(event, settings.bubbles, settings.cancelable);
403
+ }
404
+ else if(eventType === 'MouseEvents')
405
+ {
406
+ e.initMouseEvent(
407
+ event,
408
+ settings.canBubble,
409
+ settings.cancelable,
410
+ settings.view,
411
+ settings.detail,
412
+ settings.screenX,
413
+ settings.screenY,
414
+ settings.clientX,
415
+ settings.clientY,
416
+ settings.ctrlKey,
417
+ settings.altKey,
418
+ settings.shiftKey,
419
+ settings.metaKey,
420
+ settings.button,
421
+ settings.relatedTarget
422
+ );
423
+ }
424
+ else if(eventType === 'CustomEvent')
425
+ {
426
+ e.initCustomEvent(event, settings.bubbles, settings.cancelable, params);
427
+ }
428
+ return e;
429
+ };
430
+ }
431
+
432
+ /* this will override method with cached method
433
+ and we need to return and call with object */
434
+ return this.overrideMethod(this, '_createEvent', createEvent, arguments);
435
+ },
436
+
437
+ /* this will create an event object that can be used
438
+ to dispatch events. this supports html mouse and cu-
439
+ stom events.
440
+ @param (string) event = the name of the event
441
+ @param (object) obj = obj to trigger the listener
442
+ @param (object) options = event settings options
443
+ @param [(object)] params = custom event params object
444
+ @return (object | false) the event or false */
445
+ createEvent: function(event, obj, options, params)
446
+ {
447
+ if(!obj || typeof obj !== 'object')
448
+ {
449
+ return false;
450
+ }
451
+
452
+ var settings = {
453
+ pointerX: 0,
454
+ pointerY: 0,
455
+ button: 0,
456
+ view: window,
457
+ detail: 1,
458
+ screenX: 0,
459
+ screenY: 0,
460
+ clientX: 0,
461
+ clientY: 0,
462
+ ctrlKey: false,
463
+ altKey: false,
464
+ shiftKey: false,
465
+ metaKey: false,
466
+ bubbles: true,
467
+ cancelable: true,
468
+ relatedTarget: null
469
+ };
470
+
471
+ if(options && typeof options === 'object')
472
+ {
473
+ settings = base.extendObject(settings, options);
474
+ }
475
+
476
+ var eventType = this._getEventType(event);
477
+ return this._createEvent(obj, event, eventType, settings, params);
478
+ },
479
+
480
+ _getEventType: function(event)
481
+ {
482
+ var eventTypes = {
483
+ 'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
484
+ 'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/
485
+ };
486
+
487
+ var eventType = 'CustomEvent';
488
+ for(var prop in eventTypes)
489
+ {
490
+ if(eventTypes.hasOwnProperty(prop))
491
+ {
492
+ var value = eventTypes[prop];
493
+ if(event.match(value))
494
+ {
495
+ eventType = prop;
496
+ break;
497
+ }
498
+ }
499
+ }
500
+ return eventType;
501
+ },
502
+
503
+ _trigger: function()
504
+ {
505
+ /* create a local function to perform the check
506
+ once then override the function */
507
+ var trigger;
508
+ if('createEvent' in document)
509
+ {
510
+ trigger = function(obj, event)
511
+ {
512
+ obj.dispatchEvent(event);
513
+ };
514
+ }
515
+ else
516
+ {
517
+ // old ie
518
+ trigger = function(obj, event)
519
+ {
520
+ var type = event.type;
521
+ obj.fireEvent('on' + type, event);
522
+ };
523
+ }
524
+
525
+ /* this will override method with cached method
526
+ and we need to return and call with object */
527
+ return this.overrideMethod(this, '_trigger', trigger, arguments);
528
+ },
529
+
530
+ /* this will trigger an event.
531
+ @param (mixed) event = the name of the event or event object
532
+ @param object obj = obj to trigger the listener
533
+ @param object params = event params object
534
+ @return (object) a reference to the base object */
535
+ trigger: function(event, obj, params)
536
+ {
537
+ if(!obj || typeof obj !== 'object')
538
+ {
539
+ return this;
540
+ }
541
+
542
+ var e = (typeof event === 'string')? this.createEvent(event, obj, null, params) : event;
543
+ this._trigger(obj, e);
544
+ return this;
545
+ },
546
+
547
+ /* this will store the mouse wheel event name */
548
+ mouseWheelEventType: null,
549
+
550
+ /* this will get theclientmouse wheel event name.
551
+ @return (string) */
552
+ getMouseWheelEventType: function()
553
+ {
554
+ /* this will check what mouse wheel type
555
+ the client supports
556
+ @return (string) the event name */
557
+ var getMouseWheelType = function()
558
+ {
559
+ var type = 'wheel';
560
+ if('onmousewheel' in global)
561
+ {
562
+ type = 'mousewheel';
563
+ }
564
+ else if('DOMMouseScroll' in global)
565
+ {
566
+ type = 'DOMMouseScroll';
567
+ }
568
+ return type;
569
+ };
570
+
571
+ /* this will get the event type or
572
+ one time set the type and return the type */
573
+ return this.mouseWheelEventType || (
574
+ this.mouseWheelEventType = getMouseWheelType()
575
+ );
576
+ },
577
+
578
+ onMouseWheel: function(callBackFn, obj, cancelDefault, capture)
579
+ {
580
+ if(typeof obj === "undefined")
581
+ {
582
+ obj = window;
583
+ }
584
+
585
+ var self = this;
586
+
587
+ /* we want to return the mousewheel data
588
+ to this private callback function before
589
+ returning to the call back function*/
590
+ var mouseWeelResults = function(e)
591
+ {
592
+ e = e || window.event;
593
+ var delta = Math.max(-1, Math.min(1, (-e.deltaY || e.wheelDelta || -e.detail)));
594
+
595
+ /* we can now send the mouse wheel results to
596
+ the call back function */
597
+ if(typeof callBackFn === 'function')
598
+ {
599
+ callBackFn(delta, e);
600
+ }
601
+
602
+ /* we want to check to cancel default */
603
+ if(typeof cancelDefault !== 'undefined' && cancelDefault === true)
604
+ {
605
+ self.preventDefault(e);
606
+ }
607
+ };
608
+
609
+ var event = this.getMouseWheelEventType();
610
+ this.events.add(event, obj, mouseWeelResults, capture, true, callBackFn);
611
+
612
+ return this;
613
+ },
614
+
615
+ offMouseWheel: function(callBackFn, obj, capture)
616
+ {
617
+ if(typeof obj === "undefined")
618
+ {
619
+ obj = window;
620
+ }
621
+
622
+ var event = this.getMouseWheelEventType();
623
+ this.off(event, obj, callBackFn, capture);
624
+ },
625
+
626
+ /* this will prevent the default action
627
+ of an event
628
+ @param (object) e = the event object
629
+ @return (object) a reference to the base object */
630
+ preventDefault: function(e)
631
+ {
632
+ e = e || window.event;
633
+
634
+ if(typeof e.preventDefault === 'function')
635
+ {
636
+ e.preventDefault();
637
+ }
638
+ else
639
+ {
640
+ e.returnValue = false;
641
+ }
642
+
643
+ return this;
644
+ },
645
+
646
+ /* this will cancel the propagation of an event.
647
+ @param (object) e = the event object
648
+ @return (object) a reference to the base object */
649
+ stopPropagation: function(e)
650
+ {
651
+ e = e || window.event;
652
+
653
+ if(typeof e.stopPropagation === 'function')
654
+ {
655
+ e.stopPropagation();
656
+ }
657
+ else
658
+ {
659
+ e.cancelBubble = true;
660
+ }
661
+
662
+ return this;
663
+ }
664
+ });
665
+
666
+ })(this);