
// ===================== fishbowl_explorer_menubar Class ======================================

function fishbowl_explorer_menubar (strInstanceName, strCgiPath, strAssetsPath, strShowHome, loggedIn, isContributor, queryString)
{
	this.m_QueryString = queryString;
	this.m_LoggedIn = loggedIn;
	this.m_IsContributor = isContributor;
	this.m_InstanceName = strInstanceName;
	this.m_CgiPath		= strCgiPath;
	this.m_AssetsPath	= strAssetsPath;
	this.m_ShowHome	    = false;
	
	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 
	fishbowl_explorer_menubar.prototype.Display = fishbowl_explorer_menubar_Display;
	fishbowl_explorer_menubar.prototype.DisplayNode = fishbowl_explorer_menubar_DisplayNode;
	
	// content page generation
	fishbowl_explorer_menubar.prototype.OpeningHtml = fishbowl_explorer_menubar_OpeningHtml;
	fishbowl_explorer_menubar.prototype.CoreHtml = fishbowl_explorer_menubar_CoreHtml;
	fishbowl_explorer_menubar.prototype.ClosingHtml = fishbowl_explorer_menubar_ClosingHtml;	
	
	// runtime support
	fishbowl_explorer_menubar.prototype.topCollectionItem_mouseover	= fishbowl_explorer_menubar_topCollectionItem_mouseover;
	fishbowl_explorer_menubar.prototype.topCollectionItem_mouseout	= fishbowl_explorer_menubar_topCollectionItem_mouseout;
		
	fishbowl_explorer_menubar.prototype.childCollectionItem_mouseover = fishbowl_explorer_menubar_childCollectionItem_mouseover;
	fishbowl_explorer_menubar.prototype.childCollectionItem_mouseout	= fishbowl_explorer_menubar_childCollectionItem_mouseout;

	fishbowl_explorer_menubar.prototype.highlightItem					= fishbowl_explorer_menubar_highlightItem;
	fishbowl_explorer_menubar.prototype.unhighlightItem				= fishbowl_explorer_menubar_unhighlightItem;

	fishbowl_explorer_menubar.prototype.linkItem_mouseover			= fishbowl_explorer_menubar_linkItem_mouseover;
	fishbowl_explorer_menubar.prototype.linkItem_mouseout				= fishbowl_explorer_menubar_linkItem_mouseout;

	fishbowl_explorer_menubar.prototype.topCollectionItem_onclick		= fishbowl_explorer_menubar_topCollectionItem_onclick;
	fishbowl_explorer_menubar.prototype.childCollectionItem_onclick	= fishbowl_explorer_menubar_childCollectionItem_onclick;
	fishbowl_explorer_menubar.prototype.linkItem_onclick				= fishbowl_explorer_menubar_linkItem_onclick;

	fishbowl_explorer_menubar.prototype.closeChildMenusOf				= fishbowl_explorer_menubar_closeChildMenusOf;
	fishbowl_explorer_menubar.prototype.closeOpenSiblingsOf			= fishbowl_explorer_menubar_closeOpenSiblingsOf;

	fishbowl_explorer_menubar.prototype.setMenuDisplayStatus			= fishbowl_explorer_menubar_setMenuDisplayStatus;
	fishbowl_explorer_menubar.prototype.resetMenus					= fishbowl_explorer_menubar_resetMenus;
}

function fishbowl_explorer_menubar_Display(node)
{
	this.m_ds[this.m_di++] = 
		'<!-- Header Table -->' + 
		'<table id="' + this.m_HeaderTableId + '" style="width:100%" border="0" cellspacing="0" cellpadding="0" align="left">' +
		'	<tr>' +
		'		<td id="' + this.m_HeaderMenuId + '" class="ddm_HeaderMenuCell" align="center">' +
		'';

// 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" align="left">\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>' +
		'	</tr>' +
		'</table>' +
		'';
	document.write(this.m_ds.join(''));
	return this.m_ds.join('');
}

function fishbowl_explorer_menubar_DisplayNode (parentElement, parentPath)
{
	// 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 (parentElement.m_level < 1)
		{		
			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 fishbowl_explorer_menubar_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';
	}
	else							// Child menu items
	{
		this.m_ds[this.m_di++] =
			'<div class="ddm_SubChildCollectionContainer" style="display:none">\n' +
			'	<table class="ddm_SubChildListTable" border="0" cellpadding="0" cellspacing="0">\n';
	}
}

function fishbowl_explorer_menubar_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...
	
	if (level == 0) // Home node
	{

	}
	if (level == 1)
	{	
		this.m_ds[this.m_di++] = '<td>&nbsp;&nbsp;</td>';
	}
	if (level == 1 && label == 'Contribution' && this.m_IsContributor == 'false')
	{
	
	}
	else if (level == 1 && label == 'Register' && this.m_LoggedIn == 1)
	{

	}
	else if (level == 1 && label == 'Login')
	{
		if (this.m_LoggedIn == 0)
		{
			var linkTarget = "_self";
			var url = this.m_CgiPath + '?IdcService=SS_LOGIN&PREV_QUERY_STRING=' + escape('http://www.fishbowlsolutions.com/Login/LoginThanks/index.htm');

			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)">\n' +
				'	' + label + '\n' +
				'</td>\n';
		}
		else
		{
		}
	}
	else if (level == 1) // Top-level menu items
	{
		if (label == "Fishbowl Solutions - Oracle UCM (Stellent) and PTC Solutions Experts")
		{
			label = "Home";
			var linkTarget = "_self";
			var url = childElement.m_href.replace(/'/g, "\\'");
		}
			
		else if (label == "WebEx")
		{
			var linkTarget = "_blank";
			var url = 'http://advancedmeetings.webex.com/';
		}
		else if (label == "C4 Blog")
		{
			var linkTarget = "_blank";
			var url = "http://cfour.fishbowlsolutions.com?WT.mc_id=L_C4_hmpg_TopNav_link";
		}
		else
		{
			var linkTarget = "_self";
			var url = childElement.m_href.replace(/'/g, "\\'");
		}
		if (childElement.m_subNodes.length == 0 || childElement.m_level == 0)
		{	// "item"
		
	if (label == 'Register')
			{
		this.m_ds[this.m_di++] =
						'<td id="' + id + '" class="ddm_TopLinkItem"' +
						' onclick="' + this.m_InstanceName + '.linkItem_onclick(event, this, \'' + url + '?RegisterStatus=Start\', \'' + linkTarget + '\')"' +
						' onmouseover="' + this.m_InstanceName + '.linkItem_mouseover(this)"' + 
						' onmouseout="' + this.m_InstanceName + '.linkItem_mouseout(this)">\n' +
						'	' + label + '\n' +
				'</td>\n';
	}
	else
	{
			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)">\n' +
				'	' + label + '\n' +
				'</td>\n';
				}
		}
		else 
		{	// "collection"
			this.m_ds[this.m_di++] =
				'<td id="' + id + '"' +
// bjn			' onclick="' + this.m_InstanceName + '.topCollectionItem_onclick(event, this)"' +
/* bjn */		' 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' +
				'			<td class="ddm_TopCollectionItemArrowCell">\n' +
				'				<img src="' + this.m_arrowDownImage + '" width="' + this.m_arrowDownImageWidth + '" height="' + this.m_arrowDownImageHeight + '"></td>\n' +
				'			<td class="ddm_TopCollectionItem">\n' +
				'				' + label + '&nbsp;</td>\n' +
				'		</tr>\n' +
				'	</table>\n';
		}
	}
	else // Child menu items
	{
		var linkTarget = "_self";
		var url = childElement.m_href.replace(/'/g, "\\'");

		if (childElement.m_subNodes.length == 0 || level == 2)
		{	// "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 + '"' +
// bjn			' onclick="' + this.m_InstanceName + '.childCollectionItem_onclick(event, this)"' +
/* bjn */		' 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' +
				'				<td class="ddm_ChildCollectionItem">\n' +
				'					' + label + '</td>\n' +
				'				<td class="ddm_ChildCollectionItemArrowCell">\n' +
				'					<img src="' + this.m_arrowRightImage + '" width="' + this.m_arrowRightImageWidth + '" height="' + this.m_arrowRightImageHeight + '"></td>\n' +
				'			</tr>\n' +
				'		</table>\n';
		}
	}
}

function fishbowl_explorer_menubar_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++] =
			'		</table>\n' +
			'	</div>\n' +
			'</td>\n'; // Closing tag for parent cell
	}
	else							// Child menu items
	{
		this.m_ds[this.m_di++] =
			'		</table>\n' +
			'	</div>\n' +
			'	</td>\n' + // Closing tag for parent cell.
			'</tr>\n'; // Closing tag for parent row.
	}
}

// ============= Runtime Support Functions =============================
function getStyle(obj,cAttribute){
	//if IE
	if (obj.currentStyle){
		var curVal=eval('obj.currentStyle.'+cAttribute)
	}else{
	//if Mozilla/FF
		var curVal=eval('document.defaultView.getComputedStyle(obj, null).'+cAttribute)
	}
	//alert('style attribute '+cAttribute+' = ' + curVal)
	return curVal;
}
function getRealPosition(element, axis)
{
	this.pos = (axis == 'x') ? element.offsetLeft : element.offsetTop;
	this.tmp = element.offsetParent;
	while(this.tmp != null)
	{
		this.pos += (axis == 'x') ? this.tmp.offsetLeft : this.tmp.offsetTop;
		this.tmp = this.tmp.offsetParent;
	}
	
	return this.pos;
}

function fishbowl_explorer_menubar_topCollectionItem_mouseover(e, element)
{
	this.highlightItem(element);
	var headerTable = document.getElementById(this.m_HeaderTableId);
	var headerHeight = parseInt(headerTable.offsetHeight);

	var elementLeft = getRealPosition(element, 'x');
	var elementTop = getRealPosition(element, 'y');

	var menuBottomBorder = parseInt(getStyle(document.getElementById(this.m_HeaderMenuId),"borderBottomWidth"));
	var menuBottomPadding = parseInt(getStyle(document.getElementById(this.m_HeaderMenuId),"paddingBottom"));

	if (isNaN(menuBottomBorder)) { menuBottomBorder = 0; }
	if (isNaN(menuBottomPadding)) { menuBottomPadding = 0; }
	menuBottomPadding = 0;
	headerHeight = parseInt(headerHeight) - parseInt(menuBottomBorder) - parseInt(menuBottomPadding);


	if (element.getElementsByTagName("div").length > 0)
	{
		var childMenu = element.getElementsByTagName("div")[0];

		childMenu.style.top = (elementTop + headerHeight - 3) + "px";
		childMenu.style.left = elementLeft + "px";
		childMenu.style.display = "block";

		this.setMenuDisplayStatus(childMenu, "on");
	}		

}

function fishbowl_explorer_menubar_topCollectionItem_mouseout(e, element)
{
	if (!e) { e = window.event; }		

	this.unhighlightItem(element);

	if (element.getElementsByTagName("div").length > 0)
	{			
		var childMenu = element.getElementsByTagName("div")[0];
		childMenu.style.display = "none";

		this.setMenuDisplayStatus(childMenu, "off");
	}
}

function fishbowl_explorer_menubar_childCollectionItem_mouseover(e, element)
{
	this.highlightItem(element);

	if (element.getElementsByTagName("div").length > 0)
	{					
		var childMenu = element.getElementsByTagName("div")[0];
		childMenu.style.top = element.offsetTop;
		childMenu.style.display = "block";

		this.setMenuDisplayStatus(childMenu, "on");
	}
}

function fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_childCollectionItem_mouseout(e, element)
{
	if (!e) { e = window.event; }

	this.unhighlightItem(element);

	if (element.getElementsByTagName("div").length > 0)
	{					
		var childMenu = element.getElementsByTagName("div")[0];
		childMenu.style.display = "none";

		this.setMenuDisplayStatus(childMenu, "off");
	}
}

function fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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;
	}

	e.cancelBubble = true;
}

function fishbowl_explorer_menubar_childCollectionItem_onclick(e, element)
{
	e.cancelBubble = true;
}

function fishbowl_explorer_menubar_linkItem_onclick(e, element, url, target)
{
// alert (url);

	if (target == "")
	{
		target = "_self";
	}
	window.open(url, target);
	this.resetMenus();

	e.cancelBubble = true;
}

function fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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 fishbowl_explorer_menubar_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.
}

// ==================== the end ===========================
