/**
* Filename................: moving.js
* Project.................: web pages SDK
* Last Modified...........: $Date: 5/10/2005 22:13:10 $
* CVS Revision............: $Revision: 0.1.3 $
* Idea and Developed by...: Maxim Bulygin (sailormax@gmail.com)
* Require.................: lib.js
*/

function CreateDuplicate(obj, fully)
{
	div = document.createElement("DIV");
	tr = (obj.tagName == "TR");
	if (tr && fully)
		setStyle(div, "display:none; position:absolute !important; overflow:hidden !important; z-index:1000 !important; padding:0 !important; margin:0 !important; background-color:white;");
	else
		setStyle(div, getStyle(obj) + ";display:none; position:absolute !important; overflow:hidden !important; z-index:1000 !important; padding:0 !important; margin:0 !important; background-color:white;");

	if (ie)
		div.style.filter = "alpha(opacity=80)";
	else if (mozilla)
		div.style.opacity = 0.8;
	else
		div.style.background = "transparent url(/direct/images/drag_bg.png) repeat";

	div.style.width = obj.offsetWidth + "px";
	div.style.height = obj.offsetHeight + "px";

	if (fully)
	{
		if (tr)
		{
			pTbl = obj; while (pTbl.tagName != "TABLE" ) pTbl = pTbl.parentNode;
			table = pTbl.cloneNode(false);
			if (pTbl.firstChild.tagName == "TBODY")
			{
				table.appendChild(pTbl.firstChild.cloneNode(false));
				table.firstChild.appendChild(obj.cloneNode(true));
			}
			else
				table.appendChild(obj.cloneNode(true));
			div.appendChild(table);
		}
		else
		{
			div.className = obj.className;
			div.innerHTML = obj.innerHTML;
		}
	}
	else
	{
		div.style.border = "1px solid black";
	}

	document.body.appendChild(div);

	pos = GetAbsolutePos(obj);
	div.style.left	= pos.x+"px";
	div.style.top	= pos.y+"px";

	return div;
}

function SlideAbsoluteObject(obj, target, onFinish, times, delay)
{
	if (typeof(times) == "undefined") times = 7;
	if (typeof(delay) == "undefined") delay = 30;

	if (times > 0)
	{
		x = parseInt(obj.style.left);
		y = parseInt(obj.style.top);
		w = obj.offsetWidth;
		h = obj.offsetHeight;
		tPos = GetAbsolutePos(target);

		dx = Math.round((x - tPos.x) / times) * -1;
		dy = Math.round((y - tPos.y) / times) * -1;

		dx2 = (x + w) - (tPos.x + target.offsetWidth);
		dx2 = Math.round(dx2 / times) * -1;
		dy2 = (y + h) - (tPos.y + target.offsetHeight);
		dy2 = Math.round(dy2 / times) * -1;

		obj.style.width = (w - dx + dx2) + "px";
		obj.style.height = (h - dy + dy2) + "px";

		obj.style.left = (x + dx) + "px";
		obj.style.top = (y + dy) + "px";

		window.setTimeout(function(){ SlideAbsoluteObject(obj, target, onFinish, times-1, delay); }, delay);
	}
	else
	{
		obj.style.display = "none";
		obj.parentNode.removeChild(obj);

		if (typeof(onFinish) == "function")
			onFinish();
		else if (typeof(onFinish) == "string")
			eval(onFinish);
	}
}

function VirtualMove(source, dest, fully, onFinish, times, delay)
{
	var vDup = CreateDuplicate(source, fully);
	vDup.style.display = "block";
//		div.style.cursor="move";
	SlideAbsoluteObject(vDup, dest, onFinish, times, delay);
}

