         else
           throw new Error "fireEvent: Couldn't find an event class for event '#{eventName}'."
       ev = doc.createEvent eventClass
+      # All events created as bubbling and cancelable.
       ev.initEvent eventName, true, true
-      # All events created as bubbling and cancelable.
+      # allow detection of synthetic events
       ev.synthetic = true
       ev
-      # allow detection of synthetic events
-    # The second parameter says go ahead with the default action
+    # The second parameter says: go ahead with the default action
     node.dispatchEvent ev, true
   else if node.fireEvent
     # IE-old school style
     event = doc.createEventObject()
     event.synthetic = true
     # allow detection of synthetic events
-    node.fireEvent 'on' + eventName, event
-  else
-    node[eventName]() #node.click() etc.
+    node.fireEvent 'on' + eventName, evo or event
+#   else
+#     node[eventName]? evo #node.click() etc.
 
 # ---
 # generated by js2coffee 2.2.0
 ## /LIB
 
 DBG_SHOW_FOUND = false
+DBG_PRINT_POS = false
+DBG_LOG_SPEED = false
 
 # keeps track of last MAX positions and derivations, to compute overscroll
 class Buf
   MAX = 50 #max_length: idx MAX == 0
   idx: 0
   len: 0
-  arr: [{m:0, d:0, l:1}] #see @add for details
+  arr: [] # @add for details
 
   constructor: (pos) ->
-    @arr[0].p = pos
-    @arr[0].t = new Date
+    @idx = 0
+    @len = 0
+    @arr = [
+      m:0
+      d:0
+      l:1
+      p:pos
+      t: new Date
+    ]
 
   # returns DIFF from last
   # pos of mouse (as obtained from event)

    # Different events have different event classes.
    # If this switch statement can't map an eventName to an eventClass,
    # the event firing is going to fail.
    ev = evo or do->
      eventClass = switch eventName
        # Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.
        when 'click', 'mousedown', 'mouseup'

# exists after dragger ends
class Overscroll
  constructor: (@speedX, @speedY, scrollerX, scrollerY)->
    console.log 'speed.xy', @speedX, @speedY if DBG_LOG_SPEED
    @mx = new Momentum @speedX, scrollerX.scroll if scrollerX and scrollerX.scrollable
    @my = new Momentum @speedY, scrollerY.scroll if scrollerY and scrollerY.scrollable
    @mx = @mx or stop:()->0 #if not scrollable: stub, so it can be 'stopped'
