var formDrag = {

	obj : null,

	init : function(o)
	{
		o.onmousedown	= formDrag.start;

		o.hmode			= true ;
		o.vmode			= true ;

		o.root = o ;

		if (isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
		if (isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";

		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();

	},

	start : function(e)
	{
		var o = formDrag.obj = this;
		e = formDrag.fixE(e);
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);
		o.root.onDragStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

  		document.onmousemove	= formDrag.Drag;
		document.onmouseup		= formDrag.end;
		return false;
	},

	Drag : function(e)
	{
		e = formDrag.fixE(e);

		var o = formDrag.obj, ey = e.clientY, ex= e.clientX, y = parseInt(o.root.style.top), x = parseInt(o.root.style.left), nx, ny;

		nx = x + (ex - o.lastMouseX)
		ny = y + (ey - o.lastMouseY)

 		formDrag.obj.root.style.left = nx + "px";
		formDrag.obj.root.style.top = ny + "px";
		formDrag.obj.lastMouseX	= ex;
		formDrag.obj.lastMouseY	= ey;

		formDrag.obj.root.onDrag(nx, ny);

        formDrag.obj.root.style.left = nx + "px";
		formDrag.obj.root.style.top = ny + "px";
		formDrag.obj.lastMouseX	= ex;
		formDrag.obj.lastMouseY	= ey;

		formDrag.obj.root.onDrag(nx, ny);

    	return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		formDrag.obj.root.onDragEnd(	parseInt(formDrag.obj.root.style.left),
										parseInt(formDrag.obj.root.style.top));
		formDrag.obj = null;


	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};
