ns = (document.layers) ? 1:0
ie = (document.all) ? 1:0
ScreenWidth=980;
ScreenHeight=750;
XOffset=130;
StartPos=-10;
RefreshTime=15;
Flockenanzahl=15;
WindSchritt=0;
WindSchrittAnz=100;
WindAmp=0;
Wind=0;
FlakeFreq=new Array();
Abflugdiff=500;
dummy=1; // Patch für den IE-Reload-Bug
img =new Array();
RealPosY = new Array();
RealPosX = new Array();
FallPixel=new Array();
FlakeAmp =new Array();
started = new Array();
IntPosY=new Number(); IntPosX = Math.round(1.1); IntPosX=0; // Patch für den NS-Number-Bug
IntPosX=new Number(); IntPosY = Math.round(1.1); IntPosY=0; // Patch für den NS-Number-Bug
i=1;

function init()  
{
     for (i=1; i<=Flockenanzahl; i++)
     {
         if (ie)  {eval("img["+i+"] = img"+i+".style;");}
         else if (ns) {eval("img["+i+"]  = document.img"+i+";");}
         started[i]=false;
     }
     update();
}

function update()
{
   Startzeit=new Date();
   for (i=1; i<=Flockenanzahl; i++) {fallen(i);}
   blasen();
   Warten=RefreshTime-((new Date()).getTime()-Startzeit.getTime());
   if (Warten <1) {Warten=1};
   setTimeout('update()',Warten);
}

function fallen(num)
{
      if (started[num])
      {
         RealPosY[num]+=FallPixel[num];
         IntPosY=Math.round(RealPosY[num]);
         img[num].top=IntPosY;

         RealPosX[num]+=Math.sin(RealPosY[num]/FlakeFreq[num])+Wind;
         IntPosX=Math.round(RealPosX[num]);
         img[num].left=IntPosX;
 
         if (RealPosY[num]>ScreenHeight || RealPosX[num]>ScreenWidth+2*XOffset || RealPosX[num]<-20) {neustarten(num);}
      }
}

function blasen()
{
   WindSchritt++;
   if (WindSchritt>WindSchrittAnz) 
   {
      WindSchrittAnz=Math.random()*150+50;
      if  (Math.random()<0.7) {WindAmp=0}
      else {WindAmp=Math.random()*5+1.5;}
      if  (Math.random()<0.5) {WindAmp *=-1;}
      WindSchritt=0;
   }
   Wind=Math.sin(Math.PI/WindSchrittAnz*WindSchritt)*WindAmp;
}

function neustarten(i)
{
      RealPosY[i]=StartPos; 
      img[i].top=StartPos;
      rand=Math.random();
      RealPosX[i]=Math.round(XOffset+ScreenWidth*rand-WindAmp/6.5*XOffset);
      img[i].left=RealPosX[i];
      FallPixel[i]=(1.0 + Math.random()*3.0);
      FlakeAmp[i]=15+Math.round(Math.random()*30);
      rand=5-Math.round(Math.random()*10);
      FlakeFreq[i]=FlakeAmp[i]+rand;
}

function starten(i)
{
   if (img[i])
   {
      started[i]=true 
      neustarten(i);
      i++;
      if (i<=Flockenanzahl) {setTimeout("starten("+i+")",Abflugdiff);}
   }
}

