/*
modified crossbrowser drag handler
http://www.webtoolkit.info
*/

var DragHandler = {

	// private property.
	_oElem : null,

	// public method. Attach drag handler to an element.
	attach : function(oElem) {
		oElem.onmousedown = DragHandler._dragBegin;
		
		// callbacks
		oElem.dragBegin = new Function();
		oElem.drag = new Function();
		oElem.dragEnd = new Function();
		oElem.dragEnded = false;
		oElem.dragStarted = false;

		return oElem;
	},
	
	// private method. Begin drag process.
	_dragBegin : function(e) {
		var oElem = DragHandler._oElem = this;

		if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; }
		if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; }

		var x = parseInt(oElem.style.left);
		var y = parseInt(oElem.style.top);

		e = e ? e : window.event;
		oElem.mouseX = e.clientX;
		oElem.mouseY = e.clientY;

		oElem.dragBegin(oElem, x, y);

		// document.onmousemove = DragHandler._drag;
		// document.onmouseup = DragHandler._dragEnd;
		
		oElem.dragStarted = true;
		oElem.dragEnded = false;
		
		return false;
	},

	// private method. Drag (move) element.
	_drag : function(e) {
		var oElem = DragHandler._oElem;

		if (oElem) {

			var x = parseInt(oElem.style.left);
			var y = parseInt(oElem.style.top);
	
			e = e ? e : window.event;
			oElem.style.left = x + (e.clientX - oElem.mouseX) + 'px';
			oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';
	
			oElem.mouseX = e.clientX;
			oElem.mouseY = e.clientY;
	
			oElem.drag(oElem, x, y);
			
		}	

		return false;
	},

	// private method. Stop drag process.
	_dragEnd : function() {
		var oElem = DragHandler._oElem;
	
		if (oElem) {

			if (oElem.dragEnded == false) {
			
				var x = parseInt(oElem.style.left);
				var y = parseInt(oElem.style.top);
		
				oElem.dragEnd(oElem, x, y);
		
				// document.onmousemove = null;
				// document.onmouseup = null;
				
				DragHandler._oElem = null;
			
				oElem.dragStarted = false;
				oElem.dragEnded = true;
				
			}

		}		
	}

}

var dragItems = new Array();

function beginD (el, x, y) {
	var s = '#' + el.id + ' (begin drag)' + ' x:' + x + ', y:' + y;
}

function dragD (el, x, y) {
	var s = '#' + el.id + ' (dragging)' + ' x:' + x + ', y:' + y;
}

function endD (el, x, y) {
	var s = '#' + el.id + ' (end drag)' + ' x:' + x + ', y:' + y;
}

function dragInit() {
	for (var i=1; i<=panelCount; i++) {
		var itemName = "FP_" + i;
		var dragObj = document.getElementById(itemName);
		if (dragObj) {
			dragItems[i] = DragHandler.attach(dragObj);
			dragItems[i].dragBegin = beginD;
			dragItems[i].drag = dragD;
			dragItems[i].dragEnd = endD;
		}
	}
	document.onmousemove = function (evt) {
		tooltip.move(evt);
		DragHandler._drag(evt);
	}
	document.onmouseup = function () {
		DragHandler._dragEnd();
	}
}




