// Image mouseover functions written by Oliver Cope - based on those by Ian Cillay
// All scripts are Copyright © 1999 pres.co, London, UK
var debugging = (navigator.userAgent.indexOf('NT') != -1) ? false : false;
var message = '';

function preload() {
	if (!okay()) return false

	var overState = false;
	// Determine whether we have a over state as well as a hi/lo state
	if (arguments.length > 0) {
		if ((arguments[0] + "").indexOf('over') > -1) overState = true;
	}

	// Preload images
	var imageCache = new Array();
	var theSrc;
	for (var ix=0; ix < document.images.length; ix++) {
		theSrc = document.images[ix].src
		imageCache[ix] = new Image();
		if (theSrc.indexOf('/hi/') > -1) imageCache[ix].src = subst(theSrc, '/hi/', '/lo/');
		else if (theSrc.indexOf('/lo/') > -1) imageCache[ix].src = subst(theSrc, '/lo/', '/hi/');

		if (overState) {
			ix++;
			imageCache[ix] = new Image();
			if (theSrc.indexOf('/hi/') > -1) imageCache[ix].src = subst(theSrc, '/hi/', '/over/');
			else if (theSrc.indexOf('/lo/') > -1) imageCache[ix].src = subst(theSrc, '/lo/', '/over/');
		}	
	}
	return true;
}

// Test all known conditions causing image-swapping errors in JavaScript
function okay() {
	// Avoid IE on the Mac's buggy JScript implementation
	if (navigator.userAgent.indexOf('Mac') != -1 && navigator.userAgent.indexOf('MSIE 3') != -1) return false;

	// Make sure that the appropriate object model is supported
	if (('' + document.images) == 'undefined') return false;
	
	return true;
}

//var setImage = '';
var setImage = new Array();
function set(imageName, idx) {
	// Sets a particular image to the highlighted version, unhighlighting
	// the previously highlighted one.
	if (!isDef(idx)) idx = 0;
	var lastSetImage = setImage[idx];
	setImage[idx] = imageName;
	if (isDef(lastSetImage)) swap(lastSetImage, '/lo/');		// Unset the last set image
	if (isDef(setImage[idx])) swap(setImage[idx], '/hi/');			// Now set this one!
}
function hi(imageName) {
	for (var ix = 0; ix < setImage.length; ix++) {
		if (setImage[ix] == imageName) return;
	}
	swap(imageName, '/hi/');
}
function lo(imageName) {
	for (var ix = 0; ix < setImage.length; ix++) {
		if (setImage[ix] == imageName) return;
	}
	swap(imageName, '/lo/');
}
function over(imageName) {
	for (var ix = 0; ix < setImage.length; ix++) {
		if (setImage[ix] == imageName) return;
	}
	swap(imageName, '/over/');
}
function swap(imageName, s2) {
	if (!okay()) return;
	if (isDef(imageName) && ("" + imageName).length > 0 && ("" + imageName).indexOf("-") < 0) {
		var s1 = "";
		var theSrc = eval("document.images." + imageName + ".src");
		if (theSrc.indexOf("/lo/") > -1) s1 = "/lo/";
		if (theSrc.indexOf("/hi/") > -1) s1 = "/hi/";
		if (theSrc.indexOf("/over/") > -1) s1 = "/over/";
		if (s1 == "") return;
		eval("document.images." + imageName + ".src = subst(theSrc, s1, s2);"); 
	}
}

function subst(expr, pattern, replace) {
	// Substitutes one string for another in expr
    var newString = '';
    for (var i = 0; i < expr.length; i++) {
        if (expr.substring(i, i + pattern.length) == pattern) {
            newString += replace;
            i += pattern.length - 1;
        } else {
            newString += expr.charAt(i);
        }
    }
    return newString;
}
function isDef(obj) {
	// returns true if obj is defined
	return (obj + "" != "undefined" && obj + "" != "null");
	
}
