var oToolBar 	= null;
var bInit	= false;
var iEventX	= 0;
var iEventY 	= 0;

function ToolBar(element)
{
	this.HTMLElement = element;
	this.Items	 = new Array();

	this.AddItem	    = ToolBar_AddItem;
	this.AttachElements = ToolBar_AttachElements;
	this.DoClick	    = ToolBar_DoClick;
	this.GetItemByElement = ToolBar_GetItemByElement;
	this.SetHoverClass  = ToolBar_SetHoverClass;

	return this;
}
		
function ToolBarItem(caption, pagename)
{
	this.Caption	= caption;
	this.PageName 	= pagename;
	this.HTMLElement = null;
	this.SubItems	= new Array();

	this.AddItem	= ToolBarItem_AddItem;

	return this;
}

function ToolBar_AddItem(item)
{
	this.Items[this.Items.length] = item;

	return item;
}

function ToolBar_AttachElements()
{
	var nodes = this.HTMLElement.getElementsByTagName("TD");
	var index = 0;

	for(var i = 0; i < nodes.length; i++)
	{
		var node = nodes[i];
		var idx = new String(node.id).indexOf("idToolBarItem");

		node.onclick		= ToolBarItem_Click;
		node.onmousemove	= ToolBarItem_MouseOver;
		node.onmouseout		= ToolBarItem_MouseOut;

		if(idx != -1 && this.Items.length > index)
		{
			this.Items[index++].HTMLElement = node;
		}
	}
}

function ToolBar_DoClick(item)
{
	var url = "";

	if(item.PageName != null)
	{
		if(new String(item.PageName).indexOf("?") == -1)
			url = "index.php?pagename=" + item.PageName;
		else
			url = "index.php" + item.PageName;
	}

	window.location.replace(url);
}

function ToolBar_GetItemByElement(element)
{
	var item = null;
			
	if(new String(element.className).indexOf("ToolBarSubItem") == -1)
	{
		while(element != null)
		{
			var idx = new String(element.id).indexOf("idToolBarItem");
	
			if(idx != -1)
				break;
					
			element = element.parentNode;
		}
	}

	if(element != null)
	{
		for(var i = 0; i < this.Items.length; i++)
		{
			if(this.Items[i].HTMLElement == element)
				return this.Items[i];

			for(var k = 0; k < this.Items[i].SubItems.length; k++)
			{
				if(this.Items[i].SubItems[k].HTMLElement == element)
					return this.Items[i].SubItems[k];
			}
		}
	}
}

function MenuHolder_MouseOut(e)
{
	var trg = (e != null ? e.relatedTarget : window.event.toElement);
	var sid = (trg != null ? new String(trg.className) : "");

	while(trg != null)
	{
		if(trg == idMenuHolder)
			return;

		trg = trg.parentNode;
	}

	idMenuHolder.style.display = "none";
	oToolBar.SetHoverClass(null);
}

function ToolBar_SetHoverClass(element)
{
	var nodes = this.HTMLElement.getElementsByTagName("TD");

	for(var i = 0; i < nodes.length; i++)
	{
		if(new String(nodes[i].className).indexOf("ToolBarItem") != -1)
		{
			var idx = new String(nodes[i].className).indexOf("ToolBarItemHover");

			if(nodes[i] != element && idx != -1)
				nodes[i].className = "ToolBarItem";
			else if(nodes[i] == element && idx == -1)
				nodes[i].className = "ToolBarItem ToolBarItemHover";
		}
	}
}

function ToolBarItem_AddItem(item)
{
	this.SubItems[this.SubItems.length] = item;

	return item;
}

function ToolBarItem_Click(e)
{
	var item = oToolBar.GetItemByElement((e != null ? e.currentTarget : window.event.srcElement));

	oToolBar.DoClick(item);
}

		function ToolBarItem_MouseOver(e)
		{
			if(e == null || true)
			{
				var x = (e == null ? window.event.clientX : e.clientX);
				var y = (e == null ? window.event.clientY : e.clientY);

				if(!bInit)
				{
					iEventX = x;
					iEventY = y;

					return;
				}
				else if( ( (iEventX - x) > -2 && (iEventX - x) < 2 ) || y == 0)
					return;

				iEventX = 0;
				iEventY = 0;
			}

			var src  = GetToolBarItem((e != null ? e.currentTarget : window.event.srcElement));
			var item = oToolBar.GetItemByElement(src);
			
			if(src != null)
			{
				var pos = GetClientPos(src);

				oToolBar.SetHoverClass(src);

				if(item.SubItems.length > 0)
				{
					var arr = new Array();

					for(var i = 0; i < item.SubItems.length; i++)
					{
						var si = item.SubItems[i];
		
						arr[arr.length] = '<div class="ToolBarSubItem" id="idToolBarSubItem' + i +
							'">' + si.Caption + '</div>';

						if((i+1) < item.SubItems.length)
							arr[arr.length] = '<div class="ToolBarSeperator"><table height="1" cellpadding=0 cellspacing=0><tr><td height="1"><img src="images/pixtrans.gif" height="1" width="1"></td></tr></table></div>';

						
					}

					idMenuHolder.innerHTML = arr.join("\r\n");
					idMenuHolder.style.display = "";
					idMenuHolder.style.left = pos[0];
					idMenuHolder.style.top  = pos[1]+src.offsetHeight;

					var nodes = idMenuHolder.getElementsByTagName('DIV');
					var index = 0;

					for(var i = 0; i < nodes.length; i++)
					{
						if(nodes[i].className == "ToolBarSubItem")
						{
							nodes[i].onclick     = ToolBarSubItem_Click;
							nodes[i].onmouseover = ToolBarSubItem_MouseOver;
							nodes[i].onmouseout  = ToolBarSubItem_MouseOut;

							item.SubItems[index++].HTMLElement = nodes[i];
						}
					}
				}
				else
				{
					idMenuHolder.style.display = "none";
				}
			}

		}


		function ToolBarItem_MouseOut(e)
		{
			var src = GetToolBarItem((e != null ? e.currentTarget : window.event.srcElement));

			if(src != null)
			{
				var trg = (e != null ? e.relatedTarget : window.event.toElement);
				var sid = (trg != null ? new String(trg.className) : "");

				if(trg == null || sid.indexOf('ToolBar') == -1)
				{
					oToolBar.SetHoverClass(null);			
					idMenuHolder.style.display = "none";
				}
			}
		}

		function ToolBarSubItem_Click(e)
		{
			var src  = (e != null ? e.currentTarget : window.event.srcElement);
			var item = oToolBar.GetItemByElement(src);

			oToolBar.DoClick(item);
		}

		function ToolBarSubItem_MouseOver(e)
		{
			var src = (e != null ? e.currentTarget : window.event.srcElement);

			src.className = "ToolBarSubItem ToolBarSubItemHover";

			if(e != null)
			{
				src.style.width = parseInt(src.offsetParent.style.width) - 12;
			}
		}

		function ToolBarSubItem_MouseOut(e)
		{
			var src = (e != null ? e.currentTarget : window.event.srcElement);

			src.className = "ToolBarSubItem";
		}


function GetClientPos(element)
{
	var x = 0;
	var y = 0;

	while(element != null)
	{
		if(element.offsetLeft !== undefined && element.offsetTop !== undefined)
		{
			x += element.offsetLeft;
			y += element.offsetTop;
		}

		element = element.offsetParent;
	}

	return new Array(x, y);
}

function GetToolBarItem(src)
{
	while(src != null)
	{
		var idx = new String(src.id).indexOf("idToolBarItem");

		if(idx != -1)
		{
			return src;
		}
				
		src = src.parentElement;
	}

	return null;
}
