
//////////////  addEvent ///////////////////////////////////////////////////////////////////
// Overview - crossbrowser function for attaching events to objects
// obj - the object to which the event is to be assigned
// evType - the event type to be attached  i.e.  "click","blur", etc.
// fn - the function to be called by the event 
// useCapture - boolean for whether to use event capturing - works only in Netscape 6.2
////////////////////////////////////////////////////////////////////////////////////////////

function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
} 

//////////////  removeEvent ///////////////////////////////////////////////////////////////////
// Overview - crossbrowser function for detaching events from objects
// obj - the object from which the event is to be detached
// evType - the event type to be detached  i.e.  "click","blur", etc.
// fn - the function to be detached from the event 
// useCapture - boolean for whether to use event capturing - works only in Netscape 6.2
////////////////////////////////////////////////////////////////////////////////////////////

function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
} 


/////////////////////////// getEvent /////////////////////////
// Overview: Crossbrowser function that returns the event object
// args - the arguments from the function called by an event
// For Example:   function cmdSubmit_onclick(){ var oE = getEvent(arguments); }
function getEvent(args){
	var oEvent;
	if(document.all){
		oEvent = window.event;
	}
	else{
		if(args[0]){
			//inline or addEvent
			oEvent = args[0];
		}
		else{
			// attribute event
			oEvent =  args.callee.caller.arguments[0];
		}
	}
	return oEvent;
}

/////////////////////////// getEventSrc /////////////////////////
// Overview: Crossbrowser function that returns the event source object
// oEvent - the event 
// For Example:   function cmdSubmit_onclick(){ var oE = getEvent(arguments);var oESrc = getEvent(oE); }
///////////////////////////////////////////////////////////////////
function getEventSrc(oEvent){
	var oSrc;
	if(document.all){
		oSrc = oEvent.srcElement;
	}
	else{
		oSrc = oEvent.target;
		while(!(oSrc.tagName)){
			oSrc = oSrc.parentNode;
		} 
	}
	return oSrc;
}