/*
Object Oreinted, state tracking rollover menus with persistent item support.
Copyright 2008, Keen Kelly (www.keenkelly.com) All rights reserved.
Non-exclusive, unrestricted, transferrable license granted to Permco Engineering, Inc. without distribution.
*/

// Rollover image class
function rollover_item(normal, hover) {
	this.normal_src = normal;
	this.normal_img = new Image;
	this.normal_img.src = normal;

	this.hover_src = hover;
	this.hover_img = new Image;
	this.hover_img.src = hover;

	this.state = 'normal';
}

// Rollover menu class
function rollover_menu(name) {
	this.name = name;
	this.items = new Array();

	this.add_item = add_item;
	this.set_item = set_item;
	this.hover_item = hover_item;
	this.normal_item = normal_item;
	this.refresh_item = refresh_item;

	function add_item(normal, hover) {
		newindex = this.items.length;
		this.items[newindex] = new rollover_item(normal, hover);
		document.write('<img src="' + normal + '" border="0" id="' + this.name + newindex + '"');
		document.write(' onmouseover="' + this.name + '.hover_item(' + newindex + ');"');
		document.write(' onmouseout="' + this.name + '.normal_item(' + newindex + ');"/>');
	}

	function set_item(index, state) {
		if (state == 'fixed') {
			// Only one may be fixed at any given time,
			// so set everyone else back to normal
			for (x = 0; x < this.items.length; x++) {
				if (x == index) {
					this.items[x].state = state;
					this.refresh_item(x);
				}
				else {
					this.items[x].state = 'normal';
					this.refresh_item(x);
				}
			}
		}
		else {
			this.items[index].state = state;
			this.refresh_item(index);
		}
	}

	function hover_item(index) {
		if (this.items[index].state != 'fixed') {
			this.set_item(index, 'hover');
		}
	}

	function normal_item(index) {
		if (this.items[index].state != 'fixed') {
			this.set_item(index, 'normal');
		}
	}

	function refresh_item(index) {
		switch (this.items[index].state) {
			case 'fixed':
			case 'hover':
				src = this.items[index].hover_src;
				break;
			default:
			case 'normal':
				src = this.items[index].normal_src;
				break;
		}
		if (e = document.getElementById(this.name + index)) {
			e.src = src;
		}
//		else {
//			alert("Couldn't find element [" + this.name + index + "]");
//		}
	}
}
