examples/lib/delegate.js
function handle(listenerList, root, event) {
		var listener, returned, specificList, target;

		if (event[EVENT_IGNORE] === true) {
			return;
		}

		target = event.target;
		if (target.nodeType === Node.TEXT_NODE) {
			target = target.parentNode;
		}
		specificList = listenerList[event.type];

		// If the fire function actually causes the specific list to be destroyed,
		// Need check that the specific list is still populated
		while (target && specificList.length > 0) {
			listener = specificList.first;
			do {

				// Check for match and fire the event if there's one
				// TODO:MCG:20120117: Need a way to check if event#stopImmediateProgagation was called. If so, break both loops.
				if (listener.m.call(target, listener.p, target)) {
					returned = fire(event, target, listener);
				}

				// Stop propagation to subsequent callbacks if the callback returned false
				if (returned === false) {
					event[EVENT_IGNORE] = true;
					return;
				}

				listener = listener.next;

			// If the fire function actually causes the specific list object to be destroyed,
			// need a way of getting out of here so check listener is set
			} while (listener !== specificList.first && listener);

			// TODO:MCG:20120117: Need a way to check if event#stopProgagation was called. If so, break looping through the DOM.
			// Stop if the delegation root has been reached
			if (target === root) {
				break;
			}

			target = target.parentElement;
		}
	}
function handle(listenerList, root, event) {
		var listener, returned, specificList, target;

		if (event[EVENT_IGNORE] === true) {
			return;
		}

		target = event.target;
		if (target.nodeType === Node.TEXT_NODE) {
			target = target.parentNode;
		}
		specificList = listenerList[event.type];

		// If the fire function actually causes the specific list to be destroyed,
		// Need check that the specific list is still populated
		while (target && specificList.length > 0) {
			listener = specificList.first;
			do {

				// Check for match and fire the event if there's one
				// TODO:MCG:20120117: Need a way to check if event#stopImmediateProgagation was called. If so, break both loops.
				if (listener.m.call(target, listener.p, target)) {
					returned = fire(event, target, listener);
				}

				// Stop propagation to subsequent callbacks if the callback returned false
				if (returned === false) {
					event[EVENT_IGNORE] = true;
					return;
				}

				listener = listener.next;

			// If the fire function actually causes the specific list object to be destroyed,
			// need a way of getting out of here so check listener is set
			} while (listener !== specificList.first && listener);

			// TODO:MCG:20120117: Need a way to check if event#stopProgagation was called. If so, break looping through the DOM.
			// Stop if the delegation root has been reached
			if (target === root) {
				break;
			}

			target = target.parentElement;
		}
	}
Internal function proxied by Delegate#on

@private
@param {Object} lisenerList
@param {Node|DOMWindow} root
@param {Event} event