// Temporary variables to hold mouse x-y pos.
var iMousePosX = 0;
var iMousePosY = 0;

// used for calculating the difference between cursor and object pos
var iDragObjTopDiff;
var iDragObjLeftDiff;

// the drag object
var DragDropObj = null;

function mouseUp(e) {
	if (DragDropObj != null){
		StopDrag();
	}
}

// scrollTop / scrollLeft vars (browser safe)
function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return {x:scrOfX, y:scrOfY};
}

// Mouse movement event handler
function getMouseXYPos(e) {
	if (!e) var e = window.event;
	//drag drop
	scollSize = getScrollXY();
	moveXY(e.clientX + scollSize.x, e.clientY + scollSize.y);
	return true;
}

// Process mouse movement.
function moveXY(posX, posY) {
	iMousePosX = posX;
	iMousePosY = posY;
	
	// Move object, if dragging.
	if (DragDropObj != null) {
		DisSel('disable');
	
		NewWidth = iMousePosX - iDragObjLeftDiff;
		NewHeight = iMousePosY - iDragObjTopDiff;
		
		screensize = browserScreensize();
		dim = findDim(DragDropObj);
		offset = getScrollXY();
		bodydim = findDim(document.getElementById('bodycontent'));
		
		if (NewWidth < 10 + offset.x){
			NewWidth = 10 + offset.x;
		}
		//if (NewWidth > screensize.w - 10 - dim.w + offset.x){
		//	NewWidth = screensize.w - 10 - dim.w + offset.x;
		//}
		
		if (NewWidth > bodydim.w - 10 - dim.w + offset.x){
			NewWidth = bodydim.w - 10 - dim.w + offset.x;
		}
		
		//if (NewHeight < 10 + offset.y){
		//	NewHeight = 10 + offset.y;
		//}
		
		if (NewHeight < 10){
			NewHeight = 10;
		}
		
		if (NewHeight > bodydim.h - 10 - dim.h){
			NewHeight = bodydim.h - 10 - dim.h;
		}
		
		/*if (NewHeight > screensize.h - 10 - dim.h + offset.y){
			NewHeight = screensize.h + 10 - dim.h + offset.y;
		}*/
		
		DragDropObj.style.left = NewWidth + "px";
		DragDropObj.style.top = NewHeight + "px";
	}
}

function DragMe(sourceObject) {
	window.document.onmouseup = mouseUp;
	
	// Remember original object position.
	iOrigObjTop = parseInt(sourceObject.style.top);
	iOrigObjLeft = parseInt(sourceObject.style.left);
	
	iDragObjTopDiff = iMousePosY - iOrigObjTop;
	iDragObjLeftDiff = iMousePosX - iOrigObjLeft;
	
	iOrigObjLeft  = findPos(sourceObject);
	iDragObjLeftDiff = iMousePosX - iOrigObjLeft.x;
	
	DragDropObj = sourceObject;
}

function StopDrag() {
	if (DragDropObj != null){
		DragDropObj = null;
		DisSel('enable');
	}
}

// disables selection of text/images when resizing.
var disabled = false;
function DisSel(action){
	elementid = 'bodycontent'; // entire body
	dragid = 'overlay'; // drag element
	
	if (disabled == true && action == 'enable'){
		if (BrowserDetect.browser == 'Explorer'){
			document.onselectstart = function (){ return true; }
		}
		else {
			document.getElementById(elementid).style.MozUserSelect = '';
			document.getElementById(dragid).style.MozUserSelect = '';
		}
		disabled = false;
	}
	else if (disabled == false && action == 'disable'){
		if (BrowserDetect.browser == 'Explorer'){
			document.onselectstart = function (){ return false; }
		}
		else {
			document.getElementById(elementid).style.MozUserSelect = 'none';
			document.getElementById(dragid).style.MozUserSelect = 'none';
		}
		disabled = true;
	}
}

// Attach new event handlers.
window.document.onmousemove = getMouseXYPos;

