function ShowMenu(bMode, sMenuId){
	
	if(bMode == 1){

		CntrlMenu('Open', sMenuId);
		
	} else {
		CntrlMenu('Close', sMenuId);
		
	}
	
}

function CntrlEvent(act, obj, event, funcname, capture){
	switch(act){
		case 'add' :
			if(obj.addEventListener) obj.addEventListener(event, funcname, capture);
			else if(obj.attachEvent) obj.attachEvent("on" + event, funcname);
			break;
		case 'remove' :
			if(obj.removeEventListener) obj.removeEventListener(event, funcname, capture);
			else if(obj.detachEvent) obj.detachEvent("on" + event, funcname);
			break;
	}
}

var MenuTimer = {};
function CntrlMenu(act, idname){

	var ActOpenT = 50;
	var ActCloseT = 75;

	switch(act){
		case 'Open' :
			if(MenuTimer[idname]){ clearTimeout(MenuTimer[idname]); }
			MenuTimer[idname] = setTimeout("document.getElementById('"+idname+"').style.visibility = 'visible';", ActOpenT);
			break;
		case 'Close' :
			if(MenuTimer[idname]){ clearTimeout(MenuTimer[idname]); }
			CntrlEvent('add', 'document.documentElement', 'click', '_CloseAll', true);
			MenuTimer[idname] = setTimeout("CntrlMenu('_Close', '"+idname+"')", ActCloseT);
			break;
		case '_Close' :
			document.getElementById(idname).style.visibility = 'hidden';
			break;
		case '_CloseAll' :
			for(i in MenuTimer){
				clearTimeout(MenuTimer[i]);
				document.getElementById(i).style.visibility = 'hidden';
			}
			CntrlEvent('remove', 'document.documentElement', 'click', '_CloseAll', true);
			break;
	}
}
