//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc)
	{
	try
		{
		if (!obj.myEvents) obj.myEvents={};
		if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
		var evts = obj.myEvents[evt];
		evts[evts.length]=fnc;
		}
	catch(e)
		{
		var_dump(e);
		}
	}
	
function MyFireEvent(obj,evt)
	{
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) 
		evts[i]();
	}
function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener)
		{
		obj.addEventListener(evt,fnc,useCapture);
		return true;
		} 
	else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else
		{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
		}
	} 




/**
 * Added by James R. Carr... cross browser way to detach an event handler
 *
 * @access public
 * @param Object obj - object firing the event
 * @param string evt  - the type of event to handle
 * @param Function fnc - function object to handle the event
 * @param bool useCapture - beats me.
 * @return void 
 */
function RemoveEvent(obj, evt, fnc, useCapture)
	{
	if(obj.removeEventListener)
		{
		obj.removeEventListener(evt, fnc, useCapture);
		return true;
		}
	else if(obj.detachEvent) return obj.detachEvent("on"+evt, fnc);
	else
		{
		throw "Removing of events is not supported, please implement. :(";
		}
	}
/**
 * Stops the default action of an event
 *
 * @access public
 * @param Event
 * @return void
 */
function stopDefaultAction(e)
	{
	if(window.event)
	   	{
	 	window.event.cancelBubble = true
	 	window.event.returnValue = false;
	 	}
	else
 		{
	    e.preventDefault();
    	}
	}