
	var nDots = 5;
	if (document.all&&window.print)
		document.body.style.cssText="overflow-x:hidden;overflow-y:scroll"

	var Xpos = 0;
	var Ypos = 0;

	var isNetscape = navigator.appName=="Netscape";

	var dots = new Array();

	init();

	function init()
	{
		var i = 0;
		for (i = 0; i < nDots; i++) {
			dots[i] = new dot(i);
		}

		if (!isNetscape) {
		}

		for (i = 0; i < nDots; i++) {
			dots[i].obj.left = dots[i].X;
			dots[i].obj.top = dots[i].Y;
		}

		if (isNetscape) {
			startanimate();
		} else {
			setTimeout("startanimate()", 500);
		}
	}

	function dot(i) 
	{
		this.X = Xpos;
		this.Y = Ypos;
		this.dx = 0;
		this.dy = 0;
		if (isNetscape) {    
			this.obj = eval("document.dot" + i);
		} else {
			this.obj = eval("dot" + i + ".style");
		}
	}

	function startanimate()
	{    
		setInterval("animate()", 20);
	}

	function setInitPositions(dots)
	{
		var startloc = document.all.tags("LI");
		var i = 0;
		for (i = 0; i < startloc.length && i < (nDots - 1); i++) {
			dots[i+1].X = startloc[i].offsetLeft
			startloc[i].offsetParent.offsetLeft - 33;
			dots[i+1].Y = startloc[i].offsetTop +
			startloc[i].offsetParent.offsetTop + 60;
		}

		dots[0].X = dots[1].X;
		dots[0].Y = dots[1].Y - 10;
	}

	function MoveHandler(e)
	{
		Xpos = e.pageX;
		Ypos = e.pageY;    
		return true;
	}

	function MoveHandlerIE() {
		Xpos = window.event.x + document.body.scrollLeft;
		Ypos = window.event.y + document.body.scrollTop;    
	}
	
	if (isNetscape) {
		document.captureEvents(Event.MOUSEMOVE);
		document.onMouseMove = MoveHandler;
	} else {
		document.onmousemove = MoveHandlerIE;
	}

	function vec(X, Y)
	{
		this.X = X;
		this.Y = Y;
	}

	function springForce(i, j, spring)
	{
		var dx = (dots[i].X - dots[j].X);
		var dy = (dots[i].Y - dots[j].Y);
		var len = Math.sqrt(dx*dx + dy*dy);
		if (len > 10) {
			var springF = 10 * (len - 10);
			spring.X += (dx / len) * springF;
			spring.Y += (dy / len) * springF;
		}
	}

	function animate() {    
		dots[0].X = Xpos;
		dots[0].Y = Ypos;   

		for (i = 1; i < nDots; i++ ) {

			var spring = new vec(0, 0);
			if (i > 0) {
				springForce(i-1, i, spring);
			}
			if (i < (nDots - 1)) {
				springForce(i+1, i, spring);
			}

			var resist = new vec(-dots[i].dx * 8, -dots[i].dy * 8);

			var accel = new vec((spring.X + resist.X), (spring.Y + resist.Y) + 55);

			dots[i].dx += (0.01 * accel.X);
			dots[i].dy += (0.01 * accel.Y);

			if (Math.abs(dots[i].dx) < 0.1 && Math.abs(dots[i].dy) < 0.1 &&
                        Math.abs(accel.X) < 0.1 && Math.abs(accel.Y) < 0.1) {
				dots[i].dx = 0;
				dots[i].dy = 0;
			}

			dots[i].X += dots[i].dx;
			dots[i].Y += dots[i].dy;

			var height, width;
			if (isNetscape) {
				//height = window.innerHeight + document.scrollTop;
				//width = window.innerWidth + document.scrollLeft;
				height = window.innerHeight;
				width = window.innerWidth;
			} else {    
				height = document.body.clientHeight + document.body.scrollTop;
				width = document.body.clientWidth + document.body.scrollLeft;
			}

			if (dots[i].Y >= height - 49) {
				if (dots[i].dy > 0) {
					dots[i].dy = 0.9 * -dots[i].dy;
				}
				dots[i].Y = height - 48;
			}
			if (dots[i].X >= width - 50) {
				if (dots[i].dx > 0) {
					dots[i].dx = 0.9 * -dots[i].dx;
				}
                        	dots[i].X = width - 49;
			}

			if (dots[i].X < 0) {
				if (dots[i].dx < 0) {
					dots[i].dx = 0.9 * -dots[i].dx;
				}
				dots[i].X = 0;
			}
			if (dots[i].Y < 0) {
				if (dots[i].dy < 0) {
					dots[i].dy = 0.9 * -dots[i].dy;
				}
				dots[i].Y = 0;
			}

			dots[i].obj.left = dots[i].X;             
			dots[i].obj.top = dots[i].Y;        
		}
	}
