// DOM Snowing script
// Based on http://www.altan.hr/snow/index.html
// Alexander Weps
// v1.1

//PODZIM y_step=2;y_rate=1;a_rate=60
//DEST y_step=20;y_rate=0.5;a_rate=3
//ZIMA y_step=3;y_rate=1;a_rate=60

// ^CONFIG
  var x_step = 0.01;                                                            //x step variable
  var y_step = 2;                                                               //y step variable
  var x_rate = 8;                                                               //x random rate variable (/)
  var y_rate = 1;                                                               //y random rate variable (/)
  var a_rate = 60;                                                              //amplitude rate (*)
  var y_limit = 50;                                                             //bottom dead zone
  var x_limit = 50;                                                             //right and left dead zone
  var x_wind = 0;                                                               //x wind (+/- is direction)
  
  var n = 30;                                                                   //number of flags
  var pow = 2;                                                                  //flag distribution power rate
  var v = 5;                                               //number of flag variants
  
  var file_prefix = '';                                                         //flag file prefix
  var file_sufix = '.png';                                                      //flag file sufix
  var file_dir = 'http://shy.cz//www/weather/flowers/';                         //flag file directory
  var div_prefix = 'drop';                                                      //div prefix
  
  var timeout = 50;                                                             //script timeout
// $CONFIG

// ^INIT VARIABLES
  var dx, xp, yp;    // coordinate and position variables
  var am, stx, sty;  // amplitude and step variables
  var divs/*, imgs*/;    // flag divs
  var i;
  var wait = n;
  
  var doc_width, doc_height;
  
  //var canvas;
// $INIT VARIABLES

  function snow_resize() {
    doc_width = document.body.clientWidth;
    //doc_height = document.body.clientHeight >= window.innerHeight ? document.body.clientHeight : window.innerHeight;
    doc_height = typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.clientHeight;
    //canvas.canvas.width = doc_width;
    //canvas.canvas.height = doc_height;
  }

// ^SNOW FCE
  function snow() {
    snow_resize();
    //canvas.save();
    //canvas.clearRect(0,0,doc_width,doc_height);
    for (i = 0; i < n; ++ i) {                                                  //iterate for every dot
      xp[i] += x_wind;
      yp[i] += sty[i];
      if (yp[i] > doc_height-y_limit) {                                         //snow on the bottom
        xp[i] = x_limit + Math.random()*(doc_width-2*x_limit);
        yp[i] = 0;
      }
      dx[i] += stx[i];
      if (xp[i] < x_limit || xp[i] > doc_width - x_limit) {                     //after resized windows
        xp[i]  = x_limit + Math.random()*(doc_width-2*x_limit);
      }
      //canvas.drawImage(imgs[i], Math.round(xp[i] + am[i]*Math.sin(dx[i])), Math.round(yp[i]), imgs[i].width, imgs[i].height);
                        
      divs[i].style.top = Math.round(yp[i]) + 'px';
      divs[i].style.left = Math.round(xp[i] + am[i]*Math.sin(dx[i])) + 'px';
    }
    //canvas.restore();
    setTimeout('snow()', timeout);
  }
// $SNOW FCE

// ^INIT SCRIPT
  dx = new Array(); xp = new Array(); yp = new Array(); am = new Array(); stx = new Array(); sty = new Array();  
  divs = new Array(); /*imgs = new Array();*/
  
  /*c = document.createElement('canvas');
  c.setAttribute('id', 'snow_script_canvas');
  c.style.position = 'absolute';
  c.style.top = '0px';
  c.style.left = '0px';
  document.body.appendChild(c);

  canvas = c.getContext('2d');*/
  
  snow_resize();
  
  for (i = 0; i < n; ++ i) {  
    dx[i]  = 0                                                                  //set x coordinate variables
    xp[i]  = x_limit + Math.random()*(doc_width-2*x_limit);                     //set x position variables
    yp[i]  = Math.random()*doc_height;                                          //set y position variables

    am[i]  =          Math.random()*a_rate;                                     //set amplitude variables
    stx[i] = x_step + Math.random()/x_rate;                                     //set step variables
    sty[i] = y_step + Math.random()/y_rate;                                     //set step variables

    var file_index = Math.floor(Math.pow(Math.random(), pow)*v);
    
    /*imgs[i] = new Image();
    imgs[i].src = file_dir+file_prefix+file_index+file_sufix;
    imgs[i].onload = function() { if (--wait == 0) snow() };*/
    
    divs[i] = document.createElement('div');
    divs[i].setAttribute('id', div_prefix+i);
    divs[i].setAttribute('class', div_prefix);
    divs[i].style.position = 'absolute';
    divs[i].style.top = '15px';
    divs[i].style.left = '15px';
    divs[i].style.zIndex = i;
    divs[i].innerHTML = '<img src="'+file_dir+file_prefix+file_index+file_sufix+'" />';
    document.body.appendChild(divs[i]);
  }
  
  snow();
// $INIT SCRIPT

