/*******************************************************************
*
* File    : JSFX_FloatingLayer.js © JavaScript-FX.com
*
* Created : 2001/03/16
*
* Author  : Roy Whittle www.Roy.Whittle.com
*           
* Purpose : To make and positional div float to
*		one plave on the page and stay there.
*
* History
* Date         Version        Description
*
* 2001-03-17	2.0		Converted for javascript-fx
***********************************************************************/

JSFX.FloatingLayer = function(theDiv, x, y)
{
	//Call the superclass constructor
	this.superC = JSFX.Layer;
	this.superC(JSFX.findLayer(theDiv), x, y);

	this.baseX = x;
	this.baseY = y;
	this.x = x;
	this.y = y;
	this.moveTo(x,y);
	this.show();
}

JSFX.FloatingLayer.prototype = new JSFX.Layer;

JSFX.FloatingLayer.prototype.animate = function()
{
	var targetX;
	var targetY;
	var	MinX, MinY, MaxX, MaxY;
	var	idFloor;
	
	MinX = JSFX.Browser.getMinX();
	MaxX = JSFX.Browser.getMaxX();
	MinY = JSFX.Browser.getMinY();
	MaxY = JSFX.Browser.getMaxY();
	
	if(this.baseX > 0)
		targetX = MinX + this.baseX;
	else
		targetX = MaxX + this.baseX;

	if(this.baseY > 0)
		targetY = MinY + this.baseY;
	else
		targetY = MaxY + this.baseY;

	// Do not move layer past the floor of the hidden anchor div element EndOfClips
	idFloor = getYPosition(document.getElementById("EndOfClips"));
	if (MaxY > idFloor) targetY = targetY - (MaxY - idFloor);

	var dx = (targetX - this.x)/8;
	var dy = (targetY - this.y)/8;
	this.x += dx;
	this.y += dy;
	
	this.moveTo(this.x, this.y);
}
JSFX.MakeFloatingLayer = function(theDiv, x, y)
{
	JSFX.MakeFloatingLayer.floaters[JSFX.MakeFloatingLayer.floaters.length] = new JSFX.FloatingLayer(theDiv, x, y);
}
JSFX.MakeFloatingLayer.floaters = new Array();
JSFX.MakeFloatingLayer.animate = function()
{
	var i;
	for(i=0 ; i<JSFX.MakeFloatingLayer.floaters.length ; i++)
		JSFX.MakeFloatingLayer.floaters[i].animate();
}
setInterval("JSFX.MakeFloatingLayer.animate()", 30);

function getYPosition(theElement) 
{ 
	var positionX = 0; 
	var positionY = 0; 
	
	while (theElement != null) 
	{ 
		positionY += theElement.offsetTop; 
		theElement = theElement.offsetParent; 
	} 
	
	return positionY; 
}
