afn = function (e) { 
                var e = e || window.event; 

                if (typeof callback === 'function') {
                    callback.call(ctx, e);
                }
            }
@
#Crafty.addEvent
@category Events, Misc
@sign public this Crafty.addEvent(Object ctx, HTMLElement obj, String event, Function callback)
@param ctx - Context of the callback or the value of `this`
@param obj - Element to add the DOM event to
@param event - Event name to bind to
@param callback - Method to execute when triggered

Adds DOM level 3 events to elements. The arguments it accepts are the call
context (the value of `this`), the DOM element to attach the event to,
the event name (without `on` (`click` rather than `onclick`)) and
finally the callback method.

If no element is passed, the default element will be `window.document`.

Callbacks are passed with event data.

@see Crafty.removeEvent