function Dropmenu(id)
{
	this.menu 			= document.getElementById(id);
	this.active 		= 0;
	this.active_e;
	this.active_holder;

	var links = this.menu.getElementsByTagName('A');
	var length = links.length;
	var obj = this;

	for(var i = 0; i < length; i++)
	{
		if(links[i].parentNode.tagName != 'SPAN')
		{
			links[i].onmouseover = function () {obj.mouseOver(this);}
		}
	}
}

Dropmenu.prototype.getParentLink = function(e)
{
	var parent = e.parentNode;

	if(parent.childNodes[0].nodeType == 1)			// If IE
	{
		return parent.childNodes[0];
	}
	else if(parent.childNodes[1].nodeType == 1)		// If other
	{
		return parent.childNodes[1];
	}
	else
	{
		return false;
	}
}

Dropmenu.prototype.getPosition = function(e)
{
	var curleft = curtop = 0;

	do
	{
		curleft += e.offsetLeft;
		curtop += e.offsetTop;
	}
	while (e = e.offsetParent);

	return [curleft,curtop];
}

Dropmenu.prototype.getBounds = function(e)
{
	var position;
	position = this.getPosition(e);
	
	e.pos 			= Array();
	e.pos.left 		= position[0];
	e.pos.top 		= position[1];
	e.pos.right		= e.pos.left + e.offsetWidth;
	e.pos.bottom 	= e.pos.top + e.offsetHeight;
	
	return e;
}

Dropmenu.prototype.mouseOver = function(e)
{
	if(this.active == e) return false;
	else if(e.parentNode.className == 'holder')
	{
		this.collapseAll(true);
		return;
	}

	var holder = e.parentNode.getElementsByTagName('SPAN')[0];

	this.collapseAll();
	
	if(holder.style.display != 'block')
	{
		var display_value 		= 'block';
		e.className = 'active';
		this.active = e;
	}
	else
	{
		var display_value 		= 'none';
		e.className = '';
	}

	
	holder.style.display = display_value;

	this.active_e 			= this.getBounds(e);
	this.active_holder 		= this.getBounds(holder);
	var obj = this;

	document.onmousemove = function()
	{
		var temp_x = 0;
		var temp_y = 0;
		
		var e = arguments[0] || event;
	
		if (e.pageX || e.pageY)
		{
			temp_x = e.pageX;
			temp_y = e.pageY;
		}
		else if (e.clientX || e.clientY)
		{
			temp_x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			temp_y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}

		if(	(temp_x >= obj.active_holder.pos.left && temp_x <= obj.active_holder.pos.right && temp_y >= obj.active_holder.pos.top && temp_y <= obj.active_holder.pos.bottom) ||
			(temp_x >= obj.active_e.pos.left && temp_x <= obj.active_e.pos.right && temp_y >= obj.active_e.pos.top && temp_y <= obj.active_e.pos.bottom))
			return true;
	  	else
	  	{
	  		obj.collapseAll();
	  	}
	};
}

Dropmenu.prototype.collapseAll = function(hide_all)
{
	var child_links = this.menu.getElementsByTagName('SPAN');
	var length = child_links.length;

	if(hide_all)
	{
		for(var i = 0; i < length; i++)
		{
			child_links[i].style.display = 'none';
			var parent_link = this.getParentLink(child_links[i]);
			parent_link.className = '';
		}
	}
	else
	{
		for(var i = 0; i < length; i++)
		{
			if(this.getParentLink(child_links[i]) != false)
			{
				var parent_link = this.getParentLink(child_links[i]);
				parent_link.className = '';
			}

			child_links[i].style.display = 'none';
		}
	}
	
	this.active = 0;
}