var menuNumberCount = 5;
var subMenus = new Array(menuNumberCount);
var menuActive =new Array(menuNumberCount);
var hideTimer = null;

/****
* Events
*****/

function menuOut() {
	hideTimer = setTimeout("hideAllMenus()", 1000);
}

function menuOver() {
	clearTimeout(hideTimer);
}

/****
* private methods
*****/

function hideAllMenus() {
	for (var i = 1; i < (menuNumberCount+1); i++) {
		if(menuActive[i] == true) hideMenu(i);
	}
}

function hideMenu(m_No) {

	menuActive[m_No] = false;
	
	if(changeObjectVisibility('menu' + m_No, 'hidden'))  return true;
    else return false;

}

function showMenu(m_No,object) {

	hideAllMenus();
	
	menuActive[m_No] = true;
	
	x = getElementLeft(object.id);
	y = getElementTop(object.id) + getElementHeight(object.id) + 0;
	
	moveXY('menu' + m_No, x, y);

	if(changeObjectVisibility('menu' + m_No, 'visible')) return true;
    else return false;
}

/****
* Objects protoTypes
*****/

function ItemDesign(offClass, onClass, offBG, onBG)
{
	this.offClass = offClass;
	this.onClass = onClass;
	this.onBG = onBG;
	this.offBG = offBG;
}

function SubMenu(linkedToMenu, menuWidth,seperatorColor, itemDesign) {

	this.itemsInMenu = 0;
	this.height = 15;
	this.itemDesign = itemDesign;
	
	this.itemText = new Array();

	this.addItem = function(menuID,itemText,itemURL,itemWidth) {
		this.itemsInMenu += 1;
		var tempId = linkedToMenu + '_' + this.itemsInMenu;	
		this.itemText[this.itemsInMenu] = new String(CreateItem(tempId, menuID, itemText,itemURL,itemWidth,this.height,this.itemDesign));
	}
	this.writeMenu = function() {
	
		var menuStr = new String();
		
		menuStr += '<div id="menu' + linkedToMenu + '" name="menu' + linkedToMenu + '" style="position: absolute; visibility: hidden; z-index: 50;"	  width="' + menuWidth + '"';		
		
		if (!ns4) menuStr += ' style="width:' + menuWidth + ';"';
		menuStr+= '><table border="0" cellpadding="0" cellspacing="0" width="' + menuWidth + '">';
			
		for (var count = 0; count < this.itemsInMenu; count++) {
			menuStr += '<tr>' + this.itemText[count+1] + '</tr>';
			menuStr += '<tr bgcolor="' + seperatorColor + '" height=1><td></td></tr>';
		}
		
		menuStr += '</table></div>';
		document.write(menuStr);
	}
}

/****
* CreateItem method
*****/

function CreateItem(curItemId,menuID, itemText, itemURL, width, height,itemDesign)
{
	temp = new String('');
	
	temp += '<td id="itemTd' + curItemId + '" bgcolor="' + itemDesign.offBG + '" width="'+ width + 
	'" valign="middle" height="' + height + '" ';	
	
	if (!ns4) {					
		temp += ' onmouseover="changeClass(\'itemA' + curItemId + '\',\'' + itemDesign.onClass + '\');menuOver();changeBGColour(\'itemTd' + curItemId + '\', \'' + itemDesign.onBG + '\');" onmouseout="menuOut(); changeClass(\'itemA' + curItemId + '\',\'' + itemDesign.offClass + '\'); changeBGColour(\'itemTd' + curItemId + '\', \'' + itemDesign.offBG + '\');"';
		
		temp += 'return !showMenu(' + menuID + ',event);" ';
		temp += ' onclick="document.location.href=\'' + itemURL + '\';" ';
	} 
	
	temp +='>'; 
	
	if (ns4) {		
		temp +='<ilayer><layer ';		
		temp += ' onmouseover="menuOver();changeBGColour(\'itemDivLayer' + curItemId + '\', \'' + itemDesign.onBG + '\');" onmouseout="menuOut();changeBGColour(\'itemDivLayer' + curItemId + '\', \'' + itemDesign.offBG + '\');"';
		temp += 'return !showMenu(' + menuID + ',event);" ';
	} else {
		temp +='<div ';
	}

	temp += ' width="' + width + '"  id="itemDivLayer' + curItemId +'"><a href="' + itemURL + 
		'" 	target="_self" class="' + itemDesign.offClass + '" id="itemA' + curItemId + '">';
		
	temp += '&nbsp;&nbsp;&nbsp;' + itemText + '&nbsp;&nbsp;&nbsp;</a>';
			
	if (ns4) temp += '</layer></ilayer>';
	else temp += '</div>';
				
	temp += '</td>';	

	return temp;
}