
var DivFloater={};

DivFloater.gotoPoint = function (divId, point, moveX, moveY, sleep) {

	clearTimeout(DivFloater.timer);
	DivFloater.timer = 0;

	var div = document.getElementById(divId);
	var left = parseInt(div.style.left);
	var top = parseInt(div.style.top);

	if (left > point.x) {
		if (moveX > 0) {
			moveX = moveX - (moveX*2);
		}
	} else if (left < point.x) {
		if (moveX < 0) {
			moveX = moveX - (moveX*2);
		}
	}
	if (top > point.y) {
		if (moveY > 0) {
			moveY = moveY - (moveY*2);
		}
	} else if (top < point.y) {
		if (moveY < 0) {
			moveY = moveY - (moveY*2);
		}
	}

	var xDone = false;
	var yDone = false;
	if (left - point.x <= moveX) {
		div.style.left = point.x;
		xDone = true;
	} else {
		div.style.left = parseInt(div.style.left)+moveX;
	}
	if (top - point.y <= moveY) {
		div.style.top = point.y;
		yDone = true;
	} else {
		div.style.top = parseInt(div.style.top)+moveY;
	}
	
	if (xDone && yDone) {
		DivFloater.pause();
	} else {
		var callback = "DivFloater.gotoPoint('"+divId+"', {x: "+point.x+", y: "+point.y+"}, "+moveX+", "+moveY+", "+sleep+")";
		DivFloater.timer = setTimeout(callback, sleep);
	}


}

DivFloater.animateDiv = function (divId, rect, moveX, moveY, sleep) {

	clearTimeout(DivFloater.timer);
	DivFloater.timer = 0;

	var div = document.getElementById(divId);
	div.style.left = parseInt(div.style.left)+moveX;
	div.style.top = parseInt(div.style.top)+moveY;

	if (moveX > 0 && parseInt(div.style.left)+moveX > rect.x2) {
		// Reached the end of x-axis
		moveX = moveX - (moveX*2);
	} else if (moveX < 0 && parseInt(div.style.left)+moveX < rect.x1) {
		// Reached the beginning of x-axis
		moveX = moveX - (moveX*2);
	}

	if (moveY > 0 && parseInt(div.style.top)+moveY > rect.y2) {
		// Reached the end of y-axis
		moveY = moveY - (moveY*2);
	} else if (moveY < 0 && parseInt(div.style.top)+moveY < rect.y1) {
		// Reached the beginning of y-axis
		moveY = moveY - (moveY*2);
	}

	var callback = "DivFloater.animateDiv('"+divId+"', {x1: "+rect.x1+", y1: "+rect.y1+", x2: "+rect.x2+", y2: "+rect.y2+"}, "+moveX+", "+moveY+", "+sleep+")";
	if (DivFloater.isStopped) {
		DivFloater.sleep = sleep;
		DivFloater.callback = callback;
	} else {
		DivFloater.timer = setTimeout(callback, sleep);
	}
}
DivFloater.pause = function () {
	DivFloater.isStopped = true;
};
DivFloater.play = function () {
	DivFloater.isStopped = false;
	DivFloater.timer = setTimeout(DivFloater.callback, DivFloater.sleep);
};
DivFloater.timer = 0;
DivFloater.isStopped = false;
DivFloater.sleep = 100;

