/****************************************************************
* Copyright S�astien BOURRET - http://bdportal.chez.tiscali.fr *
* L'ensemble de ce script est libre d'utilisation et de         *
* modification sous reserve de conserver cet en-t�e.           *
****************************************************************/

var g_DnD = new DnD();

function DnD(){this.classname="DnD";}

DnD.prototype.start = function(obj,e)
{
	if(!g_DnD.isactive)
	{
		var pos = JSTool.getEventPos(e);
		var cpos = JSTool.getEventClientPos(e);
		g_DnD.objlnk = obj;
		g_DnD.isactive = true;
		g_DnD.x = pos[0];
		g_DnD.y = pos[1]; 
		g_DnD.cx = cpos[0];
		g_DnD.cy = cpos[1]; 
		g_DnD.saveEvent();
		if(obj.dragStart) obj.dragStart(g_DnD);
	}
	return false;
}

DnD.prototype.saveEvent = function()
{
	this.saveMove = document.onmousemove;
	this.saveUp = document.onmouseup;
	document.onmousemove=this.move;
	document.onmouseup=this.stop;
}

DnD.prototype.restoreEvent = function()
{
	document.onmousemove=this.saveMove;
	document.onmouseup=this.saveUp;
}

DnD.prototype.move = function(e)
{
	if(g_DnD.isactive)
	{
		var x,y;
		var pos = JSTool.getEventPos(e);
		var cpos = JSTool.getEventClientPos(e);
		x  = pos[0];
		y  = pos[1];
		g_DnD.dx = x - g_DnD.x;
		g_DnD.dy = y - g_DnD.y;
		g_DnD.x = x;
		g_DnD.y = y;
		g_DnD.cx = cpos[0];
		g_DnD.cy = cpos[1]; 
		if(g_DnD.objlnk.dragMove)
			g_DnD.objlnk.dragMove(g_DnD);
	}
    return false;
}

DnD.prototype.stop = function()
{
	if(g_DnD.isactive)
	{
		if(g_DnD.objlnk.dragEnd) g_DnD.objlnk.dragEnd(g_DnD);
		g_DnD.isactive = false;
		g_DnD.objlnk = null;
		g_DnD.restoreEvent();
	}
	return false;
}
