// ************************************************************************************************
// *** Drag & Drop (slider component)
// ************************************************************************************************

var ddItems = new Array();
var dragObj;
var ddX, ddY;
var nn6 = document.getElementById && !document.all;

// Must be called in "document.onmousedown"
function dd_InitDrag(e) {
	var obj = nn6 ? e.target : event.srcElement;
	var i;
	// Check if the target element is registered for drag & drop
	for(i = 0; i < ddItems.length; i++) {
		if(ddItems[i].obj.id == obj.id) {
			dragObj = ddItems[i];
			dragObj.isDragging = true;
			iniWidth = parseInt(dragObj.resizeObj.style.width);
			iniHeight = parseInt(dragObj.resizeObj.height);
			ddX = nn6 ? e.clientX : event.clientX;
			ddY = nn6 ? e.clientY : event.clientY;
			document.onmousemove = dd_MouseMove;
			
			break;
		}
	}
}

// Called in "document.onmousemove"
function dd_MouseMove(e) {
	var dragDirection = new DragDirection();
	var newPos;
	
	if(dragObj != null && dragObj.isDragging) {
		if(document.all)
			document.selection.empty();
		
		// Horizontal
		if((dragDirection.horizontal & dragObj.dragDirection) != 0) {			
			newPos = iniWidth + ((nn6 ? e.clientX : event.clientX) - ddX);

			if(newPos > dragObj.min && newPos <= dragObj.max)
				dragObj.resizeObj.style.width = newPos + 'px';
		}
			
		// Vertical
		if((dragDirection.vertical & dragObj.dragDirection) != 0) {
			newPos = iniHeight + ((nn6 ? e.clientY : event.clientY) - ddY);
			
			if(newPos > dragObj.min && newPos <= dragObj.max)
				dragObj.resizeObj.style.height = newPos + 'px';
		}
		
		// Tell to drag item that it is being dragged
		dragObj.dragged();
	}
}

// Called in "document.onmouseup"
function dd_FinishDrag(e) {
	document.onmousemove = null;	
	
	// Alert the drag item that its dragging is finished
	if(dragObj != null) {
		dragObj.isDragging = false;
		dragObj.dragFinished();
	}
		
	dragObj = null;
}

document.onmousedown = dd_InitDrag;
document.onmouseup = dd_FinishDrag;