document.getElementsByClassName = function(className, tagName)
{
	var elementsByClassName = [];
	
	if (this.getElementsByTagName)
	{
		var elements = (tagName) ? this.getElementsByTagName(tagName) : this.all || this.getElementsByTagName('*');
		var nrOfElements = elements.length;
		
		for (var i = 0; i < nrOfElements; i++)
		{
			var element = elements[i];
			
			if (className == element.className)
			{
				elementsByClassName[elementsByClassName.length] = element;
			}
		}
	}
	
	return elementsByClassName;
};

window.onload = function()
{
	if (document.getElementById && document.getElementsByTagName)
	{
		var controllers = document.getElementsByClassName('controller');
		var i = controllers.length;
		
		while (i--)
		{
			var controller = new Controller(controllers[i]);
		}
	}
};

var Controller = function(container)
{
	this.container = container;
	this.container.getElementsByClassName = document.getElementsByClassName;
	
	this.original = this.container.getElementsByClassName('original')[0];
	var original = (this.original.document) ? this.original.document : this.original;
	this.originalSrc = original.getElementsByTagName('img')[0].src;
	
	this.replace = document.createElement('div');
	this.replace.className = 'replace';
	this.container.getElementsByClassName('display')[0].appendChild(this.replace);
	
	this.items = [];
	
	var lis = this.container.getElementsByTagName('li');
	var i = lis.length;
	
	while (i--)
	{
		this.items[this.items.length] = new Item(this, lis[i]);
	}
};

var Item = function(controller, container)
{
	this.controller = controller;
	this.container = container;
	this.link = this.container.getElementsByTagName('a')[0];
	
	if (!this.link) return;
	
	this.link.item = this;
	this.link.original = this.controller.original;
	this.link.replace = this.controller.replace;
	
	this.overImg = new Image();
	this.overImg.src = this.controller.originalSrc.replace(/(\/)\w+(\.(jpg|gif))/, '$1' + this.link.id.toLowerCase() + '$2');
	
	this.link.onmouseover = this._hilite;
	this.link.onmouseout = this._clear;
};

Item.prototype._hilite = function()
{
	this.replace.style.backgroundImage = 'url(' + this.item.overImg.src + ')';
	this.replace.style.display = 'block';
	this.original.style.display = 'none';
};

Item.prototype._clear = function()
{
	this.original.style.display = 'block';
	this.replace.style.display = 'none';
};

