// generic element fetcher
function getElement(id){
	if (document.getElementById)
		return document.getElementById(id);
	if (document.all)
		return document.all[id];
	
	return null;
}

function getElementFromEvent(event) {
	if (event.srcElement)
		return event.srcElement;
	if (event.currentTarget)
		return event.currentTarget;
	return null;
}
//	generic event adder
//						 element,  [string],  [function name]
function addEventHandler(element, eventName, functionName){
	if (element.attachEvent)
		element.attachEvent('on' + eventName, functionName);
	if (element.addEventListener)
		element.addEventListener(eventName, functionName, false);
}


/* add this to the onload of the body, */
function arbitraryHoverHandlers(){
	// thanks Boki #javascript for cluing me into the wildcard
	// you can also replace the * with any specific element if you do not want to hover
	// everything
	if (document.body.getElementsByTagName)
	bodyElements = document.body.getElementsByTagName("*" );
	
	for(i = 0; i < bodyElements.length; i++){
		addEventHandler(bodyElements[i], "mouseover", eventHover);
		addEventHandler(bodyElements[i], "mouseout", eventUnHover);
	}
}

/* particular events */
function eventHover(event){
	element = getElementFromEvent(event);
		
	element.className += ' hover';
}

function eventUnHover(event){
	element = getElementFromEvent(event);
		
	element.className = element.className.replace(/\bhover\b/gi, '');
}

// add the hovering onload
window.onload = arbitraryHoverHandlers;
