xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

bDragging = false;

function showDivPopup(e, 
					  divPopup_ClientID, 
					  iDefaultXPosition)
{
	showDivPopup(e, 
				 divPopup_ClientID,
				 iDefaultXPosition,
				 0,
				 false)
}

function showDivPopup(e, 
					  divPopup_ClientID, 
					  iDefaultXPosition, 
					  iYPositionOffset)
{
	showDivPopup(e, 
				 divPopup_ClientID, 
				 iDefaultXPosition,
				 iYPositionOffset,
				 false)
}

function showDivPopup(e, 
					  divPopup_ClientID, 
					  iDefaultXPosition, 
					  iYPositionOffset,
					  bDefaultYPosition)
{
	if (e != null || !bDefaultYPosition)
		captureMousePosition(e)

	divPopup = document.getElementById(divPopup_ClientID);
	divPopup.style.position = 'absolute';
	if (iDefaultXPosition > 0)
		divPopup.style.left = iDefaultXPosition + 'px';
	else
		divPopup.style.left = xMousePos + 'px';

	if (bDefaultYPosition)
		divPopup.style.top = iYPositionOffset + 'px';
	else
		divPopup.style.top = (yMousePos + iYPositionOffset) + 'px';

	divPopup.style.zIndex = 1;
	divPopup.style.display = '';
}

function hideDivPopup(divPopup_ClientID)
{
	divPopup = document.getElementById(divPopup_ClientID);
	divPopup.style.display = 'none';
}

function captureMousePosition(e)
{
    var scrollX, scrollY;
    if (document.all)
    {
    if (!document.documentElement.scrollLeft)
        scrollX = document.body.scrollLeft;
    else
        scrollX = document.documentElement.scrollLeft;
       
    if (!document.documentElement.scrollTop)
        scrollY = document.body.scrollTop;
    else
        scrollY = document.documentElement.scrollTop;
    }   
    else
    {
        scrollX = window.pageXOffset;
        scrollY = window.pageYOffset;
    }

	if (document.layers) {
		// When the page scrolls in Netscape, the event's mouse position
		// reflects the absolute position on the screen. innerHight/Width
		// is the position from the top/left of the screen that the user is
		// looking at. pageX/YOffset is the amount that the user has
		// scrolled into the page. So the values will be in relation to
		// each other as the total offsets into the page, no matter if
		// the user has scrolled or not.
		xMousePos = e.pageX;
		yMousePos = e.pageY;
		xMousePosMax = window.innerWidth+window.pageXOffset;
		yMousePosMax = window.innerHeight+window.pageYOffset;
	} else if (document.all) {
		// When the page scrolls in IE, the event's mouse position
		// reflects the position from the top/left of the screen the
		// user is looking at. scrollLeft/Top is the amount the user
		// has scrolled into the page. clientWidth/Height is the height/
		// width of the current page the user is looking at. So, to be
		// consistent with Netscape (above), add the scroll offsets to
		// both so we end up with an absolute value on the page, no
		// matter if the user has scrolled or not.

		xMousePos = window.event.clientX+scrollX;
		yMousePos = window.event.clientY+scrollY;

		xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
		yMousePosMax = document.body.clientHeight+document.body.scrollTop;
	} else if (document.getElementById) {
		// Netscape 6 behaves the same as Netscape 4 in this regard
		xMousePos = e.pageX;
		yMousePos = e.pageY;

		xMousePosMax = window.innerWidth+window.pageXOffset;
		yMousePosMax = window.innerHeight+window.pageYOffset;
	}
}

var xDragStartPosition = 0;
var yDragStartPosition = 0;

var xDivInitial = 0;
var yDivInitial = 0;


function DragPopup(e)
{
	if (bDragging)
	{
		captureMousePosition(e);
        		
		var xDisplacement = xMousePos - xDragStartPosition;
		var yDisplacement = yMousePos - yDragStartPosition;
		
		var xCurrent = parseInt(divPopup.style.left.replace('px', ''));
		var yCurrent = parseInt(divPopup.style.top.replace('px', ''));
		
		divPopup.style.left = (xDivInitial + xDisplacement) + 'px';
		divPopup.style.top = (yDivInitial + yDisplacement) + 'px';
	}
}

function ActivateDragging(e)
{
	bDragging = true;
	xDivInitial = parseInt(divPopup.style.left.replace('px', ''));
	yDivInitial = parseInt(divPopup.style.top.replace('px', ''));
	
	captureMousePosition(e);
	xDragStartPosition = xMousePos;
	yDragStartPosition = yMousePos;
	
	document.onmousemove = DragPopup;
}

function DeactivateDragging()
{
	bDragging = false;
	document.onmousemove = '';
}