scratch – Blame information for rev 117
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
117 | office | 1 | /*========================= |
2 | Events/Callbacks/Plugins Emitter |
||
3 | ===========================*/ |
||
4 | function normalizeEventName (eventName) { |
||
5 | if (eventName.indexOf('on') !== 0) { |
||
6 | if (eventName[0] !== eventName[0].toUpperCase()) { |
||
7 | eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1); |
||
8 | } |
||
9 | else { |
||
10 | eventName = 'on' + eventName; |
||
11 | } |
||
12 | } |
||
13 | return eventName; |
||
14 | } |
||
15 | s.emitterEventListeners = { |
||
16 | |||
17 | }; |
||
18 | s.emit = function (eventName) { |
||
19 | // Trigger callbacks |
||
20 | if (s.params[eventName]) { |
||
21 | s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); |
||
22 | } |
||
23 | var i; |
||
24 | // Trigger events |
||
25 | if (s.emitterEventListeners[eventName]) { |
||
26 | for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { |
||
27 | s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); |
||
28 | } |
||
29 | } |
||
30 | // Trigger plugins |
||
31 | if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); |
||
32 | }; |
||
33 | s.on = function (eventName, handler) { |
||
34 | eventName = normalizeEventName(eventName); |
||
35 | if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = []; |
||
36 | s.emitterEventListeners[eventName].push(handler); |
||
37 | return s; |
||
38 | }; |
||
39 | s.off = function (eventName, handler) { |
||
40 | var i; |
||
41 | eventName = normalizeEventName(eventName); |
||
42 | if (typeof handler === 'undefined') { |
||
43 | // Remove all handlers for such event |
||
44 | s.emitterEventListeners[eventName] = []; |
||
45 | return s; |
||
46 | } |
||
47 | if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return; |
||
48 | for (i = 0; i < s.emitterEventListeners[eventName].length; i++) { |
||
49 | if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1); |
||
50 | } |
||
51 | return s; |
||
52 | }; |
||
53 | s.once = function (eventName, handler) { |
||
54 | eventName = normalizeEventName(eventName); |
||
55 | var _handler = function () { |
||
56 | handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); |
||
57 | s.off(eventName, _handler); |
||
58 | }; |
||
59 | s.on(eventName, _handler); |
||
60 | return s; |
||
61 | }; |