summaryrefslogtreecommitdiffstats
path: root/comiccontrol/draganddrop/events.js
diff options
context:
space:
mode:
Diffstat (limited to 'comiccontrol/draganddrop/events.js')
-rw-r--r--comiccontrol/draganddrop/events.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/comiccontrol/draganddrop/events.js b/comiccontrol/draganddrop/events.js
new file mode 100644
index 0000000..90b2058
--- /dev/null
+++ b/comiccontrol/draganddrop/events.js
@@ -0,0 +1,43 @@
+/* Copyright (c) 2005 Tim Taylor Consulting (see LICENSE.txt) */
+
+ToolMan._eventsFactory = {
+ fix : function(event) {
+ if (!event) event = window.event
+
+ if (event.target) {
+ if (event.target.nodeType == 3) event.target = event.target.parentNode
+ } else if (event.srcElement) {
+ event.target = event.srcElement
+ }
+
+ return event
+ },
+
+ register : function(element, type, func) {
+ if (element.addEventListener) {
+ element.addEventListener(type, func, false)
+ } else if (element.attachEvent) {
+ if (!element._listeners) element._listeners = new Array()
+ if (!element._listeners[type]) element._listeners[type] = new Array()
+ var workaroundFunc = function() {
+ func.apply(element, new Array())
+ }
+ element._listeners[type][func] = workaroundFunc
+ element.attachEvent('on' + type, workaroundFunc)
+ }
+ },
+
+ unregister : function(element, type, func) {
+ if (element.removeEventListener) {
+ element.removeEventListener(type, func, false)
+ } else if (element.detachEvent) {
+ if (element._listeners
+ && element._listeners[type]
+ && element._listeners[type][func]) {
+
+ element.detachEvent('on' + type,
+ element._listeners[type][func])
+ }
+ }
+ }
+}