var Drag =
{
	"obj":null,
   	"sx":0,
   	"sx2":0,

	"init":function(a, aRoot,obj)
	{

		a.onmousedown=Drag.start;

		a.root = aRoot;


		if(isNaN(parseInt(a.root.style.left)))
			a.root.style.left="0px";
		//if(isNaN(parseInt(a.root.style.top)))
		//	a.root.style.top="0px";

		a.root.onDragStart=new Function();
		a.root.onDragEnd=new Function();
		a.root.onDrag=new Function();
		//a.root.lockH = new Function();

		a.root.obj = obj;

	},
	"start":function(a)
	{

		var b=Drag.obj=this;
		a=Drag.fixE(a);
		var c=parseInt(b.root.style.top);
		var d=parseInt(b.root.style.left);
		b.root.onDragStart(d,c,a.clientX,a.clientY);
		b.lastMouseX=a.clientX;
		b.lastMouseY=a.clientY;
		Drag.sx = b.lastMouseX;
		document.onmousemove=Drag.drag;
		document.onmouseup=Drag.end;

		return false;
	},

	"drag":function(a)
	{
		a=Drag.fixE(a);

		var b=Drag.obj;

		var cy = a.clientY;
		var cx = a.clientX;
		var ty = parseInt(b.root.style.top);
		var tx = parseInt(b.root.style.left);
		var px,py;
		var w = b.root.offsetWidth;

		px=tx+cx-b.lastMouseX;
		py=ty+cy-b.lastMouseY;



		var corx = 0;

		if(!b.root.obj.fixV)
		{
			if((tx + (cx - b.lastMouseX)) > b.root.obj.max)
			{
				corx = px - b.root.obj.max;
				px = b.root.obj.max;
				b.lastMouseX = cx - corx;
			}
			else if((tx + (cx - b.lastMouseX)) < b.root.obj.min)
			{
				corx = px - b.root.obj.min;
				px = b.root.obj.min;
				b.lastMouseX = cx - corx;
			}
			else
			{
				b.lastMouseX=cx;
			}

			b.root.style.left=px+"px";


		}


		if(!b.root.obj.fixH)
			b.root.style.top=py+"px";

		Drag.sx2 = px;


		b.lastMouseY=cy;

		b.root.onDrag(px,py,a.clientX,a.clientY);

		return false;
	},
	"end":function()
	{
		document.onmousemove=null;
		document.onmouseup=null;
		Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style.left),parseInt(Drag.obj.root.style.top));
		Drag.obj=null;

	},
	"fixE":function(a)
	{
		if(typeof a=="undefined")a=window.event;
		if(typeof a.layerX=="undefined")a.layerX=a.offsetX;
		if(typeof a.layerY=="undefined")a.layerY=a.offsetY;
		return a;
	}
};