/*	***********************************************************
 *
 *	DISPATCH: connect routines to DOM event model
 *
 */
function dispatch(targetElement,eventName,handlerName)
{ 
	if (targetElement.addEventListener) { 
		targetElement.addEventListener(eventName, function(e) { return targetElement[handlerName](e); }, false);
	} else if (targetElement.attachEvent) { 
		targetElement.attachEvent("on" + eventName, function(e) { return targetElement[handlerName](e); });
	} else { 
		var originalHandler = targetElement["on" + eventName]; 
		if (originalHandler) { 
			targetElement["on" + eventName] = function(e) { originalHandler(e); return targetElement[handlerName](e); }
		} else { 
			targetElement["on" + eventName] = function(e) { return targetElement[handlerName](e); } 
		} 
	} 
}


/*	***********************************************************
 *
 *	SEARCH: mouseover and mouseout on image submit button
 *
 */
var W3CDOM = (document.createElement && document.getElementsByTagName);
var mouseOvers = new Array();
var mouseOuts = new Array();


//  INIT: attach behaviours, prefetch images and set vars/statusses.
//
function sidebarHoverInit()
{
	if (!W3CDOM) return;
	var search = document.getElementById('content-leftsidebar');
	var imgs = search.getElementsByTagName('img');
	for (var i=0;i<imgs.length;i++)
	{
		// Attach mouseover & out actions through dispatch.
		imgs[i].targetMouseoverHandler = mouseGoesOver;
		dispatch(imgs[i], "mouseover", "targetMouseoverHandler");
		imgs[i].targetMouseoutHandler = mouseGoesOut;
		dispatch(imgs[i], "mouseout",  "targetMouseoutHandler");

		// Preload images in mouseover & mouseout arrays.
		var suffix = imgs[i].src.substring(imgs[i].src.lastIndexOf('.'));
		mouseOuts[i] = new Image();
		mouseOuts[i].src = imgs[i].src;
		mouseOvers[i] = new Image();
		mouseOvers[i].src = imgs[i].src.substring(0,imgs[i].src.lastIndexOf('.')) + "-mouseover" + suffix;
		imgs[i].number = i;
	}
}


// MAIN ROUTINES: actual mouseovers and mouseouts.
// 
function mouseGoesOver() { this.src = mouseOvers[this.number].src; }
function mouseGoesOut()  { this.src = mouseOuts[this.number].src; }


//  EVENT: attach script in window.onload event chain.
//
window.targetHoverHandler = sidebarHoverInit;
dispatch(window, "load", "targetHoverHandler");
