var lastMenuId = 0;
var timer;
var mSheets = new Array();
var currZ = 100;
var mReady = false;
var mTopPos = 30;
var globj;
function setClass1_a(obj, cl1, cl2){
  if (!cl1) cl1 = "";
  if (!cl2) cl2 = ""; 
  obj.className = cl1;
  if (obj.previousSibling != null)
		if(cl2!="")
		obj.previousSibling.className = cl2;
}
function MenuLink(textVal, linkVal, subVal){
	this.text = textVal;
	this.action = linkVal;
	this.submenu = subVal;
}
function menuHideAll(){
	
	for (var c in mSheets) mSheets[c].hide();
	setClass1_a(this.globj, 'dynamic_menu_inact', 'dynamic_menu_inact');	
}

function menuHideTimerSet(){
	setClass1_a(this.globj, 'dynamic_menu_inact', 'dynamic_menu_inact');	
	timer = window.setTimeout(menuHideAll, 100);
}

function menuHideTimerReset(){
	setClass1(this.globj, 'dynamic_menu_act1', 'dynamic_menu_act2');
	if (timer) window.clearTimeout(timer);
}

function menuAddLink(textVal, linkVal){
	this.links[this.links.length] = new MenuLink(textVal, linkVal, null);
}

function menuAddSubmenu(textVal, linkVal){
	this.links[this.links.length] = new MenuLink(textVal, linkVal, new MenuSheet(this));
}

function menuShow(leftVal, topVal){
	this.block.style.left = leftVal + 'px';
	this.block.style.top = topVal + 'px';  
	this.block.style.display = "block";
}

function menuHide(){
	this.hideCh();
	this.block.style.display = "none";
}

function menuFlip(leftVal, topVal){
	var disp = this.block.style.display;
	if (disp == "none") this.show(leftVal, topVal);
	else this.hide();
}

function menuHideCh(){
	for (var c in this.links){
		curLink = this.links[c];
		if (curLink.submenu) curLink.submenu.hide();
	}
}
function SetMenuRoot(obj)
{
	this.globj=obj;
}
function menuCreate(path){
	var res;
	if(this.id==0)
	{
	 res = "<div class=\"menu-sh\" onmouseout=\"menuHideTimerSet()\" onmouseover=\"menuHideTimerReset()\"><table cellpadding=\"0\" cellspacing=\"0\" class=\"tab-menu-sh\">";
	}
	else
	{
	res= "<div class=\"menu-sh\" onmouseout=\"menuHideTimerSet()\" onmouseover=\"menuHideTimerReset()\"><table cellpadding=\"0\" cellspacing=\"0\" class=\"tab-menu-sh\">";
	}
	var curLink;
	var newPath;
	if (path == null) path = "mSheets[" + this.id + "]";
	for (var c in this.links){
		curLink = this.links[c];
		res += "<tr><td class=\"blk-menu-sh";
		//if (curLink.submenu) res += " blk-menu-arr";
		res += "\" onmouseover=\"setClass(this, 'blk-menu-sh-act";
		//if (curLink.submenu) res += " blk-menu-arr-act";
		res += "'); ";
		res += path + ".hideCh()";
		if (curLink.submenu){
			newPath = path + ".links[" + c + "].submenu";
			res += "; " + newPath + ".show(getLeftPos(this) + this.offsetWidth, getTopPos(this) - 2)";
			curLink.submenu.create(newPath);
		}
		res += "\" onmouseout=\"setClass(this, 'blk-menu-sh";
		//if (curLink.submenu) res += " blk-menu-arr";
		res += "')\" onclick=\"gotoURL('"+curLink.action+"')\" nowrap=\"nowrap\">" + curLink.text + "</td></tr>";
	}
	res += "</table></div>";
	this.block.innerHTML = res;
	this.block.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=90)";
}

function MenuSheet(parentObj, pid){
	this.links = new Array();
	this.addLink = menuAddLink;
	this.addSubmenu = menuAddSubmenu;
	this.create = menuCreate;
	this.show = menuShow;
	this.hide = menuHide;
	this.flip = menuFlip;
	this.hideCh = menuHideCh;
	if (pid==null)
	{
		this.id = ( (pid==null)?(lastMenuId):(pid) );
		lastMenuId++;
	}
	else
	{
		this.id = pid;
		if (pid >= lastMenuId)
			lastMenuId = pid+1;
	}
	this.parent = parentObj; 
	this.block = document.createElement("DIV");
	this.block.className = "blk-menu";
	this.block.style.position = "absolute";
	this.block.style.display = "none";
	this.block.style.zIndex = currZ;
	currZ++;
	this.block.id = "ms" + this.id; 
	document.body.appendChild(this.block);
}

function showMenu(objVal, numVal){
	if (mReady)
	{
		
		menuHideAll();
		//setClass(this.globj, 'dynamic_menu_act1', 'dynamic_menu_act2');
		setClass1(this.globj, 'dynamic_menu_act1', 'dynamic_menu_act2');
		//setClass1_a(objVal, 'dynamic_menu_act', 'dynamic_menu_inact');
		//objVal.className = "dynamic_menu_inact";
		
		if (mSheets[numVal])
		{			
					
			mSheets[numVal].show(getLeftPos(objVal)-1, getTopPos(objVal) + 14);			
						
		}
		menuHideTimerReset();
	}	
}
function hideMenu(objVal, numVal){
	if (mReady){
		menuHideTimerSet();
		//setClass1(this.globj, 'dynamic_menu_act1', 'dynamic_menu_act2');
		//setClass1(this.globj,  'dynamic_menu_act1', 'dynamic_menu_act2');
		//setClass1_a(objVal, 'dynamic_menu_act', 'dynamic_menu_inact');
		//setClass1_a(objVal, 'dynamic_menu_act', 'dynamic_menu_inact');
		//setClass1_a(objVal, 'separator dynamic_menu_inact', 'separator dynamic_menu_inact');
				
		//objVal.className = "separator dynamic_menu_inact";
	}
}

