
var timeout = null;
var delayedNav = null;
var leftDash = null;
var rightDash = null;
var lockedImageId = null;

/*
Clears the delayed nav, if the delayed nav is not the currently active nav
Clears the delay
Toggles specified nav images on and shows the sub nav
*/
function showNav(objId){
	
	if(delayedNav != objId){
		clearNav();
	}
	
	clearDelay();
	
	toggleImage('nav_'+objId,'nav_'+objId+'_on');
	
	// setDashVars(objId);
	
	/*
	if(leftDash){
		toggleImage(leftDash,'left_dash_on');
	}
	
	if(rightDash){
		toggleImage(rightDash,'right_dash_on');
	}
	*/
	toggleDivVisibility('navDiv'+objId,'visible');
	
}

/*
Sets the timeout for a nav to be hidden
*/
function delayHide(objId){
	
	clearDelay();
	timeout = setTimeout("hideNav("+objId+");",500);
	delayedNav = objId;
	
}

/*
Toggles specified nav images off and hides the sub nav
*/
function hideNav(objId){
	
	clearDelay();
	
	toggleImage('nav_'+objId,'nav_'+objId+'_off');
	/*
	setDashVars(objId);
	
	if(leftDash){
		toggleImage(leftDash,'dash_off');
	}
	
	if(rightDash){
		toggleImage(rightDash,'dash_off');
	}
	*/
	toggleDivVisibility('navDiv'+objId,'hidden');

}

/*
Clears the timeout, if it exists
*/
function clearDelay(){

	if(timeout){ 
		clearTimeout(timeout);
		timeout = null;
		delayedNav = null;
	}
	
}

/*
Immediately clears a pending "hide nav"
*/
function clearNav(){
	
	if(delayedNav){
		hideNav(delayedNav);
	}
	
}

/*
Toggles the source of a provided image with the source of a provided image object
Expects the name of the image to be toggled and the name of the image object to swapped in
Checks the name of the image to be swapped against the "locked" image variable before proceeding
*/
function toggleImage(targetObjId,sourceObj){

	if(targetObjId != lockedImageId){
		
		var imgObj = getObject(targetObjId);

		if(imgObj && eval("typeof " + sourceObj + "!= 'undefined'")){
		
			eval("imgObj.src = " + sourceObj + ".src");
		
		}
	
	}
}


/*
Toggles an image and sets it as "locked" to prevent subsequent mouseover/outs from toggling it's source
*/
function lockImage(targetObjId,sourceObj){
	
	toggleImage(targetObjId,sourceObj);
	lockedImageId = targetObjId;
	
}

/*
The name says it all
*/
function toggleDivVisibility(objId,myVisibility){

	var divObj = getObject(objId);
	
	if(divObj){
	
		var myStyle = divObj.style? "style.": "";
	
		eval("divObj." + myStyle + "visibility = myVisibility");
		
	}

}

/*
Preloads any image in a document that contains a name and id attribute 
Expects images to be named with a anyname_on.xxx anyname_off.xxx convention
Will produce two image objects for each document image, named imagename_on and imagename_off
*/
function preload() {

	var imgArray = new Array;

	if(document.layers)	{
	
		for(var index=0;index<document.images.length;index++){
			imgArray[imgArray.length] = document.images[index];
		}
		
		for(index=0;index<document.layers.length;index++){
			
			if(eval("document." + document.layers[index].id)){
				var layerImgArray = eval("document." + document.layers[index].id + ".document.images");
			}
			else{
				var layerImgArray = new Array;
			}
						
			for(var index2=0;index2<layerImgArray.length;index2++){
				imgArray[imgArray.length] = layerImgArray[index2];
			}
			
		}
		
	} else {
	
		imgArray = document.images;
		
	}
	
	for(imgIndex=0; imgIndex<imgArray.length; imgIndex++){

		if(validToPreload(imgArray[imgIndex])){

			var thisName = imgArray[imgIndex].name;
			var thisOnSrc = imgArray[imgIndex].src.replace(/off/,"on");
			var thisOffSrc = imgArray[imgIndex].src.replace(/on/,"off");
			
			createImgObj(thisName + "_on",thisOnSrc);
			createImgObj(thisName + "_off",thisOffSrc);
												
		}
		
	}
}

/*
Creates an image object of a provided name and set it's source to a provided source
*/
function createImgObj(objName,imgSrc){
	
	eval(objName + " = new Image()");
	eval(objName + ".src = imgSrc");
	
}

/*
Locates a document object of the provided id and returns the object
layers, document.all and getElementById compatible
*/
function getObject(objIdentifier){
	
	var myObj = null;
	
	if(document.layers)	{
		
		myObj = eval("document."+ objIdentifier);
		
		if(!myObj){
		
			for(var index=0;index<document.layers.length;index++){
				
				if(eval("document." + document.layers[index].id) && eval("document." + document.layers[index].id + ".document."+ objIdentifier)){
				
					myObj = eval("document." + document.layers[index].id + ".document."+ objIdentifier);
				
				}
			}
		
		}
	}
	else if (document.getElementById) {
		myObj = eval("document.getElementById('" + objIdentifier + "')");
	}
	else{
		myObj = eval("document.all['" + objIdentifier + "']");
	}
	
	return myObj;
}

/*
Checks an image object for name and id (if getElementById applies)
*/
function validToPreload(imgObj){

	var valid = false;

	if(imgObj.name && imgObj.name.length){
		valid = true;
	}
	
	if(document.getElementById && (!imgObj.id || !imgObj.id.length)){
		valid = false;
	}
	
	return valid;

}

//crap to handle dash crap
function setDashVars(objId){
	
	switch(objId){
		case 1:
			leftDash = null;
			rightDash = 'dash1';
			break;
			
		case 2:
			leftDash = 'dash1';
			rightDash = 'dash2';
			break;
			
		case 3:
			leftDash = 'dash2';
			rightDash = 'dash3';
			break;
			
		case 4:
			leftDash = 'dash3';
			rightDash = 'dash4';
			break;
			
		case 5:
			leftDash = 'dash4';
			rightDash = 'dash5';
			break;
			
		case 6:
			leftDash = 'dash5';
			rightDash = 'dash6';
			break;
			
		case 7:
			leftDash = 'dash6';
			rightDash = null;
			break;
	}
	
}

// old image swap function, slightly modified, will remove eventually
function setImage2(id,src) {

	var myImg = getObject(id);
	
	if(myImg){
		myImg.src = src;
	}
}

//placeholder to compensate for angus
function preloadImages(){
	return true;
}

//popup window code from BioAdvance site
function openWin(myURL) {
  window.open(myURL.href, "win"+(new Date()).getSeconds(),
    'width=500,height=500');
  return false;
}
