01.
02.
03.
04.
function
addEvent(element, type, handler) {
05.
06.
if
(!handler.$$guid) handler.$$guid = addEvent.guid++;
07.
08.
if
(!element.events) element.events = {};
09.
10.
var
handlers = element.events[type];
11.
if
(!handlers) {
12.
handlers = element.events[type] = {};
13.
14.
if
(element[
"on"
+ type]) {
15.
handlers[0] = element[
"on"
+ type];
16.
}
17.
}
18.
19.
handlers[handler.$$guid] = handler;
20.
21.
element[
"on"
+ type] = handleEvent;
22.
};
23.
24.
addEvent.guid = 1;
25.
function
removeEvent(element, type, handler) {
26.
27.
if
(element.events && element.events[type]) {
28.
delete
element.events[type][handler.$$guid];
29.
}
30.
};
31.
function
handleEvent(event) {
32.
var
returnValue =
true
;
33.
34.
event = event || fixEvent(window.event);
35.
36.
var
handlers =
this
.events[event.type];
37.
38.
for
(
var
i
in
handlers) {
39.
this
.$$handleEvent = handlers[i];
40.
if
(
this
.$$handleEvent(event) ===
false
) {
41.
returnValue =
false
;
42.
}
43.
}
44.
return
returnValue;
45.
};
46.
47.
function
fixEvent(event) {
48.
49.
event.preventDefault = fixEvent.preventDefault;
50.
event.stopPropagation = fixEvent.stopPropagation;
51.
return
event;
52.
};
53.
fixEvent.preventDefault =
function
() {
54.
this
.returnValue =
false
;
55.
};
56.
fixEvent.stopPropagation =
function
() {
57.
this
.cancelBubble =
true
;
58.
};