| (function() { |
| var CustomEvents; |
| |
| CustomEvents = { |
| bind: function(element, eventName, handler) { |
| if (element.addEventListener) { |
| return element.addEventListener(eventName, handler, false); |
| } else if (element.attachEvent) { |
| element[eventName] = 1; |
| return element.attachEvent('onpropertychange', function(event) { |
| if (event.propertyName === eventName) { |
| return handler(); |
| } |
| }); |
| } else { |
| throw new Error("Attempt to attach custom event " + eventName + " to something which isn't a DOMElement"); |
| } |
| }, |
| fire: function(element, eventName) { |
| var event; |
| if (element.addEventListener) { |
| event = document.createEvent('HTMLEvents'); |
| event.initEvent(eventName, true, true); |
| return document.dispatchEvent(event); |
| } else if (element.attachEvent) { |
| if (element[eventName]) { |
| return element[eventName]++; |
| } |
| } else { |
| throw new Error("Attempt to fire custom event " + eventName + " on something which isn't a DOMElement"); |
| } |
| } |
| }; |
| |
| exports.bind = CustomEvents.bind; |
| |
| exports.fire = CustomEvents.fire; |
| |
| }).call(this); |