function MenuIEControl(MenuName)
{
	this.arrSubMenus = new Array()
	this.arrHiddenElm = new Array()
	this.Menu = MenuName
	this.Disable = disableItem
	this.Default = defaultItem
	this.Select = selectItem
	this.Show = showSubMenu
	this.Hide =	hideSubMenu
}
function defaultItem(Page)
{
	var arrPage = Page.split(",")
	var cell,cells
	var contFlag = true
	var objTable = document.all.item(this.Menu)
	for(var ctr=0;ctr<arrPage.length;ctr++)
	{
		if (!(contFlag))break
		cells = objTable.cells
		for (var ctr2=0;ctr2 < cells.length;ctr2++)
		{
			contFlag = false
			cell = cells[ctr2]
			if (cell.submenuid.toLowerCase( ) == this.Menu + '_' + arrPage[ctr].toLowerCase( ))
			{	
				cell.className = objTable.classsel
				cell.setAttribute("selected","true")
				objTable = document.all.item(cell.submenuid)
				contFlag = true
				break
			}
		}
	}
}

function disableItem(Page)
{
	var arrPage = Page.split(",")
	var cell,cells
	var contFlag = true
	var objTable = document.all.item(this.Menu)
	for(var ctr=0;ctr<arrPage.length;ctr++)
	{
		if (!(contFlag))break
		cells = objTable.cells
		for (var ctr2=0;ctr2 < cells.length;ctr2++)
		{
			contFlag = false
			cell = cells[ctr2]
			if (cell.submenuid.toLowerCase( ) == this.Menu + '_' + arrPage[ctr].toLowerCase( ))
			{	
				objTable = document.all.item(cell.submenuid)
				contFlag = true
				break
			}
		}
	}
	if(contFlag)
		{
			cell.className = getMenuTable(cell).classdis
			cell.setAttribute("disable","true")
		}
}

function selectItem()
{
	var obj = getMenuTD(event.srcElement)
	if (obj)
		if (obj.href)
			self.location.href = MakeLink(obj.href)
}

function showSubMenu(objTable,side)
{
	var obj = getMenuTD(event.srcElement)
	if(obj)Hilite(objTable,obj)
	if (obj.submenuid != objTable.menuid && obj.submenuid && !obj.disable)
	{
		var objSub = document.all.item(obj.submenuid)
		if (objSub)
		{
			
			var arrTemp
			var docWidth = document.body.clientWidth
			var docHeight = document.body.clientHeight
			var objLeft = calculateSumOffset(obj,'offsetLeft')
			var objTop =	calculateSumOffset(obj,'offsetTop')
			var objHeight = obj.offsetHeight
			var objWidth = obj.offsetWidth
			var subHeight = objSub.offsetHeight
			var subWidth = objSub.offsetWidth
								
			if(side)
			{
				var objWidth = obj.offsetWidth
				var subLeft = objLeft + objWidth
				objSub.style.top =  (((objTop  + subHeight)>docHeight) && 
					((objTop-objHeight) > subHeight))?objTop -subHeight+objHeight:objTop
				objSub.style.left = ((subWidth + subLeft) > docWidth) && 
					(objLeft > subWidth)?objLeft - subWidth:Math.min(subLeft,Math.max(objLeft+objWidth/2,docWidth - subWidth))
			}
			else
			{
				objSub.style.left = ((subWidth + objLeft) > docWidth)?Math.max(0,docWidth - subWidth):objLeft
				objSub.style.top =  (((objTop + objHeight + subHeight)>docHeight) && 
					(objTop > subHeight))?objTop -subHeight:objTop + objHeight
			}
	
			arrTemp = hideElement("SELECT",objSub)
			arrTemp = arrTemp.concat(hideElement("OBJECT",objSub))
			arrTemp = arrTemp.concat(hideElement("IFRAME",objSub))
			objSub.style.visibility=""
			this.arrHiddenElm[this.arrHiddenElm.length]=arrTemp
			this.arrTemp = null
			this.arrSubMenus[this.arrSubMenus.length]=objSub
		}
	}
	event.cancelBubble
}

function hideSubMenu(objTable)
{
	var obj = getMenuTD(window.event.srcElement)
	var objTo = getMenuTable(window.event.toElement)
	var objSub = document.all.item(obj.submenuid)
	if (!(objTo == objSub && objTo))
	{
		while(!(objTo == this.arrSubMenus[this.arrSubMenus.length-1] || this.arrSubMenus.length < 1)) 
		{
			var obj = this.arrSubMenus[this.arrSubMenus.length-1]
			this.arrSubMenus = this.arrSubMenus.slice(0,this.arrSubMenus.length-1)
			UnHilite(obj)
			obj.style.visibility="hidden"
			obj.style.left=-300
			obj.style.top =-300
			showElements(this.arrHiddenElm[this.arrHiddenElm.length-1])
			this.arrHiddenElm = this.arrHiddenElm.slice(0,this.arrHiddenElm.length-1)
		}
		if(objTo != this.arrSubMenus[this.arrSubMenus.length-1] && this.arrSubMenus.length < 1)
		{
			UnHilite(document.all.item(this.Menu))
		}
	}
	event.cancelBubble
}

//*****************************************************************************
//private functions ************************************************************
//******************************************************************************
function calculateSumOffset(idItem, offsetName)
{
	var totalOffset =0;
	var item = eval('idItem');
	do
	{
		totalOffset += eval('item.' + offsetName);
		item = eval('item.offsetParent');
	}while(item != null);
	return totalOffset;
}

function getMenuTD(obj)
{
	var objTemp = obj
	while (objTemp)
	{
		if (objTemp.submenuid)
			return objTemp
		else
			objTemp = objTemp.offsetParent
	}
	return false
}

function getMenuTable(obj)
{
	var objTemp = obj
	while (objTemp)
	{
		if (objTemp.menuid)
			return objTemp
		else
			objTemp = objTemp.offsetParent
	}
	return false
}

function hideElement(elmID,obj)
{
	var arrTemp = new Array()
	var Item
	var elmCol = document.all.tags(elmID)
	for (key = 0; key < elmCol.length;key++)
	{
		Item = elmCol[key]
		if (!(Item.style.display == "none" || Item.runtimeStyle.display == "none" || Item.runtimeStyle.visibility == "hidden"))
			if (intersect(Item,obj))
			{
				Item.runtimeStyle.visibility = "hidden"
				arrTemp[arrTemp.length]=Item
			}
	}
	return arrTemp
}

function showElements(arrElm)
{
	for(key = 0;key < arrElm.length;key++)
	 arrElm[key].runtimeStyle.visibility = ""
}

function intersect(elm,menu)
{
	var et = calculateSumOffset(elm,'offsetTop')
	var el = calculateSumOffset(elm,'offsetLeft')
	var eb = et + elm.offsetHeight
	var er = el + elm.offsetWidth
	var mt = menu.style.pixelTop
	var ml = menu.style.pixelLeft
	var mb = mt + menu.offsetHeight
	var mr = ml + menu.offsetWidth
	return ((et < mb) && (eb > mt) && (el < mr) && (er > ml))?true:false
}


function Hilite(objTable,obj)
{
	UnHilite(objTable)
	if(!(obj.disable))
		obj.className=obj.className.split(" ")[0]  + " " + objTable.classhot
}

function UnHilite(objTable)
{
	var cells = objTable.cells
	for (var ctr=0;ctr < cells.length;ctr++)
		cells[ctr].className = cells[ctr].className.split(" ")[0] 
}

