-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevents.js
53 lines (43 loc) · 991 Bytes
/
events.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
44
45
46
47
48
49
50
51
52
53
var eventManager = (function(){
var listeners = {};
function on(eventObj){
var listener = eventObj.listener
, eventName = eventObj.eventName;
if(typeof listeners[eventName] === 'undefined'){
listeners[eventName] = [];
}
listeners[eventName].push(listener);
};
function trigger(eventObj){
var scope = eventObj.scope || window
, eventName = eventObj.eventName
, argObject = eventObj.argObject
, iter;
if(typeof listeners[eventName] !== 'undefined'){
for(iter = 0; iter < listeners[eventName].length; iter++){
listeners[eventName][iter].apply(scope, [argObject]);
}
}
};
return{
on: on
, trigger: trigger
};
})();
Array.prototype.contains = function(object){
var iter;
for(iter = 0; iter < this.length; iter++){
if(equals(object, this[iter])){
return true;
}
}
return false;
function equals(objA, objB){
if(typeof objA.equals === 'function'){
return objA.equals(objB);
}
else{
return objA === objB;
}
};
};