// Cross-browser event handling

// Cross-browser event listener attachment
function attachEventListener(target, eventType, functionRef, capture) {

	// W3C DOM Level 2 event listener model for Firefox, Opera 9, Safari 
	if (typeof target.addEventListener != "undefined") {
		target.addEventListener(eventType, functionRef, capture);
	}
	
	// IE model - including IE7 :( 
	else if (typeof target.attachEvent != "undefined") {
		target.attachEvent("on" + eventType, functionRef);
	}
	
	// Opera 8 and below - onload event only defined on document object, not window object
	else if (target == "window" && eventType == "load" && typeof document.addEventListener != "undefined") {
		document.addEventListener("load", functionRef, false);
	}
	
	// Older browsers (e.g., Mac IE5)
	else {
		eventType = "on" + eventType;
		
		if (typeof target[eventType] == "function") {
		
			var oldListener = target[eventType];
			
			target[eventType] = function() {
				oldListener();
				return functionRef();
			};
		}
		else {
			target[eventType] = functionRef;
		}
	}	
}

/*******************************************************************************/

// W3C event listeners modify the event object to cancel the element's default action.
function stopDefaultAction(event) {

	// IE
	event.returnValue = false;
	
	// Standards-compliant browsers
	if (event.preventDefault) {
		event.preventDefault();
	}
}

/*******************************************************************************/

