var lastHelpPanel;

function RevealHelpPanel(dest,src)
{
	var popup = document.getElementById(dest,0);
	if (!src) src = window.event.srcElement;
	var parent = src;
	var Left = -9, Top = -9;
	
	if (parent.offsetParent)	// IE and Opera
	{
		while (parent && parent.tagName != 'BODY')
		{
			Left += parent.offsetLeft - parent.scrollLeft;
			Top += parent.offsetTop - parent.scrollTop;
			parent = parent.offsetParent;
		}
	}
	else
	{
		Left = event.clientX;
		Top = event.clientY;
	}

	if (document.body.insertAdjacentElement)
	{
		//document.body.insertBefore(popup);
		document.body.insertAdjacentElement("beforeEnd", popup);
		popup.style.left = Left + 'px';
		popup.style.top = Top + 'px';
	}
	popup.style.display = '';
	if (popup.focus)
		popup.focus();
	
	if (popup.attachEvent)
	{
		if (!popup.onmousedown)
			popup.attachEvent("onmousedown", HelpPanelMouseDown);
		if (!popup.onmousemove)
			popup.attachEvent("onmousemove", HelpPanelMouseMove);
		if (!popup.onmouseup)
			popup.attachEvent("onmouseup", HelpPanelMouseUp);
		if (!popup.onkeyup)
			popup.attachEvent("onkeyup", HelpPanelKeyUp);
	}
	else
	{
		if (!popup.onmousedown)
			popup.onmousedown = HelpPanelMouseDown;
		if (!popup.onmousemove)
			popup.onmousemove = HelpPanelMouseMove;
		if (!popup.onmouseup)
			popup.onmouseup = HelpPanelMouseUp;
		if (!popup.onkeyup)
			popup.onmouseup = HelpPanelKeyUp;
	}	

	lastHelpPanel = popup;			
	return false;
}

function HideHelpPanel()
{
	var popup = lastHelpPanel;
	if (!popup)
		popup = event.srcElement;
	while (popup && popup.className != "HelpPanel")
		popup = popup.parentElement;
	if (!popup) popup = this;
	if (popup.className != "HelpPanel") return false;
	if (popup.moving && popup.releaseCapture)
	{
		popup.moving = false;
		popup.releaseCapture();
	}
	popup.style.display = "none";
	lastHelpPanel = null;
}

function GetCurrentHelpPanel(asThis)
{
	var popup = lastHelpPanel;
	if (!popup)
		popup = event.srcElement;
	while (popup && popup.className != "HelpPanel")
		popup = popup.parentElement;
	if (!popup) popup = asThis;
	if (popup.className != "HelpPanel") 
		return false;
	return popup;
}

function HelpPanelMouseDown()
{
	var popup = GetCurrentHelpPanel(this);
	if (!popup) return;
	popup.mouseOffsetLeft = event.clientX;
	popup.mouseOffsetTop = event.clientY;
	popup.moving = true;
	if (popup.setCapture)
		popup.setCapture(false);
	popup.style.cursor = 'move';
	event.cancelBubble = true;
	return false;
}

function HelpPanelMouseMove()
{
	var popup = GetCurrentHelpPanel(this);
	if (!popup) return;
	if (!popup.moving) return;
	
	popup.style.left = parseInt( popup.style.left ) + (event.clientX - popup.mouseOffsetLeft) + "px";
	popup.style.top = parseInt( popup.style.top ) + (event.clientY - popup.mouseOffsetTop) + "px";
	popup.mouseOffsetLeft = event.clientX;
	popup.mouseOffsetTop = event.clientY;
	
	event.cancelBubble = true;
	return false;
}

function HelpPanelMouseUp()
{
	var popup = GetCurrentHelpPanel(this);
	if (!popup) return;
	if (!popup.moving) return;
	
	if (popup.releaseCapture)
		popup.releaseCapture();
	popup.moving = false;
	popup.style.cursor = '';

	event.cancelBubble = true;
	return false;
}

function HelpPanelKeyUp()
{
	if (event.keyCode == 27)
		HideHelpPanel();
	else
		status = event.keyCode;
}
