

// ===================== AuroraExplorerMenuBar Class ======================================

function AuroraExplorerMenuBar (strInstanceName, strCgiPath, strAssetsPath, strShowHome, strContactUrl)
{
	this.m_InstanceName = strInstanceName;
	this.m_CgiPath		= strCgiPath;
	this.m_AssetsPath	= strAssetsPath;
	this.m_Separator  = '|';
	this.m_ShowHome	    = false;

	if (strContactUrl != '')
	{
		this.m_ContactUrl = strContactUrl;
		this.m_contactExists = true;
	}
	else
	{
		this.m_ContactUrl = "http://www.auroragov.org/contact us.cfm"
		this.m_contactExists = true;
	}
			
	if (strShowHome != null && strShowHome == 'true')
		this.m_ShowHome = true;

	this.m_src_Space = strAssetsPath + 'space.gif';				
	this.m_arrowDownImage = strAssetsPath + 'ArrowDown.gif';
	this.m_arrowDownOverImage = strAssetsPath + 'ArrowDown_over.gif';
	this.m_arrowRightImage = strAssetsPath + 'ArrowRight.gif';
	this.m_arrowRightOverImage = strAssetsPath + 'ArrowRight_over.gif';	
		
	this.m_arrowRightImageWidth = "11";
	this.m_arrowRightImageHeight = "11";
	this.m_arrowDownImageWidth = "11";
	this.m_arrowDownImageHeight = "11";	

	this.m_HeaderTableId = strInstanceName + '_HeaderTable';
	this.m_HeaderMenuId  = strInstanceName + '_HeaderMenu';
	
	this.m_selectedElements = new Array(0);

	this.m_ds = new Array();
	this.m_di = 0;

	// primary display 
	AuroraExplorerMenuBar.prototype.Display = AuroraExplorerMenuBar_Display;
	AuroraExplorerMenuBar.prototype.DisplayNode = AuroraExplorerMenuBar_DisplayNode;
	
	// content page generation
	AuroraExplorerMenuBar.prototype.OpeningHtml = AuroraExplorerMenuBar_OpeningHtml;
	AuroraExplorerMenuBar.prototype.CoreHtml = AuroraExplorerMenuBar_CoreHtml;
	AuroraExplorerMenuBar.prototype.ClosingHtml = AuroraExplorerMenuBar_ClosingHtml;	
	
	// runtime support
	AuroraExplorerMenuBar.prototype.topCollectionItem_mouseover	= AuroraExplorerMenuBar_topCollectionItem_mouseover;
	AuroraExplorerMenuBar.prototype.topCollectionItem_mouseout	= AuroraExplorerMenuBar_topCollectionItem_mouseout;
		
	AuroraExplorerMenuBar.prototype.childCollectionItem_mouseover = AuroraExplorerMenuBar_childCollectionItem_mouseover;
	AuroraExplorerMenuBar.prototype.childCollectionItem_mouseout	= AuroraExplorerMenuBar_childCollectionItem_mouseout;

	AuroraExplorerMenuBar.prototype.highlightItem					= AuroraExplorerMenuBar_highlightItem;
	AuroraExplorerMenuBar.prototype.unhighlightItem				= AuroraExplorerMenuBar_unhighlightItem;

	AuroraExplorerMenuBar.prototype.linkItem_mouseover			= AuroraExplorerMenuBar_linkItem_mouseover;
	AuroraExplorerMenuBar.prototype.linkItem_mouseout				= AuroraExplorerMenuBar_linkItem_mouseout;

	AuroraExplorerMenuBar.prototype.topCollectionItem_onclick		= AuroraExplorerMenuBar_topCollectionItem_onclick;
	AuroraExplorerMenuBar.prototype.childCollectionItem_onclick	= AuroraExplorerMenuBar_childCollectionItem_onclick;
	AuroraExplorerMenuBar.prototype.linkItem_onclick				= AuroraExplorerMenuBar_linkItem_onclick;

	AuroraExplorerMenuBar.prototype.closeChildMenusOf				= AuroraExplorerMenuBar_closeChildMenusOf;
	AuroraExplorerMenuBar.prototype.closeOpenSiblingsOf			= AuroraExplorerMenuBar_closeOpenSiblingsOf;

	AuroraExplorerMenuBar.prototype.setMenuDisplayStatus			= AuroraExplorerMenuBar_setMenuDisplayStatus;
	AuroraExplorerMenuBar.prototype.resetMenus					= AuroraExplorerMenuBar_resetMenus;
}

function AuroraExplorerMenuBar_Display(node)
{
	this.m_ds[this.m_di++] = 
		'<!-- Header Table -->' + 
		'<table id="' + this.m_HeaderTableId + '" style="width:100%" border="0" cellspacing="0" cellpadding="0">' +
//		'	<tr>' +
//		'		<td colspan="3" class="ddm_HeaderLogoCell">' +
//		'			<table style="width:100%" border="0" cellspacing="0" cellpadding="0">' +
//		'				<tr>' +
//		'					<td style="width:10px;text-align:left; vertical-align:middle; padding-left:6pt; padding-right:10px">' +
//		'						<img src="images/StellentLogo.gif" width="120" height="20"></td>' +
//		'					<td id="quickSearchCell" style="white-space:nowrap; text-align:right; vertical-align:middle; padding-left:0pt; padding-right:6pt; padding-top:5px; padding-bottom:7px">' +
//		'						<!-- *** Quick Search container *** --></td>' +
//		'				</tr>' +
//		' 			</table>' +
//		'		</td>' +
//		'	</tr>' +
		'	<tr>' +
		'		<td colspan="3" class="ddm_HeaderSpacerCell"><img src="' + this.m_src_Space + '" width="16" height="1"></td>' +
		'	</tr>' +
		'	<tr>' +
		'		<td id="' + this.m_HeaderMenuId + '" class="ddm_HeaderMenuCell" width="10">' +
		'';

// opening HTML for the Home node... but really binding the whole top level
		this.m_ds[this.m_di++] =
			'<table border="0" cellpadding="0" cellspacing="0">\n' +
			'<tr>\n';
// opening HTML

// core HTML
	this.DisplayNode(node);		// recursive walk...
// core HTML

// closing HTML for the Home node...
		this.m_ds[this.m_di++] =
			'	</tr>\n' +
			'</table>\n';

// closing HTML for the Home node...

	this.m_ds[this.m_di++] = 
		'       </td>' +
//		'		<td class="ddm_TopMenuBarDividerCell" width="10">' +
//		'			<img src="images/tab_corner.gif" width="37" height="19"></td>' +
//		'		<td class="ddm_TopMenuBarRightCell">' +
//		'			<table border="0" cellpadding="0" cellspacing="0">' +
//		'				<tr>' +
//		'					<td class="ddm_TopMenuBarExtraLink" onclick="addBookmark()" onmouseover="this.className='ddm_TopMenuBarExtraLink_over'" onmouseout="this.className='ddm_TopMenuBarExtraLink'">' +
//		'						Add To Favorites</td>' +
//		'				</tr>' +
//		'			</table>' +
//		'		</td>' +
//		'	</tr>' +
		'</table>' +	
		'';

	document.write(this.m_ds.join(''));
}

function AuroraExplorerMenuBar_DisplayNode (parentElement, parentPath)
{
//LHibbs Added if around this function to skip any level below the 2 levels we are currently displaying, for speed 10-21-2004
        if (parentElement.m_level < 2) 
	{
		// Create a variable containing all children of the passed-in element. 
		var childList = parentElement.m_subNodes;

		// Call the function that generates the opening html code for a collection (the generated
		// code will typically be an opening <div> tag that will act as a container for the collection).
		this.OpeningHtml(parentElement);

		if (parentElement.m_level == 0 && this.m_ShowHome)
			this.CoreHtml(parentElement, parentPath);

		// Loop through the children of the passed-in element. For each child, run the core html function,
		// and if that child has children of its own, recursively call the DisplayNode function.
		
		for (var i=0; i<childList.length; i++)
		{		
			var childNode = childList[i];
			var nodepath  = "";
			
			if (parentPath)
			{
				nodePath = parentPath + "." + i;
			}
			else
			{
				nodePath = i.toString();
			}

			this.CoreHtml(childNode, nodePath);

			if (childNode.m_subNodes.length > 0)
			{
				this.DisplayNode(childNode, nodePath);
			}
		}

		/* Call the function that generates the closing html code for a collection (the generated
			code will typically be a closing </div> tag for the collection container).*/
		
		this.ClosingHtml(parentElement);
	}
}

// ============== Page Data Generation functions ========================


function AuroraExplorerMenuBar_OpeningHtml(parentElement)
{
	var level = parentElement.m_level;

//	if (level == 0 && this.m_ShowHome)
//		level = 1;	// fake it...

	if (level == 0) // Home node
	{

	}
	else 
	if (level == 1) // Top-level menu items
	{
		this.m_ds[this.m_di++] =
			'<div class="ddm_TopChildCollectionContainer" style="display:none">\n' +
			'	<table class="ddm_TopChildListTable" border="0" cellpadding="0" cellspacing="0">\n' +
			'		<tr>\n' +
			'			<td>\n' +
			'				<img src="' + this.m_src_Space + '" width="1" height="2"></td>\n' +
			'		</tr>\n';
	}
	else							// Child menu items
	{
//Lhibbs ddm_SubChildCollectionContainer to ddm_TopChildCollectioncontainer
		this.m_ds[this.m_di++] =
			'<div class="ddm_TopChildCollectionContainer" style="display:none">\n' +
			'	<table class="ddm_SubChildListTable" border="0" cellpadding="0" cellspacing="0">\n' +
			'		<tr>\n' +
			'			<td>\n' +
			'				<img src="' + this.m_src_Space + '" width="1" height="2"></td>\n' +
			'		</tr>\n';
	}
}

function AuroraExplorerMenuBar_CoreHtml(childElement, nodeLocation)
{
	var label = childElement.m_label;
	var id = nodeLocation;
	var level = childElement.m_level;

	if (level == 0 && this.m_ShowHome)
		level = 1;	// fake it...
/* Scw */ 	if (label == 'AuroraGov')
/* Scw */			{
/* Scw */				label = 'Home';
/* Scw */			}
	if (level == 0) // Home node
	{

	}
	else
	if (level == 1) // Top-level menu items
	{
		var linkTarget = "_self";
//LHibbs added this to allow redirects based on folder property cspRedirect.  10-19-2004
//alert('cp_cspredirectURL:'+childElement.cp_cspRedirectURL);
if (label == 'Contact Us')
{

	var url = this.m_ContactUrl;
//alert('URL:'+this.m_ContactUrl);
}
else
{
	var url = (customSectionPropertyExists(childElement.cp_cspRedirectURL) ? childElement.cp_cspRedirectURL : childElement.m_href.replace(/'/g, "\\'"));
}

//end Lhibbs 10-19-2004
//original source 10-19-2004
//var url = childElement.m_href.replace(/'/g, "\\'");
//end of original source
	
		if (childElement.m_subNodes.length == 0 || childElement.m_level == 0)
		{	// "item"
			this.m_ds[this.m_di++] =
				'<td id="' + id + '" class="ddm_TopLinkItem"' +
				' onclick="' + this.m_InstanceName + '.linkItem_onclick(event, this, \'' + url + '\', \'' + linkTarget + '\')"' +
				' onmouseover="' + this.m_InstanceName + '.linkItem_mouseover(this)"' + 
				' onmouseout="' + this.m_InstanceName + '.linkItem_mouseout(this)">' +
				/* scw */ this.m_Separator + '&nbsp' +
				'	' + label + '\n' +
				'</td>\n';
		}
		else 
		{	// "collection"
			this.m_ds[this.m_di++] =
				'<td id="' + id + '"class="ddm_TopLinkItem"' +
				' onclick="' + this.m_InstanceName + '.linkItem_onclick(event, this, \'' + url + '\', \'' + linkTarget + '\')"' +
				' onmouseover="' + this.m_InstanceName + '.topCollectionItem_mouseover(event, this)"' +
				' onmouseout="' + this.m_InstanceName + '.topCollectionItem_mouseout(event, this)">\n' +
				'	<table class="ddm_TopCollectionItemTable" border="0" cellpadding="0" cellspacing="0">\n' +
				'		<tr>\n' +
				//scw '			<td class="ddm_TopCollectionItemArrowCell">\n' +
				//scw '				<img src="' + this.m_arrowDownImage + '" width="' + this.m_arrowDownImageWidth + '" height="' + this.m_arrowDownImageHeight + '"></td>\n' +
				'			<td class="ddm_TopCollectionItem">\n' +
				/* scw */ this.m_Separator + '&nbsp' +
				'				' + label + '</td>\n' +
				'		</tr>\n' +
				'	</table>\n';
		}
	}
	else // Child menu items
	{
		var linkTarget = "_self";
//LHibbs added this to allow redirects based on folder property cspRedirectURL.  10-19-2004
//alert(label+':'+childElement.m_href+':'+childElement.cp_cspRedirectURL);
//var URL = (customSectionPropertyExists(childElement.cp_cspRedirectURL) ? childElement.cp_cspRedirectURL : childElement.m_href.replace(/'/g, "\\'"));
//alert(label+':'+URL);
if (label == 'Contact Us')
{
//alert('URL:'+this.m_ContactUrl);
	var URL = this.m_ContactUrl;
}
else
{
	var URL = (customSectionPropertyExists(childElement.cp_cspRedirectURL) ? childElement.cp_cspRedirectURL : childElement.m_href.replace(/'/g, "\\'"));
}

//end Lhibbs 10-19-2004
//original source 10-19-2004
//var url = childElement.m_href.replace(/'/g, "\\'");
//end of original source

		if (childElement.m_subNodes.length == 0)
		{	// "item"
			this.m_ds[this.m_di++] =
				'<tr>\n' +
				'	<td id="' + id + '" class="ddm_ChildLinkItem"' +
				' onclick="' + this.m_InstanceName + '.linkItem_onclick(event, this, \'' + URL + '\', \'' + linkTarget + '\')"' +
				' onmouseover="' + this.m_InstanceName + '.linkItem_mouseover(this)"' +
				' onmouseout="' + this.m_InstanceName + '.linkItem_mouseout(this)">\n' +
				'	' + label + '\n' +
				'	</td>\n' +
				'</tr>\n';
		}
		else 
		{ // "collection"
			this.m_ds[this.m_di++] =			
				'<tr>\n' +
				'	<td id="' + id + '"' +
				' onclick="' + this.m_InstanceName + '.linkItem_onclick(event, this, \'' + URL + '\', \'' + linkTarget + '\')"' + 
				' onmouseover="' + this.m_InstanceName + '.childCollectionItem_mouseover(event, this)"' +
				' onmouseout="' + this.m_InstanceName + '.childCollectionItem_mouseout(event, this)">\n' +
				'		<table class="ddm_ChildCollectionItemTable" style="width:100%" border="0" cellpadding="0" cellspacing="0">\n' +
				'			<tr>\n' +
		// scw		'				<td class="ddm_ChildCollectionItem">\n' +
/* scw */		'				<td class="ddm_ChildCollectionItem">\n' +
				'	' + label + '</td>\n' +
				//scw '				<td class="ddm_ChildCollectionItemArrowCell">\n' +
				// scw '					<img src="' + this.m_arrowRightImage + '" width="' + this.m_arrowRightImageWidth + '" height="' + this.m_arrowRightImageHeight + '"></td>\n' +
				'</tr>\n' +
				'		</table>\n';
		}
	}
}

function AuroraExplorerMenuBar_ClosingHtml(parentElement)
{
	var level = parentElement.m_level;

//	if (level == 0 && this.m_ShowHome)
//		level = 1;	// fake it...

	if (level == 0) // Home node
	{

	}
	else 
	if (level == 1) // Top-level menu items
	{
		this.m_ds[this.m_di++] =
			'			<tr>\n' +
			'				<td>\n' +
			'					<img src="' + this.m_src_Space + '" width="1" height="2"></td>\n' +
			'			</tr>\n' +
			'		</table>\n' +
			'	</div>\n' +
			'</td>\n'; // Closing tag for parent cell
	}
	else							// Child menu items
	{
		this.m_ds[this.m_di++] =
			'			<tr>\n' +
			'				<td>\n' +
			'					<img src="' + this.m_src_Space + '" width="1" height="2"></td>\n' +
			'			</tr>\n' +
			'		</table>\n' +
			'	</div>\n' +
			'	</td>\n' + // Closing tag for parent cell.
			'</tr>\n'; // Closing tag for parent row.
	}
}

// ============= Runtime Support Functions =============================

function AuroraExplorerMenuBar_topCollectionItem_mouseover(e, element)
{
	if (navigator.appName == "Netscape")
	{
		this.highlightItem(element);
	}
	else //IE Branch
	{						
		this.highlightItem(element);

		var headerTable = document.getElementById(this.m_HeaderTableId);
		var headerHeight = parseInt(headerTable.offsetHeight);
		var headerTop = parseInt(headerTable.offsetTop);		
		var headerLeft = parseInt(headerTable.offsetLeft);		

		var trikLeft = 0;
		var trikTop = 0;
		
		var container = headerTable.offsetParent;				
	
		while (container)
		{
			trikLeft += container.offsetLeft;
			trikTop += container.offsetTop;			
			container = container.offsetParent;
		}

		var menuBottomBorder = parseInt(document.getElementById(this.m_HeaderMenuId).currentStyle.borderBottomWidth);
		var menuBottomPadding = parseInt(document.getElementById(this.m_HeaderMenuId).currentStyle.paddingBottom);

		if (isNaN(menuBottomBorder)) { menuBottomBorder = 0 }
		if (isNaN(menuBottomPadding)) { menuBottomPadding = 0 }

		headerHeight = parseInt(headerHeight) - parseInt(menuBottomBorder) - parseInt(menuBottomPadding);

		if (element.getElementsByTagName("div").length > 0)
		{
			var childMenu = element.getElementsByTagName("div")[0];
			childMenu.style.top = trikTop + headerTop + headerHeight;
			childMenu.style.left = trikLeft + headerLeft + element.offsetLeft;
			childMenu.style.display = "block";

			this.setMenuDisplayStatus(childMenu, "on");
		}		
	}
}

function AuroraExplorerMenuBar_topCollectionItem_mouseout(e, element)
{
	if (!e) { e = window.event; }		

	if (navigator.appName == "Netscape") //NN/Mozilla
	{
		if (element.getElementsByTagName("div").length > 0)
		{		
			var childMenu = element.getElementsByTagName("div")[0];
			if (childMenu.style.display == "none")
			{
				this.unhighlightItem(element);
			}
		}
	}
	else // IE
	{
		this.unhighlightItem(element);

		if (element.getElementsByTagName("div").length > 0)
		{			
			var childMenu = element.getElementsByTagName("div")[0];
			childMenu.style.display = "none";

			this.setMenuDisplayStatus(childMenu, "off");
		}
	}
}

function AuroraExplorerMenuBar_childCollectionItem_mouseover(e, element)
{
	if (navigator.appName == "Netscape")
	{
		this.highlightItem(element);
	}
	else
	{
		this.highlightItem(element);
		// scw if (element.getElementsByTagName("div").length > 0)
		// scw {					
			// scw var childMenu = element.getElementsByTagName("div")[0];
			// scw childMenu.style.top = element.offsetTop;
			// scw childMenu.style.display = "block";

			// scw this.setMenuDisplayStatus(childMenu, "on");
		// scw }
	}
}

function AuroraExplorerMenuBar_highlightItem(element)
{
	var itemDisplayTable = element.getElementsByTagName("table")[0];

	// Set style for item's display table element.
	if (itemDisplayTable.className == "ddm_TopCollectionItemTable")
	{
		itemDisplayTable.className = "ddm_TopCollectionItemTable_over";
	}
	else if (itemDisplayTable.className == "ddm_ChildCollectionItemTable")
	{
		itemDisplayTable.className = "ddm_ChildCollectionItemTable_over";
	}

	var tableCells = itemDisplayTable.getElementsByTagName("td")
	for (var i=0; i<tableCells.length; i++)
	{
		// Set style for item's label cell element.
		if (tableCells[i].className == "ddm_TopCollectionItem")
		{
			tableCells[i].className = "ddm_TopCollectionItem_over";
		}
		else if (tableCells[i].className == "ddm_ChildCollectionItem")
		{
			tableCells[i].className = "ddm_ChildCollectionItem_over";
		}

		// Change arrow image to mouseover version.
		if (tableCells[i].className == "ddm_TopCollectionItemArrowCell")
		{
			tableCells[i].getElementsByTagName("img")[0].src = this.m_arrowDownOverImage;
		}
		else if (tableCells[i].className == "ddm_ChildCollectionItemArrowCell")
		{
			tableCells[i].getElementsByTagName("img")[0].src = this.m_arrowRightOverImage;
		}
	}
}

function AuroraExplorerMenuBar_childCollectionItem_mouseout(e, element)
{
	if (!e) { e = window.event; }

	if (navigator.appName == "Netscape") // NN/Mozilla
	{
		if (element.getElementsByTagName("div").length > 0)
		{				
			var childMenu = element.getElementsByTagName("div")[0];
			if (childMenu.style.display == "none")
			{
				this.unhighlightItem(element);
			}
		}				
	}

	else // IE
	{
		this.unhighlightItem(element);

		if (element.getElementsByTagName("div").length > 0)
		{					
			var childMenu = element.getElementsByTagName("div")[0];
			childMenu.style.display = "none";

			this.setMenuDisplayStatus(childMenu, "off");
		}
	}
}

function AuroraExplorerMenuBar_unhighlightItem(element)
{
	var itemDisplayTable = element.getElementsByTagName("table")[0];

	// Set style for item's display table element.
	if (itemDisplayTable.className == "ddm_TopCollectionItemTable_over")
	{
		itemDisplayTable.className = "ddm_TopCollectionItemTable";
	}
	else if (itemDisplayTable.className == "ddm_ChildCollectionItemTable_over")
	{
		itemDisplayTable.className = "ddm_ChildCollectionItemTable";
	}

	var tableCells = itemDisplayTable.getElementsByTagName("td")
	for (var i=0; i<tableCells.length; i++)
	{

		// Set style for item's label cell element.
		if (tableCells[i].className == "ddm_TopCollectionItem_over")
		{
			tableCells[i].className = "ddm_TopCollectionItem";
		}
		else if (tableCells[i].className == "ddm_ChildCollectionItem_over")
		{
			tableCells[i].className = "ddm_ChildCollectionItem";
		}

		// Change arrow image to mouseover version.
		if (tableCells[i].className == "ddm_TopCollectionItemArrowCell")
		{
			tableCells[i].getElementsByTagName("img")[0].src = this.m_arrowDownImage;
		}
		else if (tableCells[i].className == "ddm_ChildCollectionItemArrowCell")
		{
			tableCells[i].getElementsByTagName("img")[0].src = this.m_arrowRightImage;
		}

	}
}

function AuroraExplorerMenuBar_linkItem_mouseover(element)
{		
	if (element.className == "ddm_TopLinkItem")
	{
		element.className = "ddm_TopLinkItem_over";
	}

	else if (element.className == "ddm_ChildLinkItem")
	{
		element.className = "ddm_ChildLinkItem_over";
	}				
}

function AuroraExplorerMenuBar_linkItem_mouseout(element)
{
	if (element.className == "ddm_TopLinkItem_over")
	{
		element.className = "ddm_TopLinkItem";
	}

	else if (element.className == "ddm_ChildLinkItem_over")
	{
		element.className = "ddm_ChildLinkItem";
	}
}

function AuroraExplorerMenuBar_topCollectionItem_onclick(e, element)
{
	var headerTable  = document.getElementById(this.m_HeaderTableId);
	var headerHeight = headerTable.offsetHeight;

	var trikLeft = 0;
	var trikTop = 0;
	
	var container = headerTable.offsetParent;				
	while (container)
	{
		trikLeft += container.offsetLeft;
		trikTop += container.offsetTop;			
		container = container.offsetParent;
	}

	if (navigator.appName == "Netscape")
	{
		if (element.getElementsByTagName("div").length > 0)
		{				
			var childMenu = element.getElementsByTagName("div")[0];

			if (childMenu.style.display == "none")
			{
				this.resetMenus();
				childMenu.style.top = headerHeight + trikTop;
				childMenu.style.left = element.offsetLeft + trikLeft;
				childMenu.style.display = "block";
				this.setMenuDisplayStatus(childMenu, "on");
			}
			else if (childMenu.style.display == "block")
			{
				this.resetMenus();
				this.highlightItem(element);
				/* Note: have to rehighlight the element since the mouse is logically
					still over this element, and the closeChildMenusOf function loop sets parent
					elements of ALL child menus (including the target) back to regular style */
			}
		}

		e.stopPropagation();
	}

	else // IE Branch
	{
		e.cancelBubble = true;
	}
}

function AuroraExplorerMenuBar_childCollectionItem_onclick(e, element)
{
	if (navigator.appName == "Netscape")
	{
		if (element.getElementsByTagName("div").length > 0)
		{				
			var childMenu = element.getElementsByTagName("div")[0];

			if (childMenu.style.display == "none")
			{
				this.closeOpenSiblingsOf(element);
				childMenu.style.top = element.offsetTop;
				childMenu.style.left = element.offsetParent.offsetWidth;
				childMenu.style.display = "block";
				this.setMenuDisplayStatus(childMenu, "on");
			}
			else if (childMenu.style.display == "block")
			{
				this.closeChildMenusOf(element);
				this.highlightItem(element);
				/* Note: have to rehighlight the element since the mouse is logically
					still over this element, and the closeChildMenusOf function loop sets parent
					elements of ALL child menus (including the target) back to regular style */
			}
		}

		e.stopPropagation();
	}
	else // IE Branch
	{
		e.cancelBubble = true;
	}
}

function AuroraExplorerMenuBar_linkItem_onclick(e, element, url, target)
{
// alert (url);

	if (target == "")
	{
		target = "_self";
	}
	window.open(url, target);
	this.resetMenus();

	if (navigator.appName == "Netscape")
	{
		if (element.className == "ddm_ChildLinkItem_over")
		{
			element.className = "ddm_ChildLinkItem";
		}
		else if (element.className == "ddm_TopLinkItem_over")
		{
			element.className = "ddm_TopLinkItem";
		}			
		e.stopPropagation();
	}
// bjn 	
	else // IE Branch
	{
		e.cancelBubble = true;
	}
}

function AuroraExplorerMenuBar_closeChildMenusOf(element)
// Closes an element's associated child menu as well as all decendents of that menu.
{ 
	var decendentMenus = element.getElementsByTagName("div");

	for (var i=decendentMenus.length-1; i>=0; i--)
	{
		var childMenu = decendentMenus[i];		

		this.unhighlightItem(childMenu.parentNode);
		
		childMenu.style.display = "none";

		this.setMenuDisplayStatus(childMenu, "off");
	}
}

function AuroraExplorerMenuBar_closeOpenSiblingsOf(element)
{
	var hierarchyLevel = element.id.split(".").length;
	
	if (hierarchyLevel == 1) // Top-level items
	{
		var siblingCellElements = element.parentNode.cells;
		
		for (var i=0; i<siblingCellElements.length; i++)
		{
			var siblingCellElement = siblingCellElements[i];
			
			if (siblingCellElement.getElementsByTagName("div").length > 0)
			{
				if (siblingCellElement.getElementsByTagName("div")[0].style.display == "block" && siblingCellElement != element)
				{
					this.closeChildMenusOf(siblingCellElement);
				}
			}				
		}			
	}
	else // Sub-level items
	{
		var siblingRowElements = element.parentNode.parentNode.rows; // Note: had to use parentNode twice to get past the TBODY element to the TABLE element.

		for (var i=0; i<siblingRowElements.length; i++)
		{
			var siblingCellElement = siblingRowElements[i].cells[0];

			if (siblingCellElement.getElementsByTagName("div").length > 0)
			{
				if (siblingCellElement.getElementsByTagName("div")[0].style.display == "block" && siblingCellElement != element)
				{
					this.closeChildMenusOf(siblingCellElement);
				}
			}
		}
	}
}

function AuroraExplorerMenuBar_setMenuDisplayStatus(menuElement, status)
/* This function uses a global array (defined above) to record element references
	to all menu containers that are currently visible. */
{
	if (status == "on")
	{
		/* If setting status to "on", add the element to the selectedElements array. */
		var alreadyOn = false;
		for (var i=0; i<this.m_selectedElements.length; i++)
		{
			if (this.m_selectedElements[i] == menuElement)
			{
				alreadyOn = true;
				break;
			}
		}

		if (!alreadyOn)
		{
			this.m_selectedElements.push(menuElement);
		}
	}
	else if (status == "off")
	{
		/* If setting status to "off", loop through the selectedElements array and
			find the array item that matches the current menu element and remove it
			from the array. */
		for (var i=0; i<this.m_selectedElements.length; i++)
		{
			if (this.m_selectedElements[i] == menuElement)
			{
				this.m_selectedElements.splice(i, 1); //Removes the selected element from the array.
				break;
			}
		}
	}
}

function AuroraExplorerMenuBar_resetMenus(e)
{
	var i = 0;
	var topLevelMenuCell = document.getElementById(i.toString());
	while (topLevelMenuCell != null)
	{			
		if (topLevelMenuCell.getElementsByTagName("div").length > 0 && topLevelMenuCell.getElementsByTagName("div")[0].style.display == "block")
		{
			this.closeChildMenusOf(topLevelMenuCell);
		}
		i++;
		topLevelMenuCell = document.getElementById(i.toString());
	}

	this.m_selectedElements.length = 0; // Clear out the array.
}
function clink(cnode) 
{ 
	strNode = cnode.toString();
	if (cnode <= 9999 && cnode >= 0)
	{
	  link('00' + strNode );
	}
	if (cnode <= 99999 && cnode >= 10000)
	{
	  link('0' + strNode );
	}
	if (cnode > 99999)
	{
	  link(strNode);
	}
}


// ==================== the end ===========================