function trim( val ) {
	return String(val).replace(/^\s+/, "").replace(/\s+$/, "");
}

function hoverElement( elm, mode ) {
	// 0/undefined = no forcing, 1 = force hover, 2 = force unhover
	mode = parseInt( mode );
	
	if( elm.nodeType ) {
		var className = String(elm.className);
		var hoverClass = "hover";
		var firstClass = className.match( /^\b[^\s]+/ );
			firstClass = ( firstClass !== null )? firstClass[0] : "";
			
		if( trim(firstClass) != trim(hoverClass) && firstClass != "" )
			hoverClass = firstClass +"-"+ hoverClass;
		
		var classMatchRegExp = eval('/(\\s|\\b)'+ hoverClass +'\\b/');
		var classMatch = className.match( classMatchRegExp );
		
		//alert(className +": "+ classMatchRegExp +": "+ classMatch)
						
		if( classMatch !== null && mode != 1 ) {
			// remover other hoverclass's
			className = className.replace( /\s[^s]+hover\b/, "" );
			
			className = className.replace( classMatchRegExp, "" );
		} else if( mode < 2 ) {
			// remover other hoverclass's
			className = className.replace( /\s[^s]+hover\b/, "" );
			
			// add new hover class
			className += " "+ hoverClass;
		}
		
		//alert(className);
		
		elm.className = className;
	}
}