MenuObj.prototype.createHeading = MenuObjCreateHeading;
MenuObj.prototype.setClass = MenuObjSetClass;
MenuObj.prototype.setStyle = MenuObjSetStyle;
MenuObj.prototype.setItemWidthToHeadingWidth = MenuObjSetItemWidthToHeadingWidth;
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;
var arrAllMenuObj = new Array();
// -----------
function MenuObjCreateHeading(strText, intHeadingBorder, intHeadingSpace, strLink, 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);
	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.strDir == "down")? this.intLevelHeight : this.intLevelWidth;
	var oTextNode = document.createTextNode(strText);
	if(strLink){
		var oLink = document.createElement("a");
		oLink.setAttribute("href", strLink);
		oLink.className = "headingItemLink";
		oLink.appendChild(oTextNode);
		oElmToAppendTo = oLink;		
		oHeading.appendChild(oLink);
	}
	else{
		var oSpan = document.createElement("span");
		oSpan.className = "headingItemLink";
		oSpan.appendChild(oTextNode);
		oHeading.appendChild(oSpan);
	}	
	this.oElmToAppendTo.appendChild(oHeading);
}
// -----------
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";	
	this.oElmToAppendTo.appendChild(oLevelStart);
	if(this.bSetItemWidthToHeadingWidth && intLevel == 1){
		if(oLevelStart.offsetWidth < this.intHeadingWidth){
			oLevelStart.style.width = this.intHeadingWidth + ((is.bWin && is.ie && is.intV < 6)? (this.intBorderWidth * 2) : 0) + "px";
		}
	}
}
// -----------
function MenuObjCreateLevelItem(bLevelItemToOpen, strText, strLink, strImagePath, bSelectedNode, arrChildNodes){
	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.className = "levelItem";
	var oTextNode = document.createTextNode(strText);		
	if(strLink){
		var oLink = document.createElement("a");
		oLink.setAttribute("href", strLink);
		oLink.className = (bSelectedNode)? "levelItemLinkSelected" : "levelItemLink";
		oLink.appendChild(oTextNode);
		oElmToAppendTo = oLink;
		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";
			oLink.appendChild(oArrow);
		}
		oLevelItem.appendChild(oLink);
	}
	else{
		var oSpan = document.createElement("span");
		oSpan.className = (bSelectedNode)? "levelItemLinkSelected" : "levelItemLink";
		oSpan.appendChild(oTextNode);
		oLevelItem.appendChild(oSpan);
	}		
	if(strLink){
		oLevelItem.onclick = function (oNSEvent){
			if(oNSEvent){
				if(String(oNSEvent.target.nodeName).search(/a/i) == -1 && (oNSEvent.target.nodeType == 3 && String(oNSEvent.target.parentNode.nodeName).search(/a/i) == -1)){					
					location.href = strLink;
				}
			}	
		}
	}	
	this.arrLevelItems.push([intLevel, intLevelItemToOpen]);
	this.intNoOfLevels = (intLevel > this.intNoOfLevels)? intLevel : this.intNoOfLevels;
	if(arrChildNodes){
		var oChildNode;
		for(var i=0; i<arrChildNodes.length; i++){
        	oChildNode = document.createElement("a");
			oChildNode.className = "menuThirdLevelItem";			
			oChildNode.setAttribute("href", ("main.aspx?id=" + arrChildNodes[i][1]));
			if(MASTERID == arrChildNodes[i][1]){
				oChildNode.className = "menuThirdLevelItemSelected";
			}			
			oChildNode.innerHTML = arrChildNodes[i][0];			
			oLevelItem.appendChild(oChildNode);
        }
	}
	oLevelContainer.appendChild(oLevelItem);
	if(this.bSetItemWidthToHeadingWidth && intLevel == 1){
		if(oLevelItem.offsetWidth < this.intHeadingWidth){
			if(oArrow){
				oArrow.className = "levelItemAdaptedArrow";
			}	
			oLevelItem.style.width = this.intHeadingWidth + ((is.bWin && is.ie && is.intV < 6)? (this.intBorderWidth * 2) : 0) + "px";
		}
	}
}
// -----------
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");
	MenuObj.prototype.oSelectedMenuHeading = getElm(this.strHeadingID);
	this.showAndHide(oHeading, 0, 1);	
}
// -----------
