var bClicked = false;

function clMenu(){
	var szName, szObjectName;
	var szHref = "", szTarget = "";
	var bIsReadOnly = -1;
	var szParentObjectName = "";
	var nChildCount = 0;
	var arChildMenu = new Array(20);
	var nCount;
	var szMenucode;
		
	var szTextMouseOver
	var szTextMouseOut
	var szMouseOver
	var szMouseOut
	var szSecureArray = "a,b"

	this.Menu = Menu;
	this.ParentMenuName = ParentMenuName;
	this.SetConstants = SetConstants;
	this.GetName = GetName;
	this.AddMenu = AddMenu;
	this.DrawMenu = DrawMenu;
	this.ReadOnly = ReadOnly;
	this.Href = Href;
	this.Code = Code;
	this.GetApp = GetApp;
	
	function SetConstants(TextMouseOver, TextMouseOut, MouseOver, MouseOut, SecureArray){
		szTextMouseOver = TextMouseOver;
		szTextMouseOut = TextMouseOut;
		szMouseOver = MouseOver;
		szMouseOut = MouseOut;
		szSecureArray = SecureArray;
	}
	
	function GetName(){
		return szObjectName;
	}
	function Menu(szInName, szInObjectName){
		szName = szInName;
		szObjectName = szInObjectName;
	}
	
	function ReadOnly(bInIsReadOnly){
		bIsReadOnly = bInIsReadOnly;
	}
	
	function Href(szInHref, szInTarget){
		szHref = szInHref;
		szTarget = szInTarget;
	}
	
	function Code(szInMenucode){
		szMenucode = szInMenucode;
	}
	
	function GetApp(szInMenucode){
		var szApp = "";
		if (szInMenucode == szMenucode){
			return szHref;
		} else {
			for (nCount = 0; nCount < nChildCount; nCount++){
				szApp = arChildMenu[nCount].GetApp(szInMenucode);
				if (szApp != ""){
					return szApp;
				}
			}
			return "";
		}
	}
	
	function ParentMenuName(szInName){
		szParentObjectName = szInName;
	}
		
	function AddMenu(objMenuClass){
		objMenuClass.ParentMenuName(szObjectName);
		arChildMenu[nChildCount] = objMenuClass;
		nChildCount++;
	}
		
	function DrawMenu(){
		var lszMouseOver;
		var lszMouseOut;
		var lszTextMouseOver;
		var lszTextMouseOut;
		var szAHref;

		szCursor = "default"
		if (bIsReadOnly == -1){
			lszMouseOut = szMouseOut;
			lszMouseOver = szMouseOver;
			lszTextMouseOut = szTextMouseOut;
			lszTextMouseOver = szTextMouseOver;
		}else{
			lszMouseOut = szMouseOut;
			lszMouseOver = lszMouseOut;
			lszTextMouseOut = szTextMouseOut;
			lszTextMouseOver = szTextMouseOut;
		}
		document.write("<table style=\"color:" + lszTextMouseOut + ";\" bgcolor='" + lszMouseOut + "' width='100%' id=\"" + szObjectName + "\" border='0' cellpadding='0' cellspacing='0'>");
		document.write("<tr>");

		if (bIsReadOnly == -1){
			if (szHref != ""){
				var aSecureArray;
				aSecureArray = szSecureArray.split(",");
				szAHref = "http://";
				if (aSecureArray.length == 1){
					if (szHref.toUpperCase().search(szSecureArray.toUpperCase()) > 0){
						szAHref = "https://";
					}
				}
				if (aSecureArray.length > 1){
					var aCount = 0;
					for (aCount = 0; aCount < aSecureArray.length; aCount++){
						if (fnInString(szHref.toUpperCase(), aSecureArray[aCount].toUpperCase()) > 0 ) {
							szAHref = "https://";
						}
					}
				}
				szAHref = szAHref + szHref
					
				document.write("<td Class='MenuDD-TD' onclick=\"javascript:if (bClicked==false){document.location.href='" + szAHref + "';bClicked=true;}\" nowrap style=\"CURSOR:" + szCursor + ";\" onmouseover=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOver + "', '" + szTextMouseOver + "'); showMenu(sub" + szObjectName + "); \" onmouseout=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOut + "', '" + szTextMouseOut + "'); hideMenu(sub" + szObjectName + "); \">")
			} else {
				document.write("<td Class='MenuDD-TD' nowrap style=\"CURSOR:" + szCursor + ";\" onmouseover=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOver + "', '" + lszTextMouseOver + "'); showMenu(sub" + szObjectName + "); \" onmouseout=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOut + "', '" + lszTextMouseOut + "'); hideMenu(sub" + szObjectName + "); \">")
			}
		}else{
			document.write("<td Class='MenuDD-TD' nowrap style=\"CURSOR:" + szCursor + "\" onmouseover=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOver + "', '" + lszTextMouseOver + "'); showMenu(sub" + szObjectName + "); \" onmouseout=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOut + "', '" + lszTextMouseOut + "'); hideMenu(sub" + szObjectName + "); \">")
		}
		if (nChildCount > 0 && szParentObjectName != ""){
			document.write("&nbsp;<B>" + szName + "</B></td><td style=\"CURSOR:" + szCursor + ";\" nowrap align='right' onmouseover=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOver + "', '" + lszTextMouseOver + "'); showMenu(sub" + szObjectName + "); \" onmouseout=\"changeBGColor(document.all." + szObjectName + ", '" + lszMouseOut + "', '" + szTextMouseOut + "'); hideMenu(sub" + szObjectName + "); \">");
		}else{
				document.write("&nbsp;" + szName + "&nbsp;<br>");
		}
				
		document.write("<span id='sub" + szObjectName + "' style='visibility:hidden; z-index: 999; position:absolute;'>");
		document.write("<table border='0' cellpadding='0' cellspacing='0'>");
		document.write("<tr>");
		document.write("<td>");
		for (nCount = 0; nCount < nChildCount; nCount++){
			arChildMenu[nCount].DrawMenu();
		}
		document.write("</td>");
		document.write("</tr>");
		document.write("</table>");
		document.write("</span>");

		document.write("</td>");
		document.write("</tr>");
		document.write("</table>");
	}
}

function showMenu(objName){
	objName.style.visibility = "visible"
}

function hideMenu(objName){
	objName.style.visibility = "hidden"
}

function changeBGColor(objName, szBGColor, szTextColor){
	objName.style.backgroundColor = szBGColor;
	objName.style.color = szTextColor;
}

function fnInString(szInputString, szCompareString){
	var nInputLen, nComLen;
	var nCount;
	var nInputPos, nCompPos;
	
	nInputLen = szInputString.length;
	nComLen = szCompareString.length;
	
	nCount = 0;
	for (nCount == 0; nCount <= (nInputLen - nComLen); nCount++){
		nCompPos = 0;
		if 	(szInputString.charAt(nCount) == szCompareString.charAt(nCompPos)){
			nInputPos = nCount;
			while ((nInputPos <= nInputLen) && (nCompPos <= nComLen) && (szInputString.charAt(nInputPos) == szCompareString.charAt(nCompPos))){
				nInputPos++;
				nCompPos++;
				if (nCompPos == nComLen){
					return ++nCount;
				}
			}
		}
	}
	return -1;
}