var preloadedImages = [];

function containsClass(el, className)
{
	var classes = el.className.split(' ');
	for (var i=0; i<classes.length; i++)
		if (classes[i]==className) return true;
	return false;
}

function getImage(el) { return (el.tagName.toUpperCase()=='IMG' || el.tagName.toUpperCase()=='INPUT') ? el : el.getElementsByTagName('img')[0]; }

function initialiseRolloverElements(tag)
{
	var els = document.getElementsByTagName(tag);
	
	for (var i=0; i<els.length; i++)
	{
		if (containsClass(els[i], 'rollover'))
		{
			var img = getImage(els[i]);
			
			if (/.+_off.+/.test(img.src))
			{
				var pri = new Image(); pri.src = img.src.replace(/(.+)_off(.+)/, "$1_on$2");
				preloadedImages.push(pri);
			
				attachRolloverElement(els[i]);
			}
		}
	}
}

function attachRolloverElement(el)
{
	el=getImage($(el));
	Event.observe(el, 'mouseover', imageRolloverHandler, true);
	Event.observe(el, 'focus', imageRolloverHandler, true);
	Event.observe(el, 'mouseout', imageRestoreHandler, true);
	Event.observe(el, 'blur', imageRestoreHandler, true);
}

function detachRolloverElement(el)
{
	el=getImage($(el));
	Event.stopObserving(el, 'mouseover', imageRestoreHandler, true);
	Event.stopObserving(el, 'focus', imageRestoreHandler, true);
	Event.stopObserving(el, 'mouseout', imageRestoreHandler, true);
	Event.stopObserving(el, 'blur', imageRestoreHandler, true);
	
	restoreImage(el);
}

function rolloverInit()
{
	initialiseRolloverElements('a');
	initialiseRolloverElements('img');
	initialiseRolloverElements('input');
}

function rolloverImage(el) { var img = getImage(el); img.src = img.src.replace(/(.+)_off(.+)/, "$1_on$2"); }
function restoreImage(el) { var img = getImage(el); img.src = img.src.replace(/(.+)_on(.+)/, "$1_off$2"); }

function imageRolloverHandler()
{
	rolloverImage( eventTarget(window.event||arguments[0]) );
}

function imageRestoreHandler()
{
	restoreImage( eventTarget(window.event||arguments[0]) );
}

function eventTarget(evnt)
{
	if (evnt.srcElement) return evnt.srcElement;
	if (evnt.target) return evnt.target;
	return null;
}


if (!(/Netscape6/.test(window.navigator.userAgent)))
	rolloverInit();
