//_______________________________________________________________________________________
var _global_DontDrag            = false;
var _global_ElementToDrag       = null;
var _global_MousePos            = [0, 0];
var _global_InitialOffset       = [0, 0];
var _global_InitialDifference   = [0, 0];
var _global_onMouseMove         = null;
var _global_onMouseUp           = null;
    
//_______________________________________________________________________________________
// JS funtion that gets the mouse position Broser independent.
function setMousePos(e)
{
	if(e.pageX || e.pageY)
		_global_MousePos = [e.pageX ,  e.pageY];
	else 
		_global_MousePos = [e.clientX ,e.clientY];
}

//_______________________________________________________________________________________
// This function is fired every time the mouse is moved. It keeps the mouse pos uptodate
// and is only really used when dragging a file.
function mouseMove(e)
{
	// Get the event Browser independent.
	if(e == null || e == 'undefined')
		e = event;
	
	setMousePos(e);
	
	if (_global_onMouseMove != null)
	{
	    _global_onMouseMove();
	}
	
	_MouseMovedSinceStartedScrolling = true;
}

//_______________________________________________________________________________________
function mouseUp(e)
{
    _global_onMouseMove    = null;
    
    if (_global_onMouseUp != null)
        _global_onMouseUp();
        
    _global_DontDrag       = false;
}

//_______________________________________________________________________________________
// Works out the difference between the Object that to be draged top left corner
// and the mouse position.
function CalculateInitialOffset(elementToGetPosOfTemp)
{
    if (elementToGetPosOfTemp != null)
    {
	    var left = 0,
		    top = 0;
    	
	    // Calculate its offset 
	    while (elementToGetPosOfTemp.offsetParent){
		    left += elementToGetPosOfTemp.offsetLeft;
		    top  += elementToGetPosOfTemp.offsetTop;
		    elementToGetPosOfTemp = elementToGetPosOfTemp.offsetParent;
	    }
    	
	    left += elementToGetPosOfTemp.offsetLeft;
	    top  += elementToGetPosOfTemp.offsetTop;
    	
	    // ScrollOffset is must be removed as the content within the div has a differenct pos
	    // to the mouse pos on the screen.
	    _global_InitialOffset[0] = left;
	    _global_InitialOffset[1] = top; // + document.getElementById('SiteContainer').scrollTop;
	    
	    _global_InitialDifference[0] = _global_MousePos[0] - left;
	    _global_InitialDifference[1] = _global_MousePos[1] - top;
	}
}

//_______________________________________________________________________________________
function DontDrag()
{
    _global_DontDrag = true;
}

//_______________________________________________________________________________________
function DragObject()
{
    if (_global_ElementToDrag != null  && _global_DontDrag == false)
	{
	    var left = _global_MousePos[0] - _global_InitialDifference[0];
	    var top = _global_MousePos[1] - _global_InitialDifference[1];
	
		_global_ElementToDrag.style.left = left + 'px';
		_global_ElementToDrag.style.top  = top  + 'px';
	}
}

//_______________________________________________________________________________________
function StartDrag(objectToDrag)
{
    _global_ElementToDrag = objectToDrag;

    CalculateInitialOffset(objectToDrag);
    _global_onMouseMove = DragObject;
    _onMouseMove = DoneDragging();
}

function DoneDragging()
{
    _global_DontDrag = false;
    SetEditStatus();
}


//_______________________________________________________________________________________
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;