var snow = new Array();
var w = new Array();
var h = new Array();
var s = new Array();
var x = new Array();
var y = new Array();
var d = new Array();
var timer = new Array();
var windy = 0;
var windPower = 0;
var screenW=screen.width;
var screenH=screen.height;

function snowAdd() {
  z=snow.length;
  x[z]=Math.round(screenW*Math.random());
  y[z]=Math.round(screenH*Math.random())-screenH;
  d[z]=Math.round(2*Math.random());
  s[z]=Math.round(3*Math.random())+1;
  r=Math.round(1*Math.random());
  if (r==0) {
    w[z]=3;
    h[z]=3;
  }
  if (r==1) {
    w[z]=7;
    h[z]=7;
  }
  if (r==2) {
    w[z]=7;
    h[z]=7;
  }
  document.write('<img id="snow'+z+'" name="snow'+z+'" src="snow'+r+'.gif" border="0" style="container:in-flow;position:relative;left:-'+w[z]+';top:-'+h[z]+';visibility:show">');
  document.close();
  snow[z]=eval("document.all.snow"+z+".style");
  timer[z]=setTimeout("snowMove("+z+");",50);
}

function snowMove(z) {
  y[z]=y[z]+s[z];
  r=Math.round(40*Math.random());
  if (r==1) d[z]=1;
  if (r==2) d[z]=2;
  if (r==3) d[z]=0;
  if (r==4 && s[z]>1) s[z]--;
  if (r==5 && s[z]<4) s[z]++;
  r=Math.round(18000*Math.random());
  if (r==1) snowWindyStart();
  if (r>1 && r<600) {
    ri=Math.round(2*Math.random());
    if (ri==0) {
      w[z]=3;
      h[z]=3;
    }
    if (ri==1) {
      w[z]=7;
      h[z]=7;
    }
    if (ri==2) {
      w[z]=7;
      h[z]=7;
    }
  }
  if (windy>0) {
    if (windy==1) {
      x[z]=x[z]-Math.round((s[z]*(windPower*2)))+1;
    } else {
      x[z]=x[z]+Math.round((s[z]*(windPower*2)))+1;
    }
  } else {
    if (d[z]==1) x[z]=x[z]+s[z];
    if (d[z]==2) x[z]=x[z]-s[z];
  }
  snow[z].left=x[z];
  snow[z].top=y[z];
  if (y[z]>screenH) {
    if (windy>0) {
      if (windy==1) {
        x[z]=screenW;
        y[z]=Math.round(screenH*Math.random())-200;
      } else {
        x[z]=0;
        y[z]=Math.round(screenH*Math.random())-200;
      }
    } else {
      x[z]=Math.round(screenW*Math.random());
      y[z]=Math.round(100*Math.random())-100;
    }
  } else {
    if (windy==1) {
      if (x[z]<0) {
        x[z]=screenW;
        y[z]=Math.round(screenH*Math.random())-200;
      }
    }
    if (windy==2) {
      if (x[z]>(screenW+w[z])) {
        x[z]=0;
        y[z]=Math.round(screenH*Math.random())-200;
      }
    }
  }
  timer[z]=setTimeout("snowMove("+z+");",50);
}

function snowWindyStart() {
  if (windy==0) {
    windPower=Math.round(7*Math.random())+5;
    windy=Math.round(Math.random())+1
    windTimer=setTimeout("snowWindyEnd("+windPower+")",500);
  }
}

function snowWindyEnd(p) {
  if (windy>0) {
    if (p<1) {
      clearTimeout("windTimer");
      windy=0;
    } else {
      windPower--;
      windTimer=setTimeout("snowWindyEnd("+windPower+")",(100*windPower)+100);
    }
  }
}

function init() {
  for (i=0; i<20; i++) snowAdd();
}

// Turn on the snow on December 1st and turn it off after 12th night (January 6th)
var today = new Date();
var todaymm = today.getMonth() + 1;
var todaydd = today.getDate();

if(todaymm==12 || (todaymm==1 && todaydd<=6))
  init();

