/*-------------------------------------------------------------------------
 * Naam   : snowflakes.js
 * Doel   : Let it snow.., Let it snow... d.m.v. dhtml
 *
 * Copyright@ 10 december 1999 .
 *
 * Programmeurs (idee en uitwerking):
 *          Andre.v.Broeckhuijsen
 *          Alex.Blomsma
 *
 * Opmerking:
 *          vlok0 is eigelijk een ijspegel.. (als een speer)
 *          nu even zonder schaduw van de grote vlokken
 *
 * Manier van includen:
 * SCRIPT LANGUAGE="javascript" src="/useful/includes/snowflakes.js" SCRIPT
 *---------------------------------------------------------------------------*/
var snow;
var snowLeft;
var snowTop;


if( document.images ) {
   
   //
   // het aantal GroteVlokken moet kleiner zijn dan aantalVlokken
   // de mooiste verhouding is ongeveer 1 : 3
   //
   var strOut;
   var i;
   var NS4= (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4) 

   //
   // als de variabelen niet overschreven worden nemen we defaults.
   //
   if( typeof(aantalVlokken)=="undefined")
      aantalVlokken= 21;
   if( typeof(aantalGroteVlokken)=="undefined")
      aantalGroteVlokken= 7;
   if( typeof(snelheidVlokken)=="undefined")
      snelheidVlokken= 15;
   if( typeof(schaduwVlokken)=="undefined")
      schaduwVlokken= false;
   if( typeof(gekleurdeVlokken)=="undefined")
      gekleurdeVlokken= false;

   //
   // genereer een style voor de sneeuwvlokken
   //
   document.write("<style>");
   document.write(".snow0{top:0px;left:0px;position:absolute;width:1px;height:1px;font-size:20pt;font-family:Times;color:#FFFF99;}");
   document.write(".snow{top:5px;left:5px;position:absolute;width:1px;height:1px;font-size:20pt;font-family:Times;color:#003366;}");
   document.write(".snows{top:0px;left:0px;position:absolute;width:1px;height:1px;font-size:20pt;font-family:Times;color:#FFFFFF;}");
   document.write(".snowsmall{top:0px;left:0px;position:absolute;width:1px;height:1px;font-size:10pt;font-family:Times;color:#CCCCCC;}");
   document.write("</style>");

   //
   // genereer een eenmalige ijspegel, lichtelijk geel...
   //
   document.write("<DIV ID='vlok0' class=snow0>'<DIV class=snow>'</DIV></DIV>");

   //
   // ingebouwde beveiliging:
   //
   if( aantalVlokken>200 ) aantalVlokken= 200;
   if( aantalGroteVlokken>aantalVlokken ) aantalGroteVlokken= aantalVlokken;
   if( snelheidVlokken<5 ) snelheidVlokken= 5;
   //
   // genereer de div tags met als id vlokXX
   //
   for( i=1; i<aantalGroteVlokken; i++ ) {
      if( schaduwVlokken )
         strOut= "<DIV ID='vlok"+i+"' class=snows>*<DIV class=snow>*</DIV></DIV>";
      else
         strOut= "<DIV ID='vlok"+i+"' class=snows>*</DIV>";

      document.write(strOut);
   }
   for( ; i<aantalVlokken; i++ ) {
      strOut= "<DIV ID='vlok"+i+"' class=snowsmall>*</DIV>";
      document.write(strOut);
   }

   //
   // gekleurde grote sneeuw? niet in Netscape
   //
   if( !NS4 && gekleurdeVlokken) {
      var colors= new Array("FFFF99","FFFFFF","FF0000","00FF00"
                        ,"0000FF","FF00FF","FFFF00","00FFFF"
                        );
      //
      // genereer: vlokXX.style.color="#FF0000";
      //
      for( i=1; i<aantalVlokken; i++ ) {
         eval( "vlok"+i+".style.color= '#"+colors[i%colors.length]+"'" );
      }
   }

   //
   // zet de genereerde div's in een variabele
   //
   if( NS4 ) {
      for( i=0; i<aantalVlokken; i++ ) {
         eval( "var div"+i+" = document.vlok"+i );
      }
   }
   else {
      for( i=0; i<aantalVlokken; i++ ) {
         eval( "var div"+i+" = document.all.vlok"+i+".style" );
      }
   }

   var strTest;

   snow    = new Array();
   snowLeft= new Array();
   snowTop = new Array();

   //
   // zet de genereerde variabelen in een tabel
   //
   for( i=0; i<aantalVlokken; i++ ) {
     //genereer: snow[0]=div0
     eval( "snow["+i+"]=div"+i );
   }

   //
   // haal wat browser waarden op voor het positioneren
   //
   if (navigator.appName=="Microsoft Internet Explorer") {
      tay = document.body.clientHeight;
      tax = document.body.clientWidth;
      oay = document.body.scrollTop;
      oax = document.body.scrollLeft;
   }
   else {
      tay = window.innerHeight;
      tax = window.innerWidth;
      oay = window.pageYOffset;
      oax = window.pageXOffset;
   }

   // debug
   //alert( "tay = document.body.clientHeight;="+tay);
   //alert( "tax = document.body.clientWidth; ="+tax);
   //alert( "oay = document.body.scrollTop;   ="+oay);
   //alert( "oax = document.body.scrollLeft;  ="+oax);
   //
   // random bepalen waar alle vlokken beginnen
   //
   for( i=0; i<snow.length; i++ ) {
      snowLeft[i]= Math.random()*(tax-10)+oax;
      snowTop [i]= Math.random()*tay     +oay;
      snow[i].left= snowLeft[i];
      snow[i].top = snowTop [i];
   }

   //
   // start het spectakel
   //
   snowflakes();

} // einde document images

//
// deze functie word iedere keer aangeroepen om ze te verplaatsen
//
function snowflakes() {

   if (navigator.appName=="Microsoft Internet Explorer") {
      tay = document.body.clientHeight;
      tax = document.body.clientWidth;
      oay = document.body.scrollTop;
      oax = document.body.scrollLeft;
   }
   else {
      tay = window.innerHeight;
      tax = window.innerWidth;
      oay = window.pageYOffset;
      oax = window.pageXOffset;
   }

   for( i=0; i<snow.length; i++ ) {
       //
       // als de vlok nog in beeld is...
       //
       if( snowTop[i] < tay+oay ) {
         //
         // de ijspegel gaat als een speer...
         //
         if( i==0 ) {
            snowTop[i]+= 12;
         } 
         else {
            if( i<aantalGroteVlokken ) {
               //
               // de grote vlokken vallen snel en vlagerig...
               //
               snowLeft[i]+= Math.random()*6 -3;
               snowTop [i]+= Math.random()*6;
            }
            else {
               //
               // de kleine vlokken vallen maar half zo snel...
               //
               snowLeft[i]+= Math.random()*2-1;
               snowTop [i]+= Math.random()*2;
            }
         }
         //
         // laat de vlokken niet buiten de pagina dwarrelen en verdwijnen
         //
         if( snowLeft[i]>tax+oax-25 )
            snowLeft[i]=tax+oax-25;
         if( snowLeft[i]<oax )
            snowLeft[i]=oax;
      }
      //
      // anders: bepaal een nieuwe postitie boven aan.
      //
      else {
         snowTop [i]= oay;
         snowLeft[i]= Math.random()*(tax-10)+oax;
      }   
      //
      // Verplaats de vlokken: let it snow.., let it snow...
      //
      snow[i].top = snowTop [i];
      snow[i].left= snowLeft[i];
   }
   //
   // zet de timer voor de volgende beweging
   //
   tempo= setTimeout("snowflakes()", snelheidVlokken);
}

