5 bind: function(element, eventName, handler) {
6 if (element.addEventListener) {
7 return element.addEventListener(eventName, handler, false);
8 } else if (element.attachEvent) {
9 element[eventName] = 1;
10 return element.attachEvent('onpropertychange', function(event) {
11 if (event.propertyName === eventName) {
16 throw new Error("Attempt to attach custom event " + eventName + " to something which isn't a DOMElement");
19 fire: function(element, eventName) {
21 if (element.addEventListener) {
22 event = document.createEvent('HTMLEvents');
23 event.initEvent(eventName, true, true);
24 return document.dispatchEvent(event);
25 } else if (element.attachEvent) {
26 if (element[eventName]) {
27 return element[eventName]++;
30 throw new Error("Attempt to fire custom event " + eventName + " on something which isn't a DOMElement");
35 exports.bind = CustomEvents.bind;
37 exports.fire = CustomEvents.fire;