From 2011.igem.org
/////////////////////////////////////////////////////////////////////
var FloatLayers = new Array();
var FloatLayersByName = new Array();
function addFloatLayer(n,offX,offY,spd){new FloatLayer(n,offX,offY,spd);}
function getFloatLayer(n){return FloatLayersByName[n];}
function alignFloatLayers(){for(var i=0;i=0) ? leftFloater : rightFloater;
this.alignVertical =(offY>=0) ? topFloater : bottomFloater;
this.ifloatX = Math.abs(offX);
this.ifloatY = Math.abs(offY);
}
/////////////////////////////////////////////////////////////////////
function defineFloater(){
this.layer = document.getElementById(this.name);
this.width = this.layer.offsetWidth;
this.height = this.layer.offsetHeight;
this.prevX = this.layer.offsetLeft;
this.prevY = this.layer.offsetTop;
}
function adjustFloater() {
this.tm=null;
if(this.layer.style.position!='absolute')return;
var dx = Math.abs(this.floatX-this.prevX);
var dy = Math.abs(this.floatY-this.prevY);
if (dx < this.steps/2)
cx = (dx>=1) ? 1 : 0;
else
cx = Math.round(dx/this.steps);
if (dy < this.steps/2)
cy = (dy>=1) ? 1 : 0;
else
cy = Math.round(dy/this.steps);
if (this.floatX > this.prevX)
this.prevX += cx;
else if (this.floatX < this.prevX)
this.prevX -= cx;
if (this.floatY > this.prevY)
this.prevY += cy;
else if (this.floatY < this.prevY)
this.prevY -= cy;
this.layer.style.left = this.prevX;
this.layer.style.top = this.prevY;
if (cx!=0||cy!=0){
if(this.tm==null)this.tm=setTimeout('FloatLayers['+this.index+'].adjust()',50);
}else
alignFloatLayers();
}
function setLeftFloater(){this.alignHorizontal=leftFloater;}
function setRightFloater(){this.alignHorizontal=rightFloater;}
function setTopFloater(){this.alignVertical=topFloater;}
function setBottomFloater(){this.alignVertical=bottomFloater;}
function leftFloater(){this.floatX = document.body.scrollLeft + this.ifloatX;}
function topFloater(){this.floatY = document.body.scrollTop + this.ifloatY;}
function rightFloater(){this.floatX = document.body.scrollLeft + document.body.clientWidth - this.ifloatX - this.width;}
function bottomFloater(){this.floatY = document.body.scrollTop + document.body.clientHeight - this.ifloatY - this.height;}
function alignFloater(){
if(this.layer==null)this.initialize();
this.alignHorizontal();
this.alignVertical();
if(this.prevX!=this.floatX || this.prevY!=this.floatY){
if(this.tm==null)this.tm=setTimeout('FloatLayers['+this.index+'].adjust()',50);
}
}