
Array.prototype.remove = function(item){
	var cnt = false;
	for(var i = this.length - 1; i >= 0; i--){
		if(this[i] == item) {
			this[i] = null;
			delete this[i];
			this.splice(i,1);
			cnt++;
		}
	}
}

var BrowserEventObject = function(){
	this.listners = new Object();
	this.addEventListener = function(eventName, listner){
		if(!this.listners[eventName]) this.listners[eventName] = new Array();
		this.listners[eventName].push( listner );
	}
	this.removeEventListener = function(eventName, listner){
		if(this.listners[eventName]) this.listners[eventName].remove(listner);
	}
	this.fireEvent = function(eventName, srcElement){
		if(!this.listners[eventName]) return;
		for(var i = this.listners[eventName].length - 1; i >= 0; i--){
			var item = this.listners[eventName][i];
			item.onFire(eventName, srcElement);
		}
	}
}

var bEVENT = new BrowserEventObject();

document.onmousemove = function(e){
	if (!e) e = window.event;
	var srcElement = (typeof e.target != "undefined") ? e.target : e.srcElement;
	try{
		bEVENT.fireEvent('mousemove', srcElement);
	}catch(Error){}
}


var last;
var iterate;

function show(obj) {
	var id = obj.id;
	hid=id.replace("m","h");
	var elem = document.getElementById(id);
		if (elem.className=="tmenu") elem.className = 'tmenus';
		if (elem.className=="hmenu") elem.className = 'hmenus';
	var u=elem;
	var x=0;
	var y=0;

	while (u) {
		if (u.className!="hcontainer2") {
			x=x+u.offsetLeft;
			y=y+u.offsetTop;
		}
		u=u.offsetParent;
	}

	var hid=document.getElementById(hid);
	hid.handler = obj;

	hid.style.top=y+elem.offsetHeight;
	hid.style.left=x+30;
	hid.style.display="block";

	bEVENT.addEventListener('mousemove', hid);
	hid.onFire = function(eventName, srcElement){
		switch(eventName){
		case 'mousemove':
			isInArea(hid, srcElement);
			break;
		}
	}
}


function isInArea(targetElement, toElement){
	var inArea;
	try{
		while(toElement && toElement.nodeName && toElement.nodeName != 'HTML'){
			if(toElement == targetElement || toElement == targetElement.handler){
				inArea = true;
				break;
			}
			toElement = toElement.parentNode;
		}
	}catch(error){}
	if(!inArea) hide(targetElement);
}

function hide(obj){
	//window.status = obj.id;
	if(obj.handler.className == 'tmenus') obj.handler.className = 'tmenu';
	if(obj.handler.className == 'hmenus') obj.handler.className = 'hmenu';
	obj.style.display = 'none';
	bEVENT.removeEventListener('mousemove', obj);
}



