//<script>
/*
	Image functions
	Created 7/5/1999 by Jeremy Clough <jhbc@bigfoot.com>
*/

var lrollover = true;

var hasImages = !(!document.images);
var isNav = !(!document.layers)
var _definedButtons;
if (hasImages) _definedButtons = new Array();

// "public" functions
function buttonOn(which) {
	if (hasImages && !(!_definedButtons[which])) _definedButtons[which].on();
}

function buttonOff(which) {
	if (hasImages && !(!_definedButtons[which])) _definedButtons[which].off();
}

function getImageName(theString) {
	theString = String(theString);
	var retStr = new String();
	
	if (theString.indexOf(".") != -1)
		retStr = theString.substring(theString.lastIndexOf(".") + 1);
	else
		retStr = theString;
	
	return retStr;
}

function getImageObj(imageObj) {
	var retObj;
	
	if (typeof(imageObj) == "string")
		retObj = (isNav) ? eval(imageObj) : document[getImageName(imageObj)];
	else
		retObj = imageObj;
	
	return retObj;
	}

// "private" functions
function _buttonOn() {
	if (hasImages) {
		if (!(!this.onImage)) this.set(this.onImage.src);
		for (button in this.others) {
			this.others[button]["image"].src = this.others[button]["on"].src;
		}
	}
	if (this.onStatus != null) self.status = this.onStatus;

	return (true);
}

function _buttonOff() {
	if (hasImages) {
		if (!(!this.offImage)) this.set(this.offImage.src);
		for (button in this.others) {
			this.others[button]["image"].src = this.others[button]["off"].src;
		}
	}
	
	if (this.offStatus != null) self.status = this.offStatus;
	else self.status = self.defaultStatus;

	return (true);
}

function _buttonActive() {
	if (hasImages) this.set(this.activeImage.src);

	return (true);
}

function _buttonAdd(imageObj, offSrc, onSrc) {
	if (hasImages) {
		var rollover = new Array();
		rollover["image"] = getImageObj(imageObj);;

		var offImage = new Image();
		offImage.src = offSrc;
		rollover["off"] = offImage;

		var onImage = new Image();
		onImage.src = onSrc;
		rollover["on"] = onImage;

		this.others[this.others.length] = rollover;
	}

	return (true);
}

function _buttonGetImage() {
	if (typeof(this.image) == "string") return eval(this.image);
	else return this.image;
}

function _buttonSetImage(src) {
	var image = this.get();
	image.src = src;
}


// Button "object"
function Button(imageObj, offSrc, onSrc, activeSrc, offStatus, onStatus) {
	this.image = null;
	this.others = null;

	this.offImage = null;
	this.offStatus = null;

	this.onImage = null;
	this.onStatus = null;
	
	if (hasImages) {
		this.image = getImageObj(imageObj);
		
		this.others = new Array();
		this.offImage = null;
		this.onImage = null;
		this.activeImage = null;

		if (offSrc != null) {
			this.offImage = new Image();
			this.offImage.src = offSrc;
			this.offStatus = offStatus;
		}

		if (onSrc != null) {
			this.onImage = new Image();
			this.onImage.src = onSrc;
			this.onStatus = onStatus;
		}

		if (activeSrc != null) {
			this.activeImage = new Image();
			this.activeImage.src = activeSrc;
		}

		_definedButtons[this.image.name] = this;
	}

	Button.prototype.on			= _buttonOn;
	Button.prototype.off		= _buttonOff;
	Button.prototype.active		= _buttonActive;
	Button.prototype.add		= _buttonAdd;
	Button.prototype.get		= _buttonGetImage;
	Button.prototype.set		= _buttonSetImage;

	if (this.image != null) this.off();
}
