function addEvent(obj,evtname,fun)
{
	if (obj.addEventListener){
		obj.addEventListener(evtname, fun, false);
	} else if (obj.attachEvent){
		obj.attachEvent('on' + evtname, fun);
	}else
	{
		obj['on' + evtname] = func;
	}
}

if(typeof(HTMLElement)!="undefined") // for firefox
{  
	HTMLElement.prototype.contains=function(obj)
	{  
		while(obj!=null && typeof(obj.tagName)!="undefind")
		{
	　　　　if(obj==this)  return true;
	　　　　obj=obj.parentNode;
	　　}
		return false;
	};
}

function getAbsPos(obj)
{
	var pos = new Object();
	pos.x = pos.y = 0;
	pos.w = obj.offsetWidth;
	pos.h = obj.offsetHeight;
	while(obj != (document.body ? document.body : document.documentElement))
	{
		pos['y'] += obj.offsetTop;
		pos['x'] += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return pos;
}

var __div_menu_list = new Object();
function divMenuShow(root,menuid)
{
	divMenuClose();
	var self = this;
	this.pos = getAbsPos(root);

	var menu = document.getElementById(menuid);
	__div_menu_list[menuid] = menu;
	menu.style.position = 'absolute';
	menu.style.top = this.pos.y + this.pos.h + 'px';
	menu.style.left = this.pos.x + 'px';
	menu.style.display = '';

	this.timer = window.setTimeout(function(){menu.style.display='none';window.clearTimeout(self.timer);},3000);

	menu.onmouseout = function(){
		var evt = window.event ? window.event : arguments[0];
		var isin = menu.contains(evt.toElement ? evt.toElement : evt.relatedTarget);
		if(!isin){menu.style.display = 'none';}
	}

	menu.onmouseover = function(){
		window.clearTimeout(self.timer);
	}
}

function divMenuClose()
{
	for(var i in __div_menu_list)
	{
		__div_menu_list[i].style.display = 'none';
	}
}

addEvent(document.body ? document.body : document.documentElement,'click',divMenuClose);
