//global vars begin
var NAV_STATE_SET = 0;
var CURRENT_FLOAT = null;
var CURRENT_ROLLOVER = "";
var CURRENT_SECTION_ROLLOVER = null;
var CURRENT_EXPAND_NAV  = null;
var BROWSER = getBrowserType();
var FLOAT_TIMEOUT;
//global vars end



//prototypes begin
nodeObject.prototype.add = function(sectionObject) 
{
	this.nodeCollection[this.nodeCounter] = sectionObject;
	this.nodeCounter ++;
}
//prototypes end



/*
------------------------------------------
Function name  -  getBrowserType
Description - queries the user's BROWSER and sets properties in an object 
			  for a specific type of BROWSER look at the objects properties
------------------------------------------	
*/
function getBrowserType()
{
	var myAgent = navigator.userAgent;
	var isMac = myAgent.toString().toUpperCase().indexOf("MAC") != -1;
	var isNS = myAgent.toString().toUpperCase().indexOf("MOZILLA") != -1;
	var isNS7 = myAgent.toString().toUpperCase().indexOf("NETSCAPE/7") != -1;
	this.ie = document.all ? 1 : 0;
	this.ns4 = document.layers ? 1 : 0;
	this.dom = document.getElementById ? 1 : 0;
	this.iemac = ((ie) && (isMac)) ? 1 : 0;
	this.ns7 = ((!ie) && (isNS7)) ? 1 : 0;
	this.ns = ((!ie) && (isNS) && (!isNS7) ) ? 1 : 0;
	return this;
}

/*------------------------------------------
Function name  -  getNavRef
Description - looks up a div or layer in the document and returns a reference to it
------------------------------------------*/
function getNavRef(nav)
{
	var navRef;
	if (BROWSER.dom) return document.getElementById(nav);
	if (BROWSER.ns4) {
		navRef = eval(document.layers[nav]);
		return navRef;
	}

}	

/*
------------------------------------------
Function name  - sectionObject
Description - used to create section objects and set its properties 
			  this allows a section to live in a directory that is named something different from the section name
------------------------------------------	
*/
function sectionObject(sectionName, sectionDiv)
{
	this.sectionName = sectionName;
	this.sectionDiv = sectionDiv;
	return this;
}

/*
------------------------------------------
Function name  - nodeObject
Description - used to create a collection of nodes
------------------------------------------	
*/
function nodeObject()
{
	this.nodeCollection = new Array();
	this.nodeCounter = 0;
	return this;
}

/*------------------------------------------
Function name  -  currentFloat
Description - used to store properties of the current floater
------------------------------------------*/
function currentFloat(navName) { this.navName = navName; }

/*------------------------------------------
Function name  -  currentExpandNav
Description - used to store properties of the current floater
------------------------------------------*/
function currentExpandNav(sourceNav,navName)
{
	this.sourceNav = sourceNav;
	this.navName = navName;
}

/*------------------------------------------
Function name  -  currentRollOver
Description - used to store properties of the current rollover
------------------------------------------*/
function currentRollOver(navName) {	this.navName = navName; }


/*------------------------------------------
Function name  -  currentSectionRollOver
Description - used to store properties of the current rollover
------------------------------------------*/
function currentSectionRollOver(navName) {	this.navName = navName; }

/*------------------------------------------
Function name  -  rollOverObject
Description - used to store the properties of a rollover object
			  the properties include the owner of this object, the on state and the off state
------------------------------------------	*/
function rollOverObject(onClass,offClass)
{
	this.onClass = onClass;
	this.offClass = offClass;
	return this;
}

/*------------------------------------------
Function name  -  navRollOver
Description - used to handle the on and off state of nav items
			  there is no on or off state switch the swtiching is done by querying the rollOver object
------------------------------------------*/
function navRollOver(nav)
{
	if (! BROWSER.dom) return;
	if (FLOAT_TIMEOUT)	window.clearTimeout(FLOAT_TIMEOUT);		
	//floatShow();
	var navRef = null;
	navRef = getNavRef(nav);
	if (! navRef) return;
	if((CURRENT_SECTION_ROLLOVER) && (CURRENT_SECTION_ROLLOVER.navName.toString() == nav)) return;	
 	//if (CURRENT_EXPAND_NAV) rollOverClear(CURRENT_EXPAND_NAV.sourceNav);		

	var rollObject = new Array();
	rollObject[0] =  new rollOverObject("navtopon","navtopoff");
	rollObject[1] =  new rollOverObject("navsubon","navsuboff");

	//window.status = "navRef.parentNode.parentNode.parentNode.nodeName " + navRef.parentNode.parentNode.parentNode.parentNode.className;
	
	var objChildNodes = navRef.childNodes;
	for (c=0;c<rollObject.length;c++)
	{
		var thisObj = rollObject[c];
		for (thisKey in thisObj)
		{
			if ((BROWSER.dom) && (thisObj["offClass"] == navRef.className) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className != "navfloat")) 
			{
				navRef.className = thisObj["onClass"];
				if ((navRef.parentNode) && (navRef.parentNode.nodeName.toUpperCase() == "TD")) navRef.parentNode.className = thisObj["onClass"];				
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = thisObj["onClass"];
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = thisObj["onClass"];
				}
				
				return;
			}
			if ((BROWSER.dom) && (thisObj["onClass"] == navRef.className) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className != "navfloat")) 
			{
				navRef.className = thisObj["offClass"];
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = thisObj["offClass"];
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = thisObj["offClass"];
				}
				return;
			}

		}
		
			if ((BROWSER.dom) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className == "navfloat") && ((navRef.className == "navsuboff") || (navRef.className == "") )) 
			{
				navRef.className = "navsubon";
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = "navsubon";
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = "navsubon";
				}
				
				return;
			}		
		
		
			if ((BROWSER.dom) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className == "navfloat") && (thisObj["onClass"] == navRef.className)) 
			{
				navRef.className = "navsuboff";
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = "navsuboff";
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = "navsuboff";
				}
				return;
			}		

			if ((BROWSER.dom) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className == "navexpand") && ((navRef.className == "navexpandoff") || (navRef.className == "") )) 
			{
				if (CURRENT_FLOAT) 
				{
				if (FLOAT_TIMEOUT)	window.clearTimeout(FLOAT_TIMEOUT);		
				hideCurrentFloat();
				//rollOverClear(CURRENT_FLOAT.navName)
				rollOverClear();
				}
				navRef.className = "navexpandon";
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = "navexpandon";
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = "navexpandon";
				}
				
				return;
			}		
		
		
			if ((BROWSER.dom) && (navRef.parentNode.parentNode.parentNode.parentNode.parentNode.className == "navexpand") && (navRef.className == "navexpandon")) 
			{
				navRef.className = "navexpandoff";
				if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = "navexpandoff";
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = "navexpandoff";
				}
				return;
			}		


	}
}

/*------------------------------------------
Function name  -  rollOverClear
Description - used to clear a specific rollover
------------------------------------------*/
function rollOverClear(sourceNav)
{
	if (! BROWSER.dom) return;
	//if (CURRENT_EXPAND_NAV && CURRENT_ROLLOVER) alert("CURRENT_ROLLOVER.navName " + CURRENT_ROLLOVER.navName + "\n" + "CURRENT_EXPAND_NAV.navName " + CURRENT_EXPAND_NAV.navName);
	//floatShow();
	//if (FLOAT_TIMEOUT)	window.clearTimeout(FLOAT_TIMEOUT);		
	if (! CURRENT_ROLLOVER.navName) return;
 	if ((CURRENT_EXPAND_NAV) && (CURRENT_ROLLOVER.navName ==  CURRENT_EXPAND_NAV.navName)) return;
	var navRef = null;
	arguments.length ==0 ? 	navRef = getNavRef(CURRENT_ROLLOVER.navName) : 	navRef = getNavRef(sourceNav); 
	if (! navRef) return;
	var rollObject = new Array();
	rollObject[0] =  new rollOverObject("navtopon","navtopoff");
	rollObject[1] =  new rollOverObject("navsubon","navsuboff");
	var objChildNodes = navRef.childNodes;
	for (c=0;c<rollObject.length;c++)
	{
		var thisObj = rollObject[c];
		for (thisKey in thisObj)
		{
			if ((BROWSER.dom) && (thisObj["onClass"] == navRef.className)) 
			{
				navRef.className = thisObj["offClass"];
				 if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = thisObj["offClass"];
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;					
					tn.className = thisObj["offClass"];
				}
				return;

			}
		}
	}
}



/*------------------------------------------
Function name  -  sectionClear
Description - used to clear a specific section
------------------------------------------*/
function sectionClear(sourceNav)
{
	if (! BROWSER.dom) return;
	//if (CURRENT_EXPAND_NAV && CURRENT_ROLLOVER) alert("CURRENT_ROLLOVER.navName " + CURRENT_ROLLOVER.navName + "\n" + "CURRENT_EXPAND_NAV.navName " + CURRENT_EXPAND_NAV.navName);
	if (! CURRENT_SECTION_ROLLOVER.navName) return;
	var navRef = null;
	arguments.length ==0 ? 	navRef = getNavRef(CURRENT_SECTION_ROLLOVER.navName) : 	navRef = getNavRef(sourceNav); 
	if (! navRef) return;
	var rollObject = new Array();
	rollObject[0] =  new rollOverObject("navtopon","navtopoff");
	rollObject[1] =  new rollOverObject("navsubon","navsuboff");
	var objChildNodes = navRef.childNodes;
	for (c=0;c<rollObject.length;c++)
	{
		var thisObj = rollObject[c];
		for (thisKey in thisObj)
		{
			if ((BROWSER.dom) && (thisObj["onClass"] == navRef.className)) 
			{
				navRef.className = thisObj["offClass"];
				 if ((navRef.parentNode.parentNode) && (navRef.parentNode.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.parentNode.className = thisObj["offClass"];
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;					
					tn.className = thisObj["offClass"];
				}
				return;

			}
		}
	}
}

/*------------------------------------------
Function name  -  sectionHighLight
Description - used to highlight a section
------------------------------------------*/
function sectionHighLight(nav)
{
	if (! BROWSER.dom) return;
	var navRef = null;
	navRef = getNavRef(nav);
	if (! navRef) return;

	var rollObject = new Array();
	rollObject[0] =  new rollOverObject("navsubsectionon","navsuboff");
	rollObject[1] =  new rollOverObject("navtopsectionon","navtopoff");

	//alert(navRef.className);
	var objChildNodes = navRef.childNodes;
	for (c=0;c<rollObject.length;c++)
	{
		var thisObj = rollObject[c];
		for (thisKey in thisObj)
		{
			if ((BROWSER.dom) && (thisObj["offClass"] == navRef.className) || (navRef.className == "")) 
			{
				navRef.className = thisObj["onClass"];
				//alert(navRef.parentNode.previousSibling.innerHTML + "\n" + navRef.parentNode.previousSibling.className);
				if ((navRef.parentNode) && (navRef.parentNode.nodeName.toUpperCase() == "TD")) navRef.parentNode.className = thisObj["onClass"];				
				if ((navRef.parentNode.previousSibling.parentNode) && (navRef.parentNode.previousSibling.parentNode.nodeName.toUpperCase() == "TR")) navRef.parentNode.previousSibling.parentNode.className = thisObj["onClass"];
				if (navRef.parentNode.previousSibling) navRef.parentNode.previousSibling.className = thisObj["onClass"];
				for (c=0; c<objChildNodes.length; c++)
				{
					var tn = objChildNodes[c];
					if (tn.nodeType == "3") continue;
					tn.className = thisObj["onClass"];
				}
				
				return;
			}
		}
	}
}
	
/*------------------------------------------
Function name  - hideCurrentFloat
Description - used to hide the current nav
------------------------------------------	*/
function hideCurrentFloat() 
{ 
	if (! BROWSER.dom) return;
	var navRef = null;
	var sourceNavRef = null;
 	if ((CURRENT_EXPAND_NAV) && (CURRENT_FLOAT) && (CURRENT_FLOAT.navName ==  CURRENT_EXPAND_NAV.navName)) return;	
	if (CURRENT_FLOAT) 
	{
		navRef = getNavRef(CURRENT_FLOAT.navName);
		if (! navRef) return;
		BROWSER.dom ? navRef.style.visibility = "hidden" : navRef.visibility = "hide";
		//floatClear(CURRENT_FLOAT.navName);
	}
}

/*------------------------------------------
Function name  - floatHide
Description - used to hide a float
------------------------------------------	*/
function floatHide(waitTime) 
{ 
	if (! BROWSER.dom) return;
	var wt;
	if (arguments.length > 1) return;
	if (! waitTime) {
		wt = 1500; 
	} else {
		wt = waitTime;
	}
	if (window.setTimeout) {
		if (FLOAT_TIMEOUT)	window.clearTimeout(FLOAT_TIMEOUT);
		FLOAT_TIMEOUT = window.setTimeout('hideCurrentFloat() ; rollOverClear(CURRENT_ROLLOVER.navName)',wt);
	} else {
		hideCurrentFloat()
	}
}

/*------------------------------------------
Function name  - floatShow
Description - used to keep a float afloat
------------------------------------------	*/
function floatShow() 
{ 
	if (! BROWSER.dom) return;
	if (arguments.length > 0) return;	
	if ((window.clearTimeOut) && (FLOAT_TIMEOUT)) window.clearTimeout(FLOAT_TIMEOUT); 
}	
/*------------------------------------------
Function name  - floatClear
Description - used to clear the bgcolor of the float
------------------------------------------	*/
function floatClear(destNav)
{
	if (! BROWSER.dom) return;
	if (arguments.length > 1) return;
	var destNavRef = null;
	if (destNav != "") destNavRef = getNavRef(destNav);
	if (! destNavRef) return;
	return;
}

/*------------------------------------------
Function name  - navFloat
Description - used to float a div
------------------------------------------	*/
function navFloat(sourceNav,destNav) 
{ 
	if (! BROWSER.dom) return;
	if (arguments.length == 0) return;
	var sourceNavRef = null; 
	var destNavRef = null;
	if (sourceNav != "") sourceNavRef = getNavRef(sourceNav);
	if (destNav != "") destNavRef = getNavRef(destNav);
	if (! sourceNavRef) return;
	if (arguments.length == 1)
	{
		if (CURRENT_FLOAT) hideCurrentFloat();
		rollOverClear();
		navRollOver(sourceNav);
		return;
	} else {
		if(((CURRENT_SECTION_ROLLOVER) && (CURRENT_SECTION_ROLLOVER.navName.toString() != sourceNav)) || (!CURRENT_SECTION_ROLLOVER)) 
		{
			rollOverClear();
			navRollOver(sourceNav);
			CURRENT_ROLLOVER = new currentRollOver(sourceNav);
		}
	}
	if (CURRENT_ROLLOVER.navName) rollOverClear();
	navRollOver(sourceNav);
	if (CURRENT_FLOAT) hideCurrentFloat();
	
	if(destNav != "") CURRENT_FLOAT = new currentFloat(destNav);
	if ((sourceNavRef) && (destNavRef))
	{
		if ((CURRENT_EXPAND_NAV) && (CURRENT_EXPAND_NAV.navName == destNav)) return; 
		destNavRef.style.left = "154px";
		if ((BROWSER.ie) && (!BROWSER.iemac))destNavRef.style.top =	destNavRef.style.top = (sourceNavRef.offsetParent.offsetTop);
		if (BROWSER.ns7) destNavRef.style.top = (sourceNavRef.offsetParent.offsetTop + sourceNavRef.offsetParent.offsetHeight + 50);		
		if (BROWSER.ns) destNavRef.style.top = ((sourceNavRef.parentNode.parentNode.offsetTop) - 1);
		if (BROWSER.iemac) return;
		destNavRef.style.visibility = "visible";
		destNavRef.parentNode.className = "navfloat";
		destNavRef.className = "navfloat";
	}
}

/*------------------------------------------
Function name  - navExpand
Description - forwards to a url
------------------------------------------	*/
function navExpand(destUrl) 
{ 
	document.location = destUrl;
	return;
}

/*------------------------------------------
Function name  - navExpand
Description - used to expand a nav item
------------------------------------------	*/
function navExpandItem(sourceNav,destNav,destUrl)
{
	if (! BROWSER.dom) return;
	var navRef = null;
	navRef = getNavRef(destNav);
	if (! navRef) return;

	//navRef = document.getElementById(destNav);
 	if ((CURRENT_EXPAND_NAV)) navCollapse(destNav);
	if((sourceNav != "") && (destNav != "")) CURRENT_EXPAND_NAV = new currentExpandNav(sourceNav,destNav);
	navRef.parentNode.className = "navexpand";		
	navRef.className = "navexpand";		
	navRef.style.visibility = "visible";
	navRef.style.position = "static";
	//printObject(navRef.style);
	return;
}

/*------------------------------------------
Function name  - navCollapse
Description - used to collapse a nav item
------------------------------------------	*/
function navCollapse(destNav) 
{ 
	if (! BROWSER.dom) return;
	var navRef = null;	
	if ((CURRENT_EXPAND_NAV) && (CURRENT_EXPAND_NAV.navName !=  ""))
	{
		//navRef = document.getElementById(CURRENT_EXPAND_NAV.navName);
		navRef = getNavRef(CURRENT_EXPAND_NAV.navName);
		if (! navRef) return;		
		//if (BROWSER.dom) navRef.className = "navcollapse";
		BROWSER.dom ? navRef.style.visibility = "hidden" : navRef.visibility = "hide";
		BROWSER.dom ? navRef.style.position = "absolute" : navRef.position = "absolute";
	}
}

/*
------------------------------------------
Function name  - navHighlight
Description - used to highlight a specific nav
------------------------------------------	
*/
function navHighlight(sourceNav)
{
	if (!BROWSER.dom) return;
	if ((! sourceNav) || (sourceNav == "")) return;
	
	var sourceNavRef = null;
	var destNavRef = null;
	var clickedNav = null;
	var destNav;
	
	sourceNavRef= getNavRef(sourceNav);
	if (! sourceNavRef) return; 
	
	//alert("sourceNavRef " + sourceNavRef + "\n" + "sourceNav" + "\n" + sourceNav);
	//this block figures out what the parent section div is for a clicked div
	//once it gets the name it will get a reference to it and highlight it	
	var sn = new String(sourceNav);
	var tm = sn.match(/_/gi);
	if ((tm) && (tm.length == 1))
	{
		destNav = sourceNav + "_0";
	} else if ((tm) && (tm.length > 1)) {
		clickedNav = sourceNav;
		sourceNav = sn.match(/([a-zA-Z]+_\d+)/gi);
		destNav = sn.match(/([a-zA-Z]+_\d+_\d+)/gi);
	}
	
	destNavRef = getNavRef(destNav);
	
	//alert("tm.length " + tm.length + "\n clickedNav " + clickedNav + "\n sourceNavRef " + sourceNavRef + "\n" + "sourceNav" + sourceNav + "\n destNavRef " + destNavRef + "\n" + "destNav" + destNav);	
	if (destNavRef)
	{
		CURRENT_EXPAND_NAV = new currentExpandNav(sourceNav,destNav);
		navExpandItem(sourceNav,destNav);
		if (clickedNav && sourceNav) 
		{
			if (CURRENT_SECTION_ROLLOVER) sectionClear(CURRENT_SECTION_ROLLOVER.navName);
			//navRollOver(clickedNav);
			sectionHighLight(clickedNav);			
			CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(clickedNav);		
			return;				
		}
		
		if (sourceNav && !clickedNav)
		{
			//sectionHighLight(sourceNav);
			navRollOver(sourceNav);		
			CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(sourceNav);								
			return;
		} 
		
	} else {
		navRollOver(sourceNav);
		CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(sourceNav);							
		return;
	}	


	
//this block highlights both the selected section and the clicked item
/*
	if (destNavRef)
	{
		CURRENT_EXPAND_NAV = new currentExpandNav(sourceNav,destNav);
		navExpandItem(sourceNav,destNav);
		if (clickedNav) {
			navRollOver(clickedNav);
			CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(clickedNav);		
			return;				
		} else {
			navRollOver(sourceNav);		
			CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(sourceNav);								
			return;
		}
	} else {
		navRollOver(sourceNav);
		CURRENT_SECTION_ROLLOVER = new currentSectionRollOver(sourceNav);							
		return;
	}	
*/
}


/*
------------------------------------------
Function name  - setNavState
Description - used to set the initial nav of the application, this is implemented as a singleton
			  the global variable NAV_STATE_SET is used to identify if the function has been called
			  This can only be called once per page
------------------------------------------	
*/
function setNavState()
{
	if (! BROWSER.dom) return;
	if (NAV_STATE_SET) return;
	NAV_STATE_SET = 1;
	var currentPage = new String(document.location);
	var sectionMappings = getSectionMappings();
	var pageMappings = getPageMappings();

	var sectionName = getCurrentDir();
	for (c=0;c<sectionMappings.nodeCollection.length;c++)
	{
		if (sectionMappings.nodeCollection[c].sectionName == sectionName) 
		{
				navHighlight(sectionMappings.nodeCollection[c].sectionDiv);
				break;
				return;
		}
	}
	
	for (c=0;c<pageMappings.nodeCollection.length;c++)
	{
		var pageName = new String(pageMappings.nodeCollection[c].sectionName);
		//alert(pageMappings.nodeCollection[c].sectionName + "\n" + currentPage + "\n" + currentPage.indexOf(pageName));		
		if (currentPage.indexOf(pageName) != -1)
		{
				navHighlight(pageMappings.nodeCollection[c].sectionDiv);
				break;
				return;
		}
	}
}

/*------------------------------------------
Function name  - getCurrentPage
Description - used to return the current page
------------------------------------------*/
function getCurrentPage()
{
	if (! BROWSER.dom) return;
	var serverURL = new String(document.location);
	//var serverURL = new String("http://merck-dev/dir1/dir2/dir3/alpha_index.html");
	//var pathMatches = serverURL.match(/\/[a-zA-Z0-9_.]+/gi);
	//var pathMatches = serverURL.match(/\/\/.+/gi);
	//var pathMatches = serverURL.match(/\/\/[a-zA-Z0-9_.]+/gi);	
	var pathMatches  = serverURL.match(/\/\/([a-zA-Z0-9\W][^\/]+)\/([a-zA-Z0-9\W][^\/].+)/gi);
	var currentDir = "";
	window.status = "currentDir " + pathMatches + "length " + pathMatches.length;
	//alert("serverURL " + serverURL + "\n currentDir " + currentDir  + "\n pathMatches " + pathMatches + "\n pathMatches.length  " + pathMatches.length );
	return currentDir;
}


/*------------------------------------------
Function name  - getCurrentDir
Description - used to return the current directory
------------------------------------------*/
function getCurrentDir()
{
	if (! BROWSER.dom) return;
	var serverURL = new String(document.location);
	//var serverURL = new String("http://merck-dev/dir1/dir2/dir3/alpha_index.html");
	var pathMatches = serverURL.match(/\/[a-zA-Z0-9_]+/gi);
	var currentDir = "";
	if (pathMatches.length >  3) 
	{
		var offset = (pathMatches.length -2);
		currentDir = new String(pathMatches[offset]);
		currentDir = currentDir.substr(1,currentDir.length);
	} else {
		currentDir = "home";
	}
	//alert("serverURL " + serverURL + "\n currentDir " + currentDir  + "\n pathMatches " + pathMatches + "\n pathMatches.length  " + pathMatches.length );
	return currentDir;
}

/*
------------------------------------------
Function name  - getSelectedNode
Description - used to return the currently selected node from the URL
------------------------------------------	
*/
function getSelectedNode()
{
	if (! BROWSER.dom) return;
	var serverURL = new String(document.location);
	var selectedNode = new String(serverURL.match(/\?SN=\w+/gi));
	if ((selectedNode) &&  (selectedNode != ""))
	{
		selectedNode = 	selectedNode.substr(4,selectedNode.length);
	} 
	return selectedNode;
}