// SNOW EFFECTS
// This works with all Version 4+ Browsers.
// That is IE, Netscape, and Opera.
// It is a modification of a program found on the web.
//
// Robert Laurie (theman@islandman.org)
// http://www.islandman.org/info/javascript/snow
//
var snowsrc="snow.gif" // URL path to the snow image
var flakes = 40;   // total snowflakes
var dx, xp, yp;    // coordinate and position variables
var am, stx, sty;  // amplitude and step variables
var i, doc_width = 800, doc_height = 600;

if (document.getElementById)
{
    if(document.body.clientWidth)
    {
        doc_width = document.body.clientWidth;
        doc_height = document.body.clientHeight;
    }
    else
    {
        doc_width = window.innerWidth;
        doc_height = window.innerHeight;
    }
}
else if (document.all)
{
    doc_width = document.body.clientWidth;
    doc_height = document.body.clientHeight;
}
else if (document.layers)
{
    doc_width = self.innerWidth;
    doc_height = self.innerHeight;
}

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();

for (i = 0; i < flakes; ++ i)
{
    dx[i] = 0;                        // set coordinate variables
    xp[i] = Math.random()*(doc_width-50);  // set position variables
    yp[i] = Math.random()*doc_height;
    am[i] = Math.random()*20;         // set amplitude variables
    stx[i] = 0.02 + Math.random()/10; // set step variables
    sty[i] = 0.7 + Math.random();     // set step variables
    if (document.layers)
    {
        document.write("<layer name=\"dot"+ i 
        + "\" left=\"15\" top=\"15\" visibility=\"show\"><img src='" 
        + snowsrc+"' border=\"0\"></layer>");
    }
    else if (document.getElementById||document.all)
    {
        document.write("<div id=\"dot"+ i 
        +"\" style=\"POSITION: absolute; Z-INDEX: "
        + i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\">"
        +"<img src='" + snowsrc + "' border=\"0\"></div>");
    }
}

if (document.layers) snowNS();
else if (document.getElementById||document.all) snowIE_NS6();
  
function snowNS() // Netscape main animation function
{  
   for (i = 0; i < flakes; ++ i)  // iterate for every dot
   { 
      yp[i] += sty[i];
      if (yp[i] > doc_height-50) 
      {
        xp[i] = Math.random()*(doc_width-am[i]-30);
        yp[i] = 0;
        stx[i] = 0.02 + Math.random()/10;
        sty[i] = 0.7 + Math.random();
        doc_width = self.innerWidth;
        doc_height = self.innerHeight;
      }
      dx[i] += stx[i];
      document.layers["dot"+i].top = yp[i];
      document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
    }
    setTimeout("snowNS()", 40);
}

function snowIE_NS6() // IE and NS6 main animation function
{  
    for (i = 0; i < flakes; ++ i)
    {
      yp[i] += sty[i];
      if (yp[i] > doc_height-50)
      {
        xp[i] = Math.random()*(doc_width-am[i]-30);
        yp[i] = 0;
        stx[i] = 0.02 + Math.random()/10;
        sty[i] = 0.7 + Math.random();
        if(document.body.clientWidth)
        {
            doc_width = document.body.clientWidth;
            doc_height = document.body.clientHeight;
        }
        else
        {
            doc_width = window.innerWidth;
            doc_height = window.innerHeight;
        }
      }
      dx[i] += stx[i];
      if (document.getElementById)
      {
        document.getElementById("dot"+i).style.top=yp[i];
        document.getElementById("dot"+i).style.left=xp[i] 
        + am[i]*Math.sin(dx[i]);
      }
      else if (document.all)
      {
        document.all["dot"+i].style.pixelTop = yp[i];
        document.all["dot"+i].style.pixelLeft = xp[i] 
        + am[i]*Math.sin(dx[i]);
      }
    }
    setTimeout("snowIE_NS6()", 40);
}
