
var draggerDraggingElem = null;
var draggerLastX = -1;
var draggerLastY = -1;
var _draggerTable = null;

var _draggerInitialized = false;

function InitDragger() 
{
    if (! _draggerInitialized)
    {
        //alert("Entered InitDragger()");

        var formElem = document.getElementsByTagName("form")[0];
        if (! formElem) alert("No formElem");
        
        var tempElem;
        tempElem = document.createElement("temp");
        tempElem.innerHTML = "<table id=\"_dragger\" class=\"DraggerOverlay\" border=\"0\" style=\"DISPLAY: none; VISIBILITY: hidden; POSITION: absolute;\"><tr><td>&nbsp;</td></tr></table>";
        formElem.insertBefore(tempElem.firstChild, formElem.firstChild);
        //alert("Added dragger table");

    }
    
} // InitDragger()


function draggerMouseDown(elemId, event) {
	
    if(document.addEventListener)
    {
	    if(event.button != 0) return;
	}
	else
    {
	    if(event.button != 1) return;
	}
	
	InitDragger();
	
    draggerDraggingElem = document.getElementById(elemId);
	
	if (draggerDraggingElem == null) {
		alert("Can't find elem w/ id=|" + elemId + "|");
		return;
	}
	
	if (document.addEventListener) {
		document.addEventListener("mousemove", draggerMouseMove, true);
		document.addEventListener("mouseup", draggerMouseUp, true);
		//document.addEventListener("contextmenu", blockMenu, true);
	} else {
		document.onmousemove = draggerMouseMove;
		document.onmouseup = draggerMouseUp;
		document.onselectstart=new Function ("return false");
		//draggerDraggingElem.oncontextmenu = blockMenu;
	}

	if(_draggerTable == null)
		_draggerTable = document.getElementById("_dragger");
		
	_draggerTable.style.width = draggerDraggingElem.offsetWidth;
	_draggerTable.style.height = draggerDraggingElem.offsetHeight;
	_draggerTable.style.left = draggerDraggingElem.offsetLeft;
	_draggerTable.style.top = draggerDraggingElem.offsetTop;

	_draggerTable.style.visibility="visible";
	_draggerTable.style.display="block";
	
	if (event && event.stopPropagation)
		event.stopPropagation();
}

/*
function blockMenu(event)
{
	if (event && event.stopPropagation)
		event.stopPropagation();

    return false;
}
*/

function draggerMouseMove(event) {
	if (draggerDraggingElem != null) {
		
		var currentX, currentY;
		if (event) {
			currentX = event.clientX;
			currentY = event.clientY;
		} else {
			currentX = window.event.clientX;
			currentY = window.event.clientY;
		}

		if ((draggerLastX == -1) || (draggerLastY == -1)) 
		{
			draggerLastX = currentX;
			draggerLastY = currentY;
			draggerDraggingElem.style.left = draggerDraggingElem.offsetLeft + "px";
			draggerDraggingElem.style.top = draggerDraggingElem.offsetTop + "px";
			draggerDraggingElem.style.position = "absolute";
			return;
		}
		
		var deltaX = currentX - draggerLastX;
		var deltaY = currentY - draggerLastY;
		
		draggerLastX = currentX;
		draggerLastY = currentY;
		
		var l = draggerDraggingElem.offsetLeft + deltaX;
		var t = draggerDraggingElem.offsetTop + deltaY;
		draggerDraggingElem.style.left = l;
		draggerDraggingElem.style.top = t;
		
		_draggerTable.style.left = l;
		_draggerTable.style.top = t;
		
		UpdateShim(draggerDraggingElem);

		if (event && event.stopPropagation)
			event.stopPropagation();
	}
}

/*
function draggerIncrOffset(offset, incr) {
	offset = new Number(offset.replace(/px/,""));
	offset += incr;
	return offset;
}
*/

function draggerMouseUp(event) {

	if (document.removeEventListener) {
		document.removeEventListener("mouseup", draggerMouseUp, true);
		document.removeEventListener("mousemove", draggerMouseMove, true);
	} else {
		document.onmousemove = "";
		document.onmouseup = "";
		document.onselectstart = "";
	}
	
	draggerDraggingElem = null;
	draggerLastX = -1;
	draggerLastY = -1;
	_draggerTable.style.visibility="hidden";
	_draggerTable.style.display="none";

	if (event && event.stopPropagation)
		event.stopPropagation();
}
