MenuObj.prototype.createHeading = MenuObjCreateHeading;
MenuObj.prototype.setClass = MenuObjSetClass;
MenuObj.prototype.setStyle = MenuObjSetStyle;
MenuObj.prototype.createLevelStart = MenuObjCreateLevelStart;
MenuObj.prototype.createLevelItem = MenuObjCreateLevelItem;
MenuObj.prototype.createLevelEnd = MenuObjCreateLevelEnd;
MenuObj.prototype.showAndHide = MenuObjShowAndHide;
MenuObj.prototype.hideAllObj = MenuObjHideAllObj;
MenuObj.prototype.checkOpenedLevels = MenuObjCheckOpenedLevels;
MenuObj.prototype.selectHeading = MenuObjSelectHeading;
window.oHideTimer = null;
var arrAllMenuObj = new Array();

//Centus software
var	LastHeadingItem = null;			//Centus software	Last heading item
var	LastLevelItemLink = null;		//Centus software	Last level item link ( A tag object) (set in LevelItem.onmouseover)
var	LastLevelItemLinkOut = null;	//Centus software	Last level item link leaved (set in LevelItem.onmouseout)
var	LastLevelNo = null;				//Centus software	Last level number

//Centus software added class Stack. According to JavaScript reference array object in IE 5 does not support push and pop functions
//--------------------------------------- Class stack

function NSStack()
{
	this.arrStack = new Array();
	this.count = 0;
	this.iter = null;
}

NSStack.prototype.Push = function (intEl) 
{
	this.arrStack[this.count] = intEl
	this.count++
};

NSStack.prototype.Pop = function () 
{
	if (this.count)
	{
		this.count--
		return this.arrStack[this.count]
	}
	else
	{
		return null
	}
};

NSStack.prototype.Peak = function () 
{
	if (this.count > 0)
	{
		return this.arrStack[this.count]
	}
	else
	{
		return null
	}
};

NSStack.prototype.IterInit = function ()
{
	if (this.count > 0)
	{
		this.iter = 0
	}
	else
	{
		this.iter = null
	}
};

NSStack.prototype.IterNext = function ()
{
	if ((this.iter != null) && (this.iter < this.count))
	{
		return this.arrStack[this.iter++]
	}
	else
	{
		this.iter = null
		return null
	}
};

NSStack.prototype.AlertAll = function ()
{	
	alert('Start alerting all stack elements')
	for(var stackIter2 = myStack.IterInit(); stackIter2 != null; stackIter2 = myStack.IterNext())
		alert(stackIter2)
	alert('Stop alerting all stack elements')
};

//--------------------- Class Stack End ----------------------

var myStack = new NSStack() //Centus software

//Centus software
//*** Get event target element ***
function getTargetElement(evt) {
    var elem
    if (evt.target) {
        elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target
    } else {
        elem = evt.srcElement
    }
    return elem
}
//Centus software
//for current or passed event calculate target element of the event and return first child A tag object
function getCurrATag(oNSEvent){
	var currATag = null
	var pevent = (oNSEvent) ? oNSEvent : ((window.event) ? window.event : "")//Centus software
	if (pevent) {
		var elem = getTargetElement(pevent)
		if (elem) {
			// found element
			if ((elem.tagName == "a") || (elem.tagName == "A"))
				currATag = elem
			else
				currATag = elem.getElementsByTagName("a")[0]
		}
	}
	return currATag;
}

//*****

// ---------------------------
function MenuObj(strObjName, oElmToAppendTo, bAbsolutePos, intPosX, intPosY, intLevelWidth, intLevelHeight, intBorder, intLevelsToShow, strDir, bHideOnDocumentClick){
	this.strObjName = strObjName;
	this.oElmToAppendTo = (oElmToAppendTo)? oElmToAppendTo : document.body;
	this.bAbsolutePos = bAbsolutePos;
	this.intPosX = (this.bAbsolutePos)? intPosX : 0;
	this.intPosY = (this.bAbsolutePos)? intPosY : 0;
	this.intLevelWidth = intLevelWidth;
	this.intLevelHeight = intLevelHeight;
	this.intBorderWidth = (intBorder)? intBorder : 0;
	this.intHeadingBorder = 0;	
	this.intHeadingSpace = 0;
	this.intLevelsToShow = (intLevelsToShow)? intLevelsToShow : 0;
	this.strDir = (strDir)? strDir : "down";
	this.strHeadingID = "";
	this.arrLevels = new Array();
	this.arrCurrLevel = null;
	this.arrPreviousLevel = new Array();
	this.arrLevelItems = new Array();
	this.oTimer = null;
	this.intLevelHasFocus = 0;	
	this.arrRefObj = new Array();
	arrAllMenuObj.push(this);
	if(bHideOnDocumentClick){
		document.onclick = function (){
    		MenuObjHideAllObj(true);                   
		}
	}	
}
// ---------------------------
//Centus software add strObjID parameters
function MenuObjCreateHeading(strText, intHeadingBorder, intHeadingSpace, strLink, strObjID, strClassName, strClassNameHover){
	var strHeadingID = this.strObjName + "_heading";	
	this.strHeadingID = strHeadingID;
	var oHeading = document.createElement("div");
	oHeading.setAttribute("id", this.strHeadingID);	
	oHeading.setAttribute("objName", this.strObjName);
	oHeading.setAttribute("objID", strObjID);//Centus software Needed to traverse back from the selected item to all his parent items.
	oHeading.setAttribute("parentObjID", -1);//Centus software
	if(strClassName){
		oHeading.setAttribute("normalClassName", strClassName);
		oHeading.setAttribute("hoverClassName", strClassNameHover);
	}
	oHeading.className = (strClassName)? strClassName : "menuHeading";
	if(this.bAbsolutePos){
		this.setStyle(oHeading, this.intPosX, this.intPosY);
	}		
	this.intHeadingBorder = (intHeadingBorder || intHeadingBorder == 0)? intHeadingBorder : this.intBorderWidth;
	this.intHeadingSpace = (intHeadingSpace)? intHeadingSpace : this.intLevelHeight;	
	var oTextNode = document.createTextNode(strText);
	if(strLink){
		var oLink = document.createElement("a");
		oLink.setAttribute("href", strLink);
		oLink.className = "headingItemLink";
		oLink.appendChild(oTextNode);
		oElmToAppendTo = oLink;		

		//Centus software  Expand link item inside Div object. Same behaviour inside whole Div object. Otherwise mouseout on link item will set font color to normal even we are still on the same menu item
		var oRImg = document.createElement("img");	//Centus software
		oRImg.setAttribute("src", "images/1x1.gif");//Centus software
		oRImg.setAttribute("alt", "");              //Centus software
		oRImg.setAttribute("border", 0);			//Centus software
		oRImg.setAttribute("width", "1");           //Centus software
		oRImg.setAttribute("height", "1");          //Centus software
		oRImg.className = "headingItemExpand";    	//Centus software
		oLink.appendChild(oRImg);         			//Centus software

		oHeading.appendChild(oLink);
	}
	else{
		var oSpan = document.createElement("span");
		oSpan.className = "headingItemLink";
		oSpan.appendChild(oTextNode);
		oHeading.appendChild(oSpan);
	}

	oHeading.onmouseover = function (oNSEvent){
		if (window.oHideTimer) {
		    clearTimeout(window.oHideTimer);
		    window.oHideTimer = null;
		}
		var strObjName = this.getAttribute("objName");
		eval(strObjName + ".hideAllObj()");
		eval(strObjName + ".showAndHide(this, 0, 1)");
		eval(strObjName + ".setClass(this, true, true)");

		//Centus software  Set CSS class of the last heading item to normal
		if (LastHeadingItem != null)
		{
			LastHeadingItem.className = "headingItemLink" //Centus software
			LastHeadingItem = null //Centus software
		}
		//Centus software set LastHeadingItem to current heading item
		var currATag = getCurrATag(oNSEvent) //Centus software
		if(currATag != null && currATag.className != "selectedHeadingItemLink")//Centus software
		{
			LastHeadingItem = currATag //Centus software
		}
	};

	oHeading.onmouseout = function (oNSEvent){
		if(oNSEvent){
			if(oNSEvent.relatedTarget){
				if(this == oNSEvent.relatedTarget || oNSEvent.relatedTarget.nodeType ==3 || String(oNSEvent.relatedTarget.nodeName).search(/a/i) != -1 || String(oNSEvent.relatedTarget.className).search(/levelContainer|levelItem|menuHeadingHover/) != -1){
					//Centus software Does not work well under Netscape
					//Centus software Leave font color of the last heading item highlited
					if (LastHeadingItem != null) //Centus software
					{
						LastHeadingItem.className = "headingItemLinkHover" //Centus software
					}
					//alert('NS headingOut')
					return false
				}
			}
		}
		else if(is.ie){
			if(event.toElement){
				if(event.toElement.parentNode == this || event.toElement == this || event.toElement.className.search(/levelContainer|levelItem/) != -1){
					//Centus software Leave font color of the last heading item highlited
					if (LastHeadingItem != null) //Centus software
					{
						LastHeadingItem.className = "headingItemLinkHover" //Centus software
					}
					//alert('IE headingOut')
					return false
				}
			}
		}
		var strObjName = this.getAttribute("objName");
		eval(strObjName + ".intLevelHasFocus=0");
		eval(strObjName + ".checkOpenedLevels()");
		eval(strObjName + ".setClass(this, false, true)");
		window.oHideTimer = setTimeout("MenuObjHideAllObj(true)", 1000);
	};
	this.oElmToAppendTo.appendChild(oHeading);
}
// ---------------------------
function MenuObjSetClass(oElm, bHover, bHeading, intLevel, bOpenLevel){
	var strNormalClassName = (oElm.getAttribute("normalClassName"))? oElm.getAttribute("normalClassName") : false;
	var strHoverClassName = (oElm.getAttribute("hoverClassName"))? oElm.getAttribute("hoverClassName") : false;
	if(bHover){
		if(typeof this.arrRefObj[intLevel] == "object"){
			var oRefObj = this.arrRefObj[intLevel];
			var strRefObjNormalClassName = (oRefObj.getAttribute("normalClassName"))? oRefObj.getAttribute("normalClassName") : false;
			var strRefObjHoverClassName = (oRefObj.getAttribute("hoverClassName"))? oRefObj.getAttribute("hoverClassName") : false;
			var strClassName = (strRefObjNormalClassName)? strRefObjNormalClassName : (bHeading)? "menuHeading" : "levelItem";
			var strClassNameToReplace = new RegExp((strRefObjHoverClassName)? strRefObjHoverClassName : (bHeading)? "menuHeadingHover" : "levelItemHover", "i");
			oRefObj.className = String(oRefObj.className).replace(strClassNameToReplace, strClassName);
		}
		this.arrRefObj[intLevel] = oElm;
		var strClassName = (strHoverClassName)? strHoverClassName : (bHeading)? "menuHeadingHover" : "levelItemHover";
		var strClassNameToReplace = new RegExp((strNormalClassName)? strNormalClassName : (bHeading)? "menuHeading" : "levelItem", "i");
		oElm.className = String(oElm.className).replace(strClassNameToReplace, strClassName);
	}
	else{
		if(!bOpenLevel && !this.arrRefObj[intLevel] == oElm || bHeading){
			var strClassName = (strNormalClassName)? strNormalClassName : (bHeading)? "menuHeading" : "levelItem";
			var strClassNameToReplace = new RegExp((strHoverClassName)? strHoverClassName : (bHeading)? "menuHeadingHover" : "levelItemHover", "i");
			oElm.className = String(oElm.className).replace(strClassNameToReplace, strClassName);
		}
	}
}
// ---------------------------
function MenuObjSetStyle(oElm, intPosX, intPosY, intWidth, intHeight, strVisibility){
	if(intPosX || intPosX == 0) oElm.style.left = intPosX + "px";
	if(intPosY || intPosY == 0) oElm.style.top = intPosY + "px";
	if(intWidth || intWidth == 0) oElm.style.width = intWidth + "px";
	if(intHeight|| intHeight == 0) oElm.style.height = intHeight + "px";
	if(strVisibility) oElm.style.visibility = strVisibility;
}
// ---------------------------
function MenuObjCreateLevelStart(intLevel, strVisibility){
	var intItem = 1;
	if(intLevel > 1){
		var intPrevLevelXPos = 0;
		var intPrevLevelYPos = 0;
		for(var i=0; i<this.arrLevels.length; i++){
			if(this.arrLevels[i][0] == intLevel){
				intItem = this.arrLevels[i][1] + 1;
			}
		}
	}
	var strLevelID = this.strObjName + "_" + intLevel + "_" + intItem;
	this.arrCurrLevel = [intLevel, intItem, strLevelID];
	this.arrPreviousLevel.push(this.arrCurrLevel);
	this.arrLevels.push([intLevel, intItem, strLevelID]);
	var oLevelStart = document.createElement("div");
	oLevelStart.setAttribute("id", strLevelID);
	oLevelStart.setAttribute("objName", this.strObjName);
	var strVisibility = (strVisibility)? strVisibility : (intLevel <= this.intLevelsToShow)? "visible" : "hidden";
	oLevelStart.className = "levelContainer";
	oLevelStart.onmouseout = function (){
		var strObjName = this.getAttribute("objName");
		eval(strObjName + ".checkOpenedLevels()");
	};
	this.oElmToAppendTo.appendChild(oLevelStart);
}
// ---------------------------
//Centus software add strObjID, strParentObjID, parameters
function MenuObjCreateLevelItem(bLevelItemToOpen, strText, strLink, strObjID, strParentObjID, strImagePath, strClassName, strClassNameHover){
	var oLevelContainer = getElm(this.arrCurrLevel[2]);
	var intLevel = this.arrCurrLevel[0];
	var intLevelItemToOpen = (bLevelItemToOpen)? 1 : false;
	for(var i=0; i<this.arrLevelItems.length; i++){
		if(this.arrLevelItems[i][0] == intLevel && this.arrLevelItems[i][1] && intLevelItemToOpen){
			intLevelItemToOpen = this.arrLevelItems[i][1] + 1;
		}
	}
	var oLevelItem = document.createElement("div");
	oLevelItem.setAttribute("objName", this.strObjName);
	oLevelItem.setAttribute("level", intLevel);
	oLevelItem.setAttribute("levelToOpen", intLevelItemToOpen);
	oLevelItem.setAttribute("objID", strObjID);				//Centus software Needed to traverse back from the selected item to all his parent items.
	oLevelItem.setAttribute("parentObjID", strParentObjID);	//Centus software
	if(strClassName){
		oLevelItem.setAttribute("normalClassName", strClassName);
		oLevelItem.setAttribute("hoverClassName", strClassNameHover);
	}
	oLevelItem.className = (strClassName)? strClassName : "levelItem";
	var oTextNode = document.createTextNode(strText);
/* //Centus software comment look 50 lines bellow how to add arrow
	if(intLevelItemToOpen){
		var oArrow;
		if(strImagePath){
			oArrow = document.createElement("img");
			oArrow.setAttribute("src", strImagePath);
			oArrow.setAttribute("alt", "");
			oArrow.setAttribute("border", 0);
		}
		else{
			oArrow = document.createElement("div");
			oArrow.innerHTML = "&raquo;";
		}
		oArrow.className = "levelItemArrow";
		oLevelItem.appendChild(oArrow);
	}
 *///Centus software
	if(strLink){
		var oLink = document.createElement("a");
		oLink.setAttribute("href", strLink);
		oLink.className = "levelItemLink";
		oLink.appendChild(oTextNode);
		oElmToAppendTo = oLink;

		//Centus software  Expand link item inside Div object by adding IMG tag to the right. Same behaviour inside whole Div object. Otherwise mouseout on link item will set font color to normal even we are still on the same menu item
		if(!(is.ie && is.bMac))//Centus software everthyng in this branch made by Centus software
		{
			//Only on IE for Mac this doesn't work ???
			var oRImg									//Centus software
			oRImg = document.createElement("img");    	//Centus software
			oRImg.setAttribute("src", "images/1x1.gif");//Centus software
			oRImg.setAttribute("alt", "");              //Centus software
			oRImg.setAttribute("border", 0);			//Centus software
			oRImg.setAttribute("width", "1");           //Centus software
			oRImg.setAttribute("height", "1");          //Centus software
			oRImg.className = "levelItemExpand";   		//Centus software
			oLink.appendChild(oRImg);         			//Centus software

			//Centus software add arrow if have childrens
			if(intLevelItemToOpen)						//Centus software
			{
				var oArrow;								//Centus software
				if(strImagePath == null)				//Centus software
				{
					strImagePath = "menu/MenuObj/arrowbw.gif"	//Centus software
				}
				oArrow = document.createElement("img");			//Centus software
				oArrow.setAttribute("src", "menu/MenuObj/arrowbw.gif");	//Centus software
				oArrow.setAttribute("alt", "");				//Centus software
				oArrow.setAttribute("border", 0);			//Centus software
				oArrow.className = "levelItemArrow";		//Centus software
				oLink.appendChild(oArrow);
			}
		}
		oLevelItem.appendChild(oLink);
	}
	else{
		var oSpan = document.createElement("span");
		oSpan.className = "levelItemLink";
		oSpan.appendChild(oTextNode);
		oLevelItem.appendChild(oSpan);
	}
	if(strLink){
		oLevelItem.onclick = function (oNSEvent){
			location.href = strLink;
		}
	}
	oLevelItem.onmouseover = function (oNSEvent){
		if (window.oHideTimer) {
		    clearTimeout(window.oHideTimer);
		    window.oHideTimer = null;
		}
		var oEvent = (oNSEvent)? oNSEvent : event;
		var strObjName = this.getAttribute("objName");
		var intLevel = this.getAttribute("level");
		var intLevelItemToOpen = this.getAttribute("levelToOpen");
		eval(strObjName + ".showAndHide(this, " + intLevel + ", " + intLevelItemToOpen + ", false)");
		eval(strObjName + ".setClass(this, true, false, " + intLevel + ", " + intLevelItemToOpen + ")");

		//Centus software  Set heading text color to highlited
		if (LastHeadingItem != null && intLevel == 1)//Centus software
		{
			LastHeadingItem.className = "headingItemLinkHover" //Centus software
			//alert('Level Over set heading')
			//Centus sotware set container object CSS class to highlited
			if(LastHeadingItem.parentNode.className != "menuHeadingHover")//Centus software
			{
				LastHeadingItem.parentNode.className = "menuHeadingHover"//Centus software
			}
		}
		//Centus software  Set Last level item link lefted text color to normal
		if (LastLevelItemLinkOut != null) //Centus software
		{
			LastLevelItemLinkOut.className = "levelItemLink" //Centus software
			LastLevelItemLinkOut = null						//Centus software
		}
		//Centus software If move to child item set parent item font color to highlited and push on stack
		if (LastLevelNo != null && LastLevelNo < intLevel) //Centus software
		{
			if(LastLevelItemLink.className != "selectedLevelItemLink")	//Centus software
			{
				LastLevelItemLink.className = "levelItemLinkHover" //Centus software
				myStack.Push(LastLevelItemLink)						//Centus software
			}
		}
		//Centus software If move to parent item pop item from stack and set item class to normal
		else if (LastLevelNo > intLevel) //Centus software
		{
			var oldHover = myStack.Pop()		//Centus software
			oldHover.className = "levelItemLink" //Centus software
		}
		LastLevelNo = intLevel;					//Centus software

		//Centus software Set LastLevelItemLink pointer to current item
		var currATag = getCurrATag(oNSEvent)	//Centus software

		if(currATag != null && currATag.className != "selectedLevelItemLink")	//Centus software
		{
			LastLevelItemLink = currATag //Centus software
		}
	};

	oLevelItem.onmouseout = function (oNSEvent){
		if(oNSEvent){
			if(oNSEvent.relatedTarget){
				if(this == oNSEvent.relatedTarget || oNSEvent.relatedTarget.nodeType ==3 || String(oNSEvent.relatedTarget.nodeName).search(/a/i) != -1 || String(oNSEvent.relatedTarget.className).search(/levelContainer|levelItem/) != -1){
					return false;
				}
			}
		}
		else if(is.ie){
			if(event.toElement){
				if(event.toElement.parentNode == this || event.toElement == this || event.toElement.className.search(/levelContainer|levelItem/) != -1){
					return false;
				}
			}
		}
		var strObjName = this.getAttribute("objName");
		eval(strObjName + ".intLevelHasFocus=0");
		eval(strObjName + ".checkOpenedLevels()");
		eval(strObjName + ".setClass(this, false, false)");
		//Centus software If move out from the menu items leave class of the A tag from the last selected menu items to highlited
		if(LastLevelItemLink && LastLevelItemLink.className != "selectedLevelItemLink") //Centus software
		{
			LastLevelItemLink.className = "levelItemLinkHover" //Centus software
			LastLevelItemLinkOut = LastLevelItemLink			//Centus software
		}
		window.oHideTimer = setTimeout("MenuObjHideAllObj(true)", 1000);
	};	
	this.arrLevelItems.push([intLevel, intLevelItemToOpen]);
	oLevelContainer.appendChild(oLevelItem);
}
// ---------------------------
function MenuObjCreateLevelEnd(){
	this.arrPreviousLevel.pop();
	this.arrCurrLevel = this.arrPreviousLevel.top();
}
// ---------------------------
function MenuObjShowAndHide(oEventTarget, intLevel, intItem, bTroughTimeout, intLevelItem){
	var intLevel = (bTroughTimeout && (this.intLevelHasFocus > intLevel))? this.intLevelHasFocus : intLevel;
	this.intLevelHasFocus = intLevel;	
	if(this.intLevelHasFocus == 0){
		oHeading = getElm(this.strHeadingID);
		var strClassName = (oHeading.getAttribute("normalClassName"))? oHeading.getAttribute("normalClassName") : "menuHeading";
		var strClassNameToReplace = new RegExp((oHeading.getAttribute("hoverClassName"))? oHeading.getAttribute("hoverClassName") : "menuHeadingHover", "i");
		oHeading.className = String(oHeading.className).replace(strClassNameToReplace, strClassName);
	}
	for(var i=0; i<this.arrLevels.length; i++){		
		var oCurrentLevel = this.arrLevels[i][0];
		var bResetColor = ((bTroughTimeout && this.intLevelHasFocus <= this.intLevelsToShow) || (oCurrentLevel > intLevel))? true : false;
		if(oCurrentLevel > intLevel){
			if(is.ie5 && is.bMac){
				getCSSObj(this.arrLevels[i][2]).display = "none";
			}
			getCSSObj(this.arrLevels[i][2]).visibility = "hidden";
		}
		if(bResetColor){
			if(typeof this.arrRefObj[this.arrLevels[i][0]] == "object"){
				var oRefObj = this.arrRefObj[this.arrLevels[i][0]];
				var strClassName = (oRefObj.getAttribute("normalClassName"))? oRefObj.getAttribute("normalClassName") : "levelItem";
				var strClassNameToReplace = new RegExp((oRefObj.getAttribute("hoverClassName"))? oRefObj.getAttribute("hoverClassName") : "levelItemHover", "i");
				oRefObj.className = String(oRefObj.className).replace(strClassNameToReplace, strClassName);
				oRefObj = null;
			}
		}
	}
	if(intItem){
		var strLevelID;
		var oParentNode;
		var intPosX;
		var intPosY;		
		for(var j=0; j<this.arrLevels.length; j++){
			var oCurrentLevel = this.arrLevels[j][0];
			if(oCurrentLevel == (intLevel +1) && this.arrLevels[j][1] == intItem){				
				this.intLevelHasFocus = (intLevel +1);
				strLevelID = this.arrLevels[j][2];
				oParentNode = oEventTarget.parentNode;
				if(intLevel == 0){
					switch(this.strDir){
						case "left":
							intPosX = oEventTarget.offsetLeft - (this.intLevelWidth + this.intHeadingBorder);
							intPosY = oEventTarget.offsetTop;
							break;
						case "up":
							intPosX = oEventTarget.offsetLeft;
							intPosY = oEventTarget.offsetTop + this.intHeadingBorder - getElm(strLevelID).offsetHeight;
							break;
						case "right":
							intPosX = oEventTarget.offsetLeft + this.intHeadingBorder + (layout = 1)? menuWidth : this.intLevelWidth;//Centus software
							//intPosX = oEventTarget.offsetLeft + this.intLevelWidth + this.intHeadingBorder;
							intPosY = oEventTarget.offsetTop;
							break;
						default:
							intPosX = oEventTarget.offsetLeft;							
							intPosY = oEventTarget.offsetTop + this.intHeadingSpace + this.intHeadingBorder;
							break;
					}
				}
				else{
					if(this.strDir == "left"){
						intPosX = parseInt(oParentNode.style.left, 10) - (this.intLevelWidth + (this.intBorderWidth * 2));
						intPosY = parseInt(oParentNode.style.top, 10) + oEventTarget.offsetTop;
					}
					else{
						intPosX = parseInt(oParentNode.style.left, 10) + this.intLevelWidth;
						intPosY = parseInt(oParentNode.style.top, 10) + oEventTarget.offsetTop;
					}	
				}					

				if(is.ie && is.bMac && is.intV <= 6 && intLevel == 0){
					intPosX -= this.intBorderWidth;
					intPosY -= this.intHeadingBorder;
				}
				if(is.safari && intLevel > 0){
					intPosY -= this.intBorderWidth;
				}
				getCSSObj(strLevelID).left = intPosX + ((intLevel == 0)? 0 : this.intBorderWidth) + "px";
				getCSSObj(strLevelID).top = intPosY + "px";
				if(is.ie5 && is.bMac){
					getCSSObj(strLevelID).display = "block";
				}
				getCSSObj(strLevelID).visibility = "visible";
			}
		}
	}
	//Centus software  If Some heading items are highlited and timeout occur return Last heading item CSS class to normal
	if(bTroughTimeout == true && LastHeadingItem != null)//Centus software
	{
		LastHeadingItem.className = "headingItemLink" //Centus software
		LastHeadingItem = null 						  //Centus software
	}
}
// ---------------------------
function MenuObjHideAllObj(bHideAllMenuObj){

	//set to normal class all remaining higligted level item
	if (LastLevelItemLinkOut != null) //Centus software
	{
		LastLevelItemLinkOut.className = "levelItemLink" //Centus software
		LastLevelItemLinkOut = null
	}
	for(var stackIter = myStack.Pop(); stackIter != null; stackIter = myStack.Pop())//Centus software 
	{
		stackIter.className = "levelItemLink"	//Centus software 
	}
	//set to normal class higligted heading item
	if(bHideAllMenuObj && LastHeadingItem != null)//Centus software
	{
		LastHeadingItem.className = "headingItemLink" //Centus software
		LastHeadingItem = null 						//Centus software
	}
	for(var i=0; i<arrAllMenuObj.length; i++){
		if(bHideAllMenuObj || arrAllMenuObj[i] != this){
			arrAllMenuObj[i].setClass(getElm(arrAllMenuObj[i].strHeadingID), false, true);
			arrAllMenuObj[i].showAndHide(arrAllMenuObj[i].intLevelsToShow, null);
		}
	}	
}
// ---------------------------
function MenuObjCheckOpenedLevels(){
	clearTimeout(this.oTimer);
	this.oTimer = setTimeout(this.strObjName + ".showAndHide(null, " + this.intLevelsToShow + ", null, true)", 8000);
}
// ---------------------------
function MenuObjSelectHeading(strClassName, strClassNameHover){
	var oHeading = getElm(this.strHeadingID);
	oHeading.setAttribute("isSelected", "true");
	oHeading.setAttribute("normalClassName", ((strClassName)? strClassName : "menuHeadingSelected"));
	oHeading.setAttribute("hoverClassName", ((strClassName)? strClassName : "menuHeadingSelected"));
	oHeading.className = ((strClassName)? strClassName : "menuHeadingSelected");
	
	//Centus software Set to selected class link object inside heading item
	oHeading.getElementsByTagName("a")[0].className = "selectedHeadingItemLink" //Centus software
}
// ---------------------------
