﻿/**
*
*  Crossbrowser Drag Handler
*  http://www.webtoolkit.info/
*  Modified: 2009/07/23; JTankersley, Enable clickable area (handle) and remove non-functional code
*
**/

var DragHandler = {

	// private property.
	_oBody : null,
	_Enabled : 0, 


	// public method. Attach drag handler to an element.
	attachBody : function(oBody) {
		oBody.onmousedown = DragHandler._dragBegin;
	},


	// public method. Attach drag handler to an element.
	attachHandle : function(oHandle) {
		oHandle.onmousedown = DragHandler._dragEnable;
	},


	// private method. Begin drag process.
	_dragEnable : function(e) {
        DragHandler._Enabled = 1;
	},
	

	// private method. Begin drag process.
	_dragBegin : function(e) {
		var oBody = DragHandler._oBody = this;
		if (isNaN(parseInt(oBody.style.left))) { oBody.style.left = '0px'; }
		if (isNaN(parseInt(oBody.style.top))) { oBody.style.top = '0px'; }
		e = e ? e : window.event;
		oBody.mouseX = e.clientX;
		oBody.mouseY = e.clientY;
		document.onmousemove = DragHandler._drag;
		document.onmouseup = DragHandler._dragEnd;
	},


	// private method. Drag (move) element.
	_drag : function(e) {
		var oBody = DragHandler._oBody;
		var x = parseInt(oBody.style.left);
		var y = parseInt(oBody.style.top);
		if (DragHandler._Enabled == 1) {
		    e = e ? e : window.event;
		    oBody.style.left = x + (e.clientX - oBody.mouseX) + 'px';
		    oBody.style.top = y + (e.clientY - oBody.mouseY) + 'px';
		    oBody.mouseX = e.clientX;
		    oBody.mouseY = e.clientY;
		}    
	},


	// private method. Stop drag process.
	_dragEnd : function() {
        DragHandler._Enabled = 0;
		document.onmousemove = null;
		document.onmouseup = null;
		DragHandler._oBody = null;
	}

};







