String.prototype.contains = function($str) {return this.indexOf($str) >= 0;}

var highState = new Array();
var rollStateSrc = new Array();
var offStateSrc = new Array();

function animateLeftToRight($objId, $movedTot, $moveLen){
	$line = document.getElementById($objId);
	if($movedTot < $moveLen) {
		var $moved = ($moveLen - $movedTot) / 10;
		$line.style.left = (parseInt($line.style.left) + $moved) + 'px';
		$movedTot += $moved;
		setTimeout("animateLeftToRight('"+$objId+"', "+$movedTot+", "+$moveLen+")",100);
	} else {
		$line.style.left = (parseInt($line.style.left) + $moveLen) + 'px';
	}
}

function setPermStates($contIds) {
	var urlRegExp = /^http:\/\/(?:.*\/)+(?:(.*)\.\w{3,4})?$/;
	$urlName = location.href.replace(urlRegExp, '$1') || 'index';
	for(var $i = 0; $i < $contIds.length; ++$i) {
		$container = document.getElementById($contIds[$i]);
		if($container != null) {
			$links = $container.getElementsByTagName('a');
			for(var $j = 0; $j < $links.length; ++$j) {
				if($urlName.indexOf($links[$j].href.replace(urlRegExp, '$1')) >= 0) {
					$links[$j].className += ' selected';
					break;
				}
			}
		}
	}
}

function changeNavState(link, rollState, bgColor) {
	if(typeof(highState[link.id]) == 'undefined' || !highState[link.id]) {
		if(typeof(bgColor) != 'undefined') link.style.backgroundColor = bgColor;
		var img = link.firstChild;
		var tagName = img.tagName.toLowerCase();
		if(tagName == 'img') {
			img.src = rollState ? rollStateSrc[link.id] : offStateSrc[link.id];
		} else {
			alert(	"Run Time Error in changeNavState:\n\nExpecting &lt;img&gt; tag\n" + 
					'Received: &lt;' + tagName + '&gt;');
		}
	}
}

function initNavStates(objId, onBgColor, offBgColor, highBgColor) {
	var links = document.getElementById(objId).getElementsByTagName('a');
	var img, tagName;
	if(typeof(highBgColor) == 'undefined') highBgColor = onBgColor;
	for(var i = 0; i < links.length; ++i) {
		if(!links[i].id) links[i].id = '' + objId + i;
		img = links[i].firstChild;
		tagName = img.tagName.toLowerCase();
		if(tagName == 'img') {
			if(location.href.contains(links[i].href.replace(/.*\/.*-(.*)\.\w{3,4}/, '$1'))) {
				rollStateSrc[links[i].id] = img.src.replace(/(\.\w{3,4})$/, '_active$1');
				changeNavState(links[i], true, highBgColor);
				highState[links[i].id] = true;
			} else {
				rollStateSrc[links[i].id] = img.src.replace(/(\.\w{3,4})$/, '_hover$1');
				offStateSrc[links[i].id] = img.src;
				highState[links[i].id] = false;
				addEvent(	links[i], 'onmouseover', changeNavState,
							[links[i], true, onBgColor]);
				addEvent(	links[i], 'onmouseout', changeNavState,
							[links[i], false, offBgColor]);
			}
		} else {
			alert(	"Set up Error in initNavStates:\n\nExpecting &lt;img&gt; tag\n" +
					'Received: &lt;' + tagName + '&gt;');
		}
	}
}