// MouseTrail-Effekt
var nDots=4;
var DivHTML="";
if (document.all&&window.print)
document.body.style.cssText="overflow-x:hidden;overflow-y:scroll"
var Xpos=0;
var Ypos=0;
// Zeitabstand der Aktualisierungen - keine Echzeit
var DELTAT=.01;
// Floatingspanne in Pixeln
var SEGLEN=10;
// Spielraum beim Floaten
var SPRINGK=10;
// Allgemeine physische Angaben
var MASS=5;
var GRAVITY=50;
var RESISTANCE=10;
// Abbruchkriterien gegen Endlosschleife
var STOPVEL=0.1;
var STOPACC=0.1;
var DOTSIZE=22;
// BOUNCE ist der Prozentsatz der Beschleunigung, der nach dem Abprall übrigbleibt
var BOUNCE=0.75;
var isNetscape=navigator.appName=="Netscape";
if(!document.images)
{var isIE3="true";}
// Followmouse ist immer an!
var followmouse=true;
var dots=new Array();
if(!isNetscape && !isIE3)
{for(i=0;i<= nDots-1;i++)
	{var width=45;
	var Zufall=Math.random();
	if(Zufall!=0)
		{if(Zufall<0.5){var Zufall=Zufall+0.5}}
	width=parseInt(width*Zufall);
	if(i==0)
	{DivHTML += "<div id='dot"+i+"' style='position: absolute; visibility: hidden; height: "+width+"; width: "+width+";'><img src='gfx/bullet.gif' height="+width+" width="+width+"></div>\n"}
	else {DivHTML += "<div id='dot"+i+"' style='position: absolute; visibility: visible; height: "+width+"; width: "+width+";'><img src='bullet.gif' height="+width+" width="+width+"></div>\n"}}
	document.write(DivHTML);}

init();
function init()
{if(!isNetscape && !isIE3)
{var i=0;
 for (i=0;i<nDots;i++)
 {dots[i]=new dot(i);}
 if (!isNetscape)
 {}
 // Positionen
 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()", 2000);}}}

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);}

// Anordnung
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-DOTSIZE;dots[i+1].Y=startloc[i].offsetTop+            startloc[i].offsetParent.offsetTop+2*DOTSIZE;}
    dots[0].X=dots[1].X;
    dots[0].Y=dots[1].Y-SEGLEN;}

// Speichern der Mouseposition für Verwendung durch animate()
function MoveHandler(e)
{Xpos=e.pageX;
Ypos=e.pageY;	  
return true;}

// Speichern der Mouseposition für Verwendung durch animate()
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;}

// addier die Kräfte X und Y für Hüpfer von dot[i] auf dot[j]
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>SEGLEN)
	{var springF=SPRINGK*(len-SEGLEN);spring.X+=(dx/len)*springF;spring.Y+=(dy/len)*springF;}
}

function animate()
{var start=0;
if (followmouse){dots[0].X=Xpos;dots[0].Y=Ypos;start=1;}
for (i=start;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);} 
    // Luftwiderstand
	var resist=new vec(-dots[i].dx*RESISTANCE,-dots[i].dy*RESISTANCE);
	// Berechnung der neuen Beschleunigung unter Einbeziehung der Gravität
	var accel=new vec((spring.X+resist.X)/MASS,(spring.Y + resist.Y)/ MASS + GRAVITY);
	// Berechnung der neuen Geschwindigkeit
	dots[i].dx+=(DELTAT*accel.X);
	dots[i].dy+=(DELTAT*accel.Y);
	// Stoppen bei zu geringer Bewegung
	if (Math.abs(dots[i].dx)<STOPVEL && Math.abs(dots[i].dy)<STOPVEL && Math.abs(accel.X)<STOPACC && Math.abs(accel.Y)<STOPACC)
		{dots[i].dx=0;dots[i].dy=0;}
	// Bewegung
	dots[i].X+=dots[i].dx;
	dots[i].Y+=dots[i].dy;
	// ermittelt die Fenstergröße
	var height, width;
	if (isNetscape)
		{height=window.innerHeight+document.scrollTop;
		width=window.innerWidth+document.scrollLeft;}
	else
		{height=document.body.clientHeight+document.body.scrollTop;
		width=document.body.clientWidth+document.body.scrollLeft;}
	// Abprallen von 3 Wänden (nicht Oberkante)
	if (dots[i].Y>=height-DOTSIZE-1)
		{if (dots[i].dy>0){dots[i].dy=BOUNCE*-dots[i].dy;}
		dots[i].Y=height-DOTSIZE-1;}
	if (dots[i].X>=width-DOTSIZE)
		{if (dots[i].dx>0){dots[i].dx=BOUNCE*-dots[i].dx;}
		dots[i].X = width - DOTSIZE - 1;}
	if (dots[i].X<0)
		{if (dots[i].dx<0){dots[i].dx=BOUNCE*-dots[i].dx;}
		dots[i].X=0;}
	// Bewegung
	dots[i].obj.left=dots[i].X;			
	dots[i].obj.top=dots[i].Y;}}

