floatX=0;
floatY=92;
layerwidth=19;
layerheight=402;
halign="left";
valign="top";
delayspeed=1;

// This script is copyright (c) Henrik Petersen, NetKontoret
// Feel free to use this script on your own pages as long as you do not change it.
// It is illegal to distribute the script as part of a tutorial / script archive.
// Updated version available at: http://www.echoecho.com/toolfloatinglayer.htm
// This comment and the 4 lines above may not be removed from the code.

NS6=false;
IE4=(document.all);
if (!IE4) {NS6=(document.getElementById);}
NS4=(document.layers);

function adjust() {
if ((NS4) || (NS6)) {
	if (lastX==-1 || delayspeed==0)
	{
	lastX=window.pageXOffset + floatX;
	lastY=window.pageYOffset + floatY;
	}
	else
	{
	var dx=Math.abs(window.pageXOffset+floatX-lastX);
	var dy=Math.abs(window.pageYOffset+floatY-lastY);
	var d=Math.sqrt(dx*dx+dy*dy);
	var c=Math.round(d/10);
	if (window.pageXOffset+floatX>lastX) {lastX=lastX+delayspeed+c;}
	if (window.pageXOffset+floatX<lastX) {lastX=lastX-delayspeed-c;}
	if (window.pageYOffset+floatY>lastY) {lastY=lastY+delayspeed+c;}
	// bdg:
	if (window.pageYOffset+floatY<lastY) {
		if (window.pageYOffset+floatY<=92) {
			lastY=92;
		} else {
			lastY=lastY-delayspeed-c;
		}
		
	}
	
	}
	if (NS4){
	document.layers['floatlayer'].pageX = lastX;
	document.layers['floatlayer'].pageY = lastY;
		// bdg:
		if (lastY>92) {
			document.layers['floatlayer'].pageY = lastY-92;
		} else {
			document.layers['floatlayer'].pageY = 92;	
		}
	}
	if (NS6){
	document.getElementById('floatlayer').style.left=lastX;
		// bdg:
		if (lastY>92) {
			document.getElementById('floatlayer').style.top=lastY-92;
		} else {
			document.getElementById('floatlayer').style.top=92;
		}
	}
} else if (IE4){
	if (lastX==-1 || delayspeed==0)
	{
	lastX=document.body.scrollLeft + floatX;
	lastY=document.body.scrollTop + floatY;
	}
	else
	{
	var dx=Math.abs(document.body.scrollLeft+floatX-lastX);
	var dy=Math.abs(document.body.scrollTop+floatY-lastY);
	var d=Math.sqrt(dx*dx+dy*dy);
	var c=Math.round(d/10);
	if (document.body.scrollLeft+floatX>lastX) {lastX=lastX+delayspeed+c;}
	if (document.body.scrollLeft+floatX<lastX) {lastX=lastX-delayspeed-c;}
	if (document.body.scrollTop+floatY>lastY) {lastY=lastY+delayspeed+c;}
	
	// bdg:
	if (document.body.scrollTop+floatY<lastY) {
		if (document.body.scrollTop+floatY<=92){
			lastY=92;
		} else {
			lastY=lastY-delayspeed-c;
		}
		
		}
	}
	document.all['floatlayer'].style.posLeft = lastX;
	// bdg:
	if (lastY>92) {
		document.all['floatlayer'].style.posTop = lastY-92;
	} else {
		document.all['floatlayer'].style.posTop = 92;	
	}

} 
setTimeout('adjust()',50);
}

function define()
{
if ((NS4) || (NS6)) 
{ 
if (halign=="left") {floatX=ifloatX};
if (halign=="right") {floatX=window.innerWidth-ifloatX-layerwidth-20};
if (halign=="center") {floatX=Math.round((window.innerWidth-20)/2)-Math.round(layerwidth/2)};
if (valign=="top") {floatY=ifloatY};
if (valign=="bottom") {floatY=window.innerHeight-ifloatY-layerheight};
if (valign=="center") {floatY=Math.round((window.innerHeight-20)/2)-Math.round(layerheight/2)};
}
if (IE4) 
{
if (halign=="left") {floatX=ifloatX};
if (halign=="right") {floatX=document.body.offsetWidth-ifloatX-layerwidth-20}
if (halign=="center") {floatX=Math.round((document.body.offsetWidth-20)/2)-Math.round(layerwidth/2)}
if (valign=="top") {floatY=ifloatY};
if (valign=="bottom") {floatY=document.body.offsetHeight-ifloatY-layerheight}
if (valign=="center") {floatY=Math.round((document.body.offsetHeight-20)/2)-Math.round(layerheight/2)}
}
}

/*
Parameter Description Value
 
floatX 
Defines the horizontal distance from the border.
- positive numbers.
 
floatY 
Defines the vertical distance from the border.
- positive numbers.
 
layerwidth 
Defines the width of the menu layer.
- positive numbers.

layerheight 
Defines the height of the menu layer.
- positive numbers.
 
halign 
Defines which border floatX should be counted from.
- left,  center, right.

valign 
Defines which border floatY should be counted from.
- top, center, bottom.
 
delayspeed 
Defines the time delay before the layer's position is updated.
If set to 0 (zero) the layer will move to its correct position immediately.
If set to a value the layer will be slightly delayed before moving to its correct position.(Do not set to values beyond 3).
*/
 
