examples/lib/delegate.js
function fire(event, target, listener) {
		var returned, oldData;

		if (listener.d !== null) {
			oldData = event.data;
			event.data = listener.d;
			returned = listener.h.call(target, event, target);
			event.data = oldData;
		} else {
			returned = listener.h.call(target, event, target);
		}

		return returned;
	}
function fire(event, target, listener) {
		var returned, oldData;

		if (listener.d !== null) {
			oldData = event.data;
			event.data = listener.d;
			returned = listener.h.call(target, event, target);
			event.data = oldData;
		} else {
			returned = listener.h.call(target, event, target);
		}

		return returned;
	}
Fire a listener on a target

@private
@param {Event} event
@param {Node} target
@param {Object} listener