var timeout = null;
var delayedNav = null;
var delayedImage = null;
var nn4 = (navigator.appName == 'Netscape' && document.layers)? true: false;
var nn6 = (navigator.appName == 'Netscape' && document.getElementById)? true: false;
var ie4 = (navigator.appName == 'Microsoft Internet Explorer' && document.all)? true: false;
var ie5 = (navigator.appName == 'Microsoft Internet Explorer' && document.all)? true: false;
var ie6 = (navigator.appName == 'Microsoft Internet Explorer' && document.getElementById)? true: false;

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;
}


/*
Sets the timeout for a nav to be hidden
*/
function delayHide(objId,imageId){
	clearDelay();
	if (imageId.length > 0) {
		imageRef = getObject(imageId);
	} else {
		imageRef = 0;
	}
	imageName = imageRef?imageRef.name:imageId;
	timeout = setTimeout("hideNav('"+objId+"','"+imageName+"');",500);
	delayedNav = objId;
	delayedImage = imageName;	
}

/*
Toggles specified nav images off and hides the sub nav
*/
function hideNav(objId,imageId){
	clearDelay();	
	toggleDivVisibility(objId,'hidden');
	if (imageId.length > 0) toggleImageNav(imageId,'off');
}

/*
Clears the timeout, if it exists
*/
function clearDelay(){

	if(timeout){ 
		clearTimeout(timeout);
		timeout = null;
		delayedNav = null;
		delayedImage = null;
	}
	
}

/*
Immediately clears a pending "hide nav"
*/
function clearNav(){
	if(delayedNav){
		hideNav(delayedNav,delayedImage);
	}
	
}

/*
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");
		
	}

}

/*
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,imageId){
	if(delayedNav != objId){
		clearNav();
	}
	
	clearDelay();
	
	toggleDivVisibility(objId,'visible');
	if (imageId.length > 0) toggleImageNav(imageId,'on');
	
}

function toggleImageNav(shortName,direction) {
	if (document[shortName]) document[shortName].src = eval(shortName + direction +'.src');
}
