function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function OpenMenu(element,dock,offsetX,offsetY,parent) {
	var o = document.getElementById(element.id + '_Menu');
	var p = document.getElementById(parent);
	if(p!=null) p.child_menu = o;
	o.parent_menu = p;	
		
	if(o.style.visibility != 'visible') {	// let's position it first, then make it visible
	
		var pos = findPos(element);
		
		if(dock == 'right') {
			o.style.top = parseInt(pos[1]) + offsetY + "px";
			o.style.left = parseInt(pos[0])+ element.offsetWidth + offsetX + "px";				
		}
		else {
			o.style.top = parseInt(pos[1]) + element.offsetHeight + offsetY +"px";
			o.style.left = parseInt(pos[0])+ offsetX + "px";
		}
		o.style.visibility = 'visible';
	}
}

function within_bounds(menu,posx,posy) {
	if(menu==null) return false;
		
	var pos = findPos(menu);
	
	var offsetX = 0;
	var offsetY = 0;
	if(window.event) {
		offsetX = 2;
		offsetY = 2;
	} 
	
	//alert(menu.id + ': mx:' + pos[0] + ' my:' + pos[1] + ' left:' + posx  + ' top:' + posy + ' right:' + (pos[0]+menu.offsetWidth) + ' bottom:' + (pos[1]+menu.offsetHeight) );
	 
	if( posx - offsetX >=pos[0] && posx<pos[0]+menu.offsetWidth && posy - offsetY >=pos[1] && posy<pos[1]+menu.offsetHeight) return true;
	else return false;
}

function CloseMenu(menuName,e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	// posx and posy contain the mouse position relative to the document
	// Do something with this information

	var o = document.getElementById(menuName);
	if(within_bounds(o,posx,posy)) return;
	
	var c = o.child_menu;
	if(within_bounds(c,posx,posy)) return;
	else {
		//alert('closing:' + menuName);
				
		o.style.visibility = 'hidden';
		var p = o.parent_menu;
		if(p!=null) {
			//alert('closing parent:' + p.id);
			CloseMenu(p.id,e);
 		}
	}
}
		
function EnableHyperLink(element,url) {
	element.url = url;
}

function ActivateLink(element) {
	window.location.href = element.url;
}

