-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathListener.js
43 lines (39 loc) · 1.05 KB
/
Listener.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var Listener = Class.extend({
listen: function(object, eventName, callback)
{
var context = this;
var callbackWithContext = function(event) {
callback.call(context, event);
}
if (object instanceof Listener) {
object._addListener(eventName, callbackWithContext);
} else if(object instanceof Element) {
object.addEventListener(eventName, function(event){
event.source = this;
event.name = eventName;
callbackWithContext(event);
}, false);
}
},
_addListener: function(eventName, callback)
{
if (this._aEventsListeners == undefined) {
this._aEventsListeners = new Object();
}
if (this._aEventsListeners[eventName] == undefined) {
this._aEventsListeners[eventName] = new Array();
}
this._aEventsListeners[eventName].push(callback);
},
notify: function(eventName, event)
{
event = event || {};
event.source = this;
event.name = eventName;
if (this._aEventsListeners[eventName] != undefined) {
for (i in this._aEventsListeners[eventName]) {
this._aEventsListeners[eventName][i](event);
}
}
}
});