/****************************************
 common_events.js
 This javascript file has common event-related utility functions.
 
 Change History (Author, Date, Comment)
 --------------------------------------
 Kyle DeLoache		01-05-2007	Created.
 Kyle DeLoache		04-04-2005	Added getEvent() and getEventTarget() functions.
 *****************************************/


//=================
// addEvent function:
//
// PARAMETERS - 
// el:  The element being bound to the event.
// evType:  The handler name without the "on" prefix.  For example "load" is used insted of "onload".
// fn:  The function called when the evType occurs on the element.  Do not use parentheses.
// useCapture:  Give this a value of false.  This is a Boolean that is used to capture events before the handler function is implemented.
// EXAMPLE - To call the initPage() function when a page loads type:  addEvent(window,"load",initPage,false);
//=================

function addEvent(el, evType, fn, useCapture) {
// event handling for IE5+, Safari, and Firefox

	if (el.addEventListener) {

		el.addEventListener(evType, fn, useCapture);
		return true;

	} else if (el.attachEvent) {

		var r = el.attachEvent('on' + evType, fn);
		return r;

	} else {
		el['on' + evType] = fn;
	}
}


//=================
// removeEvent function:
//
// PARAMETERS:  Same parameters as the addEvent function.
//=================

function removeEvent(el, evType, fn, useCapture) {
// event handling for IE5+ and Firefox

	if (el.removeEventListener) {

		el.removeEventListener(evType, fn, useCapture);
		return true;

	} else if (el.detachEvent) {

		var r = el.detachEvent('on' + evType, fn);
		return r;

	} else {
		el['on' + evType] = null;
	}
}



//=================
// getEvent and getEventTarget functions:
//=================

function getEvent(e) {
	var evt = window.event || e;
	return evt;
}

function getEventTarget(e) {
	var evt = window.event || e;
	var eventTarget = window.event ? window.event.srcElement : evt.target;
	return eventTarget;
}

//=================
// The following functions are used for working with synthesized events.
//=================


function synthesizeEvent(eventCategory) {
	
	var evt;
	
	if (document.createEventObject) evt = document.createEventObject(); 
	else if (document.createEvent) evt = document.createEvent(eventCategory); 
	else evt = null; 

	return evt;
}

function initializeEvent(evt,eType,bubblesFlag,cancelableFlag) {

	//Performed for DOM compliant browsers, but not for I.E.

	if (document.createEvent) {
		evt.initEvent(eType,bubblesFlag,cancelableFlag);
	}
}

function triggerEvent(eType, evt, eTarget) {

	if (document.createEventObject) {  //I.E.
		eTarget.fireEvent("on" + eType,evt);

	} else if (document.createEvent) {  //Standard DOM
		eTarget.dispatchEvent(evt);
	}
}


