function customMenu(optionColl,name,handlerFunc,minWidth,xPos,yPos,subColl,aResults,sMouseOverFunc,asMouseOverData)
{
	this.optionNames=optionColl||new Array("Exit");
	this.menuHeight="auto";
	this.menuWidth="auto";
	this.openMenu=menuOpen;
	this.closeMenu=menuClose;
	this.minWidth=minWidth||0;
	this.optionCount=0;
	this.name=name||"defaultMenu";
	this.handler=handlerFunc||"handlerFunc";
	this.mouseOver=sMouseOverFunc||"";
	this.xPos=xPos;
	this.yPos=yPos;
	this.openSubmenu=0;
	this.results=aResults;
	this.subColl=subColl;
	this.mouseOverData=asMouseOverData||0;
	this.escapedTitles=false;
	this.hoverover=false
	spaceCheck=new RegExp("( )","gi");
	for (a in this.optionNames)
	{
		this.optionCount++;
		this.optionNames[a]=this.optionNames[a].replace(spaceCheck,"&nbsp;");
	}
	gMenus[gMenuLimit]=this;
	gMenuLimit++;
}

function menuOpen(parentObj,tempXPos,tempYPos,subMenu,e)
{
	if (!sBVer==undefined)
	{
		sBV="MSIE 6.0";
	}
	else
	{
		sBV=sBVer;
	}
	canvasNode=document.getElementById("customMenuCanvas");
	menuNode=document.getElementById(this.name);
	if (canvasNode && canvasNode!=undefined && !subMenu)
	{
		canvasNode.parentNode.removeChild(canvasNode);
	}
	if (menuNode && menuNode!=undefined)
	{
		menuNode.parentNode.removeChild(menuNode);
	}
	if (!subMenu)
	{
		newCanvas=document.createElement("IMG");
		closeCanvas=document.body.appendChild(newCanvas);
		closeCanvas.src="lib/transparent1x1.gif";
		closeCanvas.style.position="absolute";
		closeCanvas.style.left="0px";
		closeCanvas.style.top="0px";
		closeCanvas.style.height=document.body.clientHeight;
		closeCanvas.style.width=document.body.clientWidth;
		closeCanvas.style.zIndex=1005;
		closeCanvas.onclick=this.closeMenu;
		closeCanvas.setAttribute("id","customMenuCanvas");
		closeCanvas.setAttribute("handlingFunc",this.handler);
		closeCanvas.setAttribute("rootMenu",this.name);
	}
	newBack=document.createElement("DIV");
	menuBack=parentObj.appendChild(newBack);
	menuBack.className="menuArea";
	menuBack.style.position="absolute";
	menuBack.style.overflow="visible";
	if (sBV.substr(0,8)=="Netscape")
	{
		menuBack.style.left=tempXPos||(this.xPos||e.pageX);
		menuBack.style.top=tempYPos||(this.yPos||e.pageY);
	}
	else
	{
		menuBack.style.left=tempXPos||(this.xPos||event.offsetX);
		menuBack.style.top=tempYPos||(this.yPos||event.offsetY);
	}
	menuBack.style.marginLeft=0;
	menuBack.style.textIndent=0;
	menuBack.style.zIndex=1010;
	menuBack.style.width="600px";
	//menuBack.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
	menuBack.setAttribute("id",this.name);
	menuBack.setAttribute("name",this.name);
	var maxWidth=0,b=0,vertPos=0,optionString="";
	for (a=0;a<this.optionCount;a++)
	{
		optionString=optionString + "<DIV id='" + this.name + "menuopt" + a + "'"
		if (this.optionNames[a]!="*divider*")
		{
			var result;
			if (this.results)
			{
				result="'" + this.results[a] + "'";
			}
			else
			{
				result=a;
			}
			/*if (this.subColl=0)

			{
				iSubColl=0;
			}
			else
			{
				iSubColl=this.subColl[a];
			}*/iSubColl=this.subColl[a];
			optionString=optionString + "CLASS=\"menuOption\" onClick=\"menuClose('" + this.name + "','" + this.name + "',false,false,"+result+")\" onmouseover=\"this.style.cursor='pointer,hand';optionSelect('" + this.name + "menuopt" + a + "'," + iSubColl + "," + this.name + ",'" + this.mouseOver + "','"+this.mouseOverData[a]+"')\"";
			if (this.hoverover)
			{
				optionString+=" onmouseout=\"StartClose('" + this.name + "')\"";
			}
			if (this.mouseOverData!=0)
			{
				optionString=optionString + " deselectopt1=\"" + this.mouseOver + "\" deselectopt2=\"" + this.mouseOverData[a] + "\" "
			}
			else
			{
				optionString=optionString + " deselectopt1=\"\" deselectopt2=\"\" "
			}
			if (sBV.substr(0,8)=="Netscape")
			{
				optionString=optionString + "STYLE=\"height:40px;width=600px\" ";
			}
		}
		optionString=optionString + "></DIV>";
	}
	menuBack.innerHTML=optionString;
	for (a=0;a<this.optionCount;a++)
	{
		menuOption=document.getElementById(this.name + "menuopt" + a);		
		menuOption.style.position="absolute";
		menuOption.style.left=0;
		menuOption.style.top=vertPos;
		menuOption.setAttribute("id",this.name + "menuopt"+a);
		menuOption.setAttribute("parentMenu",this.name)
		if (this.optionNames[a]=="*divider*")
		{
			menuOption.className="dividerOption";
			if (sBV.substr(0,8)=="Netscape")
			{
				nonNumStrip=/[^0-9]/g;
				vertPos+=Number(menuOption.style.height.replace(nonNumStrip,""));
			}
			else
			{
				vertPos+=Number(menuOption.offsetHeight);
			}
			newDivider=document.createElement("IMG");
			optionDivider=menuOption.appendChild(newDivider);
			optionDivider.src="images/menuLine.gif";
			optionDivider.style.position="absolute";
			optionDivider.style.left=2;
			optionDivider.style.top=4;
			optionDivider.style.height=2;
			b++;
			optionDivider.setAttribute("id",this.name + "optdivi"+b);			
		}
		else
		{	
			if (sBV.substr(0,8)=="Netscape")
			{
				nonNumStrip=/[^0-9]/g;
				vertPos+=Number(menuOption.style.height.replace(nonNumStrip,""));
			}
			else
			{
				vertPos+=Number(menuOption.offsetHeight);
			}
			menuOption.onmouseleave=optionDeselect;
			newText=document.createElement("P");
			optionText=menuOption.appendChild(newText);
			optionText.className="menuText";		
			//menuOption.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=60)"
			//optionText.style.filter="";
			optionText.setAttribute("id",this.name+"opttext"+a);
			optionText.innerHTML="<SPAN>"+(this.escapedTitles?unescape(this.optionNames[a]):this.optionNames[a])+"</SPAN><SPAN STYLE=\"position:absolute\">"+(this.subColl[a]?">":"")+"</SPAN>";
			if (sBV.substr(0,8)=="Netscape")
			{
				nonNumStrip=/[^0-9]/g;
				if (optionText.offsetWidth>maxWidth)
				{
					maxWidth=optionText.offsetWidth;
				}
			}
			else
			{
				if (optionText.clientWidth>maxWidth)
				{
					maxWidth=optionText.clientWidth;
				}
			}
		}
	}
	if (sBV.substr(0,8)=="Netscape")
	{
		menuBack.style.height=vertPos;
		menuBack.style.width=maxWidth+10;
	}
	else
	{
		menuBack.style.height=vertPos;
		menuBack.style.width=maxWidth+10;
	}
	for (a=0;a<this.optionCount;a++)
	{
		eOpt=document.getElementById(this.name + "menuopt" + a)
		eOpt.style.width=maxWidth+40;
		eOpt.childNodes(0).childNodes(1).style.left=maxWidth+10;
	}
	for (a=1;a<=b;a++)
	{
		document.getElementById(this.name + "optdivi" + a).style.width=maxWidth+36;
	}
	minLeft=closeCanvas.offsetWidth-menuBack.offsetWidth;
	if (menuBack.offsetLeft>minLeft)
	{
		menuBack.style.left=minLeft;
	}
	minTop=closeCanvas.offsetHeight-menuBack.offsetHeight;
	if (menuBack.offsetTop>minTop)
	{
		menuBack.style.top=minTop;
	}
	menuBack.setAttribute("handlingFunc",this.handler);	
}

function menuClose(closingObjStr,divObjStr,noFullClose,noCommand,commandVal)
{
	if (!document.getElementById("customMenuCanvas"))
	{
		return (false);
	}
	if (closingObjStr)
	{
		menuObj=eval(closingObjStr);
	}
	if (divObjStr)
	{
		divObj=eval("document.getElementById('"+divObjStr+"')");
	}
	if (this.id=="customMenuCanvas")
	{
		menuHandlerInput=-1;
		divObj=eval("document.getElementById('" + this.getAttribute('rootMenu') + "')");
		menuObj=eval(this.getAttribute("rootMenu"));
	}
	else if (!commandVal)
	{
		menuHandlerInput=-1;
	}
	else
	{
		menuHandlerInput=commandVal;
	}
	if (divObjStr)
	{
		funcName=divObj.getAttribute("handlingFunc");
		menuId=divObj.getAttribute("name");
	}
	if (!noFullClose)
	{
		canvasDiv=document.getElementById("customMenuCanvas");
		menuObj=eval(canvasDiv.getAttribute("rootMenu"));
		document.getElementById(canvasDiv.rootMenu).parentNode.removeChild(document.getElementById(canvasDiv.rootMenu));
		canvasDiv.parentNode.removeChild(canvasDiv);		
	}
	else
	{
		divObj.parentNode.removeChild(divObj);
	}
	subMenuReset(menuObj);
	if (!noCommand && divObjStr)
	{
		eval(funcName + "(menuHandlerInput,menuId,2);");
	}
}

function subMenuReset(menuObj)
{
	if (menuObj.openSubmenu)
	{
		subMenuReset(eval(menuObj.openSubmenu));
	}
	menuObj.openSubmenu=0;
}

function optionSelect(id,submenu,menu,sMouseOverFunc,iResult)
{
	gCloseMenu=false;
	if (!sBVer)
	{
		sBV="MSIE 6.0";
	}
	else
	{
		sBV=sBVer;
	}
	if (sBV.substr(0,8)!="Netscape")
	{
		event.cancelBubble=true;
	}
	currentOpt=document.getElementById(id);
	currentOpt.className="selectedOption";
	if (menu.openSubmenu)
	{
		menuClose(menu.openSubmenu,menu.openSubmenu,true,true);
		if (sBV.substr(0,8)=="Netscape")
		{
			this.captureEvents(Event.MouseOver);
		}
		menu.openSubmenu=0;
	}
	if (submenu)
	{
		if (sBV.substr(0,8)=="Netscape")
		{
			this.releaseEvents(Event.MouseOver);
		}
		submenu.openMenu(currentOpt,currentOpt.offsetWidth,-1,true);
		menu.openSubmenu=submenu.name;
	}
	if (iResult!=0 && sMouseOverFunc!="")
	{
		eval(sMouseOverFunc + "('" + iResult + "',true)");
	}
}

function optionDeselect()
{
	if (!sBVer)
	{
		sBV="MSIE 6.0";
	}
	else
	{
		sBV=sBVer;
	}
	if (sBV.substr(0,8)!="Netscape")
	{
		event.cancelBubble=true;
	}	
	currentOpt=this;
	currentOpt.className="menuOption";
	if ((currentOpt.getAttribute("deselectopt1")!="") && (currentOpt.getAttribute("deselectopt2")!=""))
	eval(currentOpt.getAttribute("deselectopt1") + "('" + currentOpt.getAttribute("deselectopt2") + "',false)");
}

function menuBar(barId,menuTitles,menuIds,daddy,iXOffset,iYOffset)
{
	this.menuTitles=menuTitles||new Array();
	this.menuIds=menuIds||new Array();
	this.barId=barId||"newBar";
	this.parent=daddy;
	this.count=0
	for (x in menuTitles)
	{
		this.count++;
	}
	newBar=document.createElement("DIV");
	menuBar=this.parent.appendChild(newBar);
	menuBar.className="menuBar";
	var innerStr=""
	for (a=0;a<this.count;a++)
	{
		innerStr=innerStr + "<DIV STYLE='z-index:100' ID='" + this.menuTitles[a] + "' onClick='" + this.menuIds[a] + ".openMenu(this"
		if (iXOffset && iYOffset)
		{
			innerStr+=","+iXOffset+","+iYOffset;
		}
		innerStr+=")'></DIV>"
	}
	menuBar.innerHTML=innerStr;
	xAlign=0;
	for (y=0;y<this.count;y++)
	{
		y?xAlign+=15:xAlign+=5;
		menuEle=document.getElementById(this.menuTitles[y]);
		menuEle.style.position="absolute";
		menuEle.style.left=xAlign;
		menuEle.style.top=3;
		menuEle.innerText=this.menuTitles[y];
		xAlign+=menuEle.offsetWidth;
	}
}

function editLabel(parentObj,handler,xPos,yPos,parName,initVal)
{
	if (document.getElementById("customMenuCanvas")!=undefined)
	{
		document.getElementById("customMenuCanvas").removeNode(true);
		document.getElementById("customMenuBack").removeNode(true);
	}
	newCanvas=document.createElement("DIV");
	closeCanvas=document.body.appendChild(newCanvas);
	closeCanvas.style.position="absolute";
	closeCanvas.style.left="0px"
	closeCanvas.style.top="0px"
	closeCanvas.style.height="100%";
	closeCanvas.style.width="100%";
	closeCanvas.setAttribute("id","customMenuCanvas")
	closeCanvas.setAttribute("handlingFunc",handler);
	newBox=document.createElement("DIV");
	menuBox=parentObj.appendChild(newBox);
	menuBox.style.position="relative";
	menuBox.style.overflow="visible";
	menuBox.style.left=xPos; //xPos||event.offsetX;
	menuBox.style.top=0; //yPos||event.offsetY;
	menuBox.setAttribute("id","customMenuBack");
	menuBox.setAttribute("name",parName);
	menuBox.setAttribute("handlingFunc",handler);
	newBox=document.createElement("FORM");
	menuForm=menuBox.appendChild(newBox);
	menuForm.style.position="absolute";
	menuForm.style.overflow="visible";
	menuForm.setAttribute("id","renameForm");
	menuForm.setAttribute("handlingFunc",handler);
	newText=document.createElement("INPUT");
	labelText=menuForm.appendChild(newText);
	labelText.type="TEXT";
	labelText.style.position="absolute";
	labelText.style.overflow="visible";
	labelText.style.zIndex=1;
	labelText.className="renameBox";
	labelText.value=initVal||"New Profile";
	labelText.onclick=function () {return false;}
	labelText.tabIndex=1;
	labelText.setAttribute("handlingFunc",handler);
	labelText.setAttribute("id","labelText");
	labelText.focus();
	labelText.select();
	menuForm.onsubmit=function () {labelText.blur;return false;}
	labelText.onblur=endEdit;
	labelText.onkeydown=returnCheck;
}

function endEdit(textVal)
{
	menuHandlerInput=this.value||textVal;
	funcName=document.getElementById("customMenuBack").getAttribute("handlingFunc");
	menuId=document.getElementById("customMenuBack").getAttribute("name");
	document.getElementById("customMenuCanvas").removeNode(true);
	document.getElementById("customMenuBack").removeNode(true);
	eval(funcName + "(menuHandlerInput,menuId);")
}

function returnCheck()
{
	if (window.event.keyCode==13)
	{
		endEdit(this.value);
	}
}

function GetBodyTop(eElement)
{
	iTop=0;
	while (eElement!=document.body)
	{
		iTop+=eElement.offsetTop;
		alert(iTop+";"+eElement.innerHTML)
		eElement=eElement.parentElement;
		
	}
	return (iTop);
}

function GetBodyLeft(eElement)
{
	iLeft=0;
	while (eElement!=document.body)
	{
		iLeft+=eElement.offsetLeft;
		eElement=eElement.parentElement;
	}
	return (iLeft);	
}

function StartClose(sMenuObj)
{
	gCloseMenu=sMenuObj;
	window.setTimeout('EndClose()',500);
}

function EndClose()
{
	if (gCloseMenu)
	{
		eval(gCloseMenu+".closeMenu()");
		gCloseMenu=false;
	}
}
var gMenus=new Array(),gMenuLimit=0,gCloseMenu=false;
