
function menu()
{
	this.items = new Object();
	this.mainItemHTML = '';
	this.subItemContainerHTMLStart = '';
	this.subItemContainerHTMLEnd = '';
	this.subItemHTML = '';
	this.menuName = '';
	this.itemCounts = new Object();
	this.mainMenuTopOffset = 0;
	this.subMenuTopOffset = 0;
	this.mainMenuLeftOffset = 0;
	this.subMenuLeftOffset = 0;
	
	this.addItem = function(parentId,id,text,link,level)
	{
		//alert(id);
		if (typeof(this.items[parentId])=='undefined')
		{
			this.items[parentId] = new Object();
		}
		this.items[parentId][id] = {parentId:parentId,id:id,text:text,link:link,level:level};
		if (typeof(this.itemCounts[parentId])=='undefined')
		{
			this.itemCounts[parentId] = 1;
		}
		else
		{
			this.itemCounts[parentId]['_count']++;
		}
	}
		
	this.renderMenu = function(parent)
	{
		if (typeof(parent)=='undefined')
		{
			parent = 0;
		}
		//for (var i=0;i<this.items[0]._count;i++)
		//{
		//
			for (var id in this.items[parent])
			{
				if (navigator.appName.indexOf('Explorer')<0)
				{
					if (parent==0)//main item.
					{
						document.write('<div id="'+this.menuName+'_item_'+id+'" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');" onmouseover="'+this.menuName+'.showMenu(this,\''+id+'\','+this.items[parent][id].level+');" onmouseout="'+this.menuName+'.hideMenu(\''+parent+'\',\''+id+'\','+this.items[parent][id].level+');" class="'+this.menuName+'_MainItem" style="'+this.mainItemStyle+'">'+this.items[parent][id].text+'</div>');
					}
					else
					{
						document.write('<div id="'+this.menuName+'_item_'+id+'" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');" onmouseover="'+this.menuName+'.showMenu(this,\''+id+'\','+this.items[parent][id].level+');" onmouseout="'+this.menuName+'.hideMenu(\''+parent+'\',\''+id+'\','+this.items[parent][id].level+');" class="'+this.menuName+'_SubItem" style="'+this.subItemStyle+'">'+this.items[parent][id].text+'</div>');
						//document.write(id);
					}
					if (this.itemCounts[id]>0)
					{
						document.write('<div class="'+this.menuName+'_SubMenu '+this.menuName+'_SubMenu_'+this.items[parent][id].level+'" style="position:absolute;top:10px;left:10px;visibility:hidden;" id="'+this.menuName+'_'+id+'">'+this.subItemContainerHTMLStart);
						this.renderMenu(id);
						document.write('</div>'+this.subItemContainerHTMLEnd);
					}
				}
				else
				{
					if (parent==0)//main item.
					{
						document.write('<div id="'+this.menuName+'_item_'+id+'" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');" onmouseover="'+this.menuName+'.showMenu(this,\''+id+'\','+this.items[parent][id].level+');" onmouseout="'+this.menuName+'.hideMenu(\''+parent+'\',\''+id+'\','+this.items[parent][id].level+');" class="'+this.menuName+'_MainItem" style="'+this.mainItemStyle+'"><a href="javascript:void(0);" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');">'+this.items[parent][id].text+'</a></div>');
					}
					else
					{
						document.write('<div id="'+this.menuName+'_item_'+id+'" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');" onmouseover="'+this.menuName+'.showMenu(this,\''+id+'\','+this.items[parent][id].level+');" onmouseout="'+this.menuName+'.hideMenu(\''+parent+'\',\''+id+'\','+this.items[parent][id].level+');" class="'+this.menuName+'_SubItem" style="'+this.subItemStyle+'"><a href="javascript:void(0);" onclick="'+this.menuName+'.clickMenu(\''+parent+'\',\''+id+'\');">'+this.items[parent][id].text+'</a></div>');
						//document.write(id);
					}
					if (this.itemCounts[id]>0)
					{
						document.write('<div class="'+this.menuName+'_SubMenu '+this.menuName+'_SubMenu_'+this.items[parent][id].level+'" style="position:absolute;top:10px;left:10px;visibility:hidden;" id="'+this.menuName+'_'+id+'">'+this.subItemContainerHTMLStart);
						this.renderMenu(id);
						document.write('</div>'+this.subItemContainerHTMLEnd);
					}
				}
			}
		//
		//}
	}
	
	this.clickMenu = function(parent,id)
	{
		if (this.items[parent][id].link!='')
		{
			if (typeof(this.clickFunction)!='undefined')
			{
				this.clickFunction(parent,id,this.items[parent][id].link);
			}
			else
			{
				window.location.href = this.items[parent][id].link;
			}
		}
	}
	
	this.hover = function(item)
	{
		if (item.className==this.menuName+'_MainItem' || item.className==this.menuName+'_MainItemHover')
		{
			item.setAttribute('style',this.mainItemHoverStyle);
			item.setAttribute('class',this.menuName+'_MainItemHover');
		}
		else
		{
			item.setAttribute('style',this.subItemHoverStyle);
			item.setAttribute('class',this.menuName+'_SubItemHover');
		}
	}
	
	this.sink = function(item)
	{
		if (item.className==this.menuName+'_MainItemHover' || item.className==this.menuName+'_MainItem')
		{
			item.setAttribute('style',this.mainItemStyle);
			item.setAttribute('class',this.menuName+'_MainItem');
		}
		else
		{
			item.setAttribute('style',this.subItemStyle);
			item.setAttribute('class',this.menuName+'_SubItem');
		}
	}
	
	this.lastMenu = new Array();
	this.inMenu = false;
	this.showMenu = function(parent,id,level)
	{
		//if (this.lastMenu[level]!='' && typeof(this.lastMenu[level])!='undefined')
		//{
			for (var i=level;(typeof(this.lastMenu[i])!='undefined');i++)//document.getElementById(this.menuName+'_item_'+this.lastMenu[i])
			{
				//if (this.lastMenu[i]!='')
				//{
				if (document.getElementById(this.menuName+'_'+this.lastMenu[i]))//menu
				{
					document.getElementById(this.menuName+'_'+this.lastMenu[i]).style.visibility = 'hidden';
				}
				this.sink(document.getElementById(this.menuName+'_item_'+this.lastMenu[i]));
				//}
				//this.lastMenu[i] = '';
			}
		//}
		
		this.hover(document.getElementById(this.menuName+'_item_'+id));
		this.inMenu = true;
		if (document.getElementById(this.menuName+'_'+id))
		{
			if (parent.className.indexOf(this.menuName+'_MainItem')>=0)
			{
				document.getElementById(this.menuName+'_'+id).style.left = (parent.offsetLeft+this.mainMenuLeftOffset)+'px';
				document.getElementById(this.menuName+'_'+id).style.top = (parent.offsetTop+this.mainMenuTopOffset)+'px';
			}
			else
			{
				document.getElementById(this.menuName+'_'+id).style.left = (parent.offsetWidth+parent.offsetLeft+this.subMenuLeftOffset)+'px';
				document.getElementById(this.menuName+'_'+id).style.top = (parent.offsetTop+this.subMenuTopOffset)+'px';
			}
			document.getElementById(this.menuName+'_'+id).style.visibility = 'visible';
		}
		this.lastMenu[level] = id;
	}
	
	this.hideTimeout = '';
	this.hideMenu = function(parent,id,level,check)
	{
		if (typeof(check)=='undefined')
		{
			this.inMenu = false;
			setTimeout(this.menuName+'.hideMenu("'+parent+'","'+id+'",'+level+',"1")',10);
		}
		else
		{
			//if (this.lastMenu[level]==id && this.lastMenu[(level-1)]!=parent && this.inMenu==false)// && level!=0)
			//{
				//this.sink(document.getElementById(this.menuName+'_item_'+id));
			//}
			this.hideTimout = setTimeout(this.menuName+'.hideSubMenus()',500);
		}
	}
	
	this.hideSubMenus = function()
	{
		if (this.inMenu==false)
		{
			for (var i=0;(this.lastMenu[i]!='' && typeof(this.lastMenu[i])!='undefined');i++)//document.getElementById(this.menuName+'_item_'+this.lastMenu[i])
			{
				if (document.getElementById(this.menuName+'_'+this.lastMenu[i]))//menu
				{
					document.getElementById(this.menuName+'_'+this.lastMenu[i]).style.visibility = 'hidden';
				}
				if (document.getElementById(this.menuName+'_item_'+this.lastMenu[i]))
				{
					this.sink(document.getElementById(this.menuName+'_item_'+this.lastMenu[i]));
				}
			}
		}
		else
		{
			clearTimeout(this.hideTimout);
		}
	}
}
