

/*******************************************************************
*
* File    : JSFX_DragDrop.js © JavaScript-FX.com
*
* Created : 2001/05/24
*
* Author  : Roy Whittle www.Roy.Whittle.com
*           
* Purpose : To create cross browser dragable layers.
*
* History
* Date         Version        Description
*
* 2001-05-24	1.0		Modified for javascript-fx
***********************************************************************/
JSFX.DragLayers = new Array();

JSFX.getDragLayer = function(text, x, y)
{
	var i;

	for(i=0 ; i<JSFX.DragLayers.length ; i++)
		if( !JSFX.DragLayers[i].isVisible() )
		{
			JSFX.DragLayers[i].setContent(text);
			JSFX.DragLayers[i].moveTo(x,y);
			return(JSFX.DragLayers[i]);
		}
	JSFX.DragLayers[i] = new JSFX.Layer(text,x,y);
	JSFX.addDragLayerHandlers(JSFX.DragLayers[i], i);
	return(JSFX.DragLayers[i]);
}
JSFX.addDragLayerHandlers = function(dragLayer, z)
{
	dragLayer.addEventHandler("onmousedown", JSFX.DL_mouseDown);
	dragLayer.addEventHandler("onmouseup",   JSFX.DL_mouseUp);
	dragLayer.addEventHandler("onmousemove", JSFX.DL_mouseMove);
	dragLayer.addEventHandler("ondblclick",  JSFX.DL_mouseDel);
	dragLayer.setzIndex(z);
}
/*** Create a dragable layer from an existing layer ***/
JSFX.makeDragLayer = function(divName, z)
{
	var dragLayer = new JSFX.Layer(JSFX.findLayer(divName));
	JSFX.addDragLayerHandlers(dragLayer);
}
JSFX.addDragLayer = function(text,x,y,w,h)
{
	var dragLayer = JSFX.getDragLayer(text, x, y);

	dragLayer.x = x;
	dragLayer.y = y;
	dragLayer.lx = 0;
	dragLayer.ly = 0;
	dragLayer.dragging = false;
	dragLayer.clip(0,0,w,h);
	dragLayer.show();
}
JSFX.DL_mouseDown = function(xl,ev)
{
	if(ev.button==1)
	{
		xl.dragging=true;
		xl.lx=ev.layerX;
		xl.ly=ev.layerY;
		xl.setOpacity(80);
		xl.setzIndex(100);
	}
	return false;
}
JSFX.DL_mouseUp = function(xl,ev)
{
	if(ev.button==1)
	{
		xl.dragging=false;
		xl.setOpacity(100);
		xl.setzIndex(1);
	}
	else
		JSFX.DL_mouseDel(xl, ev);
	return false;
}
JSFX.DL_mouseDel = function(xl,ev)
{
	xl.moveTo(-100,-100);
	xl.hide();

	return false;
}
JSFX.DL_mouseMove = function(xl,ev)
{
	if(xl.dragging)
		xl.moveTo(ev.clientX-xl.lx,ev.clientY-xl.ly);

	return false;
}


