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 = /^https?:\/\/(?:.*\/)+(?:(.*)\.\w{3,4})?(?:\?.*)?$/;
	var $urlName = location.href.replace ($urlRegExp, '$1') || 'index';
	/* hack */
	if($urlName == 'microscopes-results' || $urlName == 'microscopes-product') $urlName = 'microscopesales';
	if($urlName == 'scales_balances-results' || $urlName == 'scales_balances-product') $urlName = 'scales_balances';
	if($urlName == 'identify_headlights-cable_free_headlight' || $urlName == 'identify_headlights-clinical_headlight') $urlName = 'identify_headlights';
	/* end hack */
	var $container, $links;
	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 ((($links [$j].href.replace ($urlRegExp, '$1') || 'index').indexOf ($urlName) >= 0) &&
						(1)) {
					
					$links [$j].className += ' selected';
					break;
				}
			}
		}
	}
}

function setActiveState($nav) {
	
	if ((!$nav || !$nav.getElementsByTagName)) return;
	
	var $links = $nav.getElementsByTagName ('a');
	var $dot = location.pathname.lastIndexOf('.');
	var $slash = location.pathname.lastIndexOf('/');
	var $dash = location.pathname.lastIndexOf('-');
	var $search = location.pathname.substr ($slash + 1, (($dash > $slash) ? ($dash) : ($dot)) - $slash - 1);
	
	for (var $i = 0; $i < $links.length; ++$i) {
		if (($links [$i].href.indexOf ($search) >= 0)) {
			$links [$i].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;');
		}
	}
}
