// ********************
// Silicon valleys,
// Germanium hills,
// Digital journeys,
// And virtual thrills.

// Greetings, O hacker,
// Feeling unwell?
// Microchip tracker,
// Welcome to hell.
// ********************

// How to use:
// fader(start_R, start_G, start_B, end_R, end_G, end_B, step);
//   start_R: Red   of RGB for starting
//   start_G: Green of RGB for starting
//   start_B: Blue  of RGB for starting
//   end_R  : Red   of RGB for ending
//   end_G  : Green of RGB for ending
//   end_B  : Blue  of RGB for ending
//   step   : step count   2=slow   255=fast

// Screen Fader
// Copyright © Richard J. Butler 2001
function generateArray(n)
{
   this.length = n;
   for(var i=1; i<=n; i++ )
   this[i] = 0;

   return this;
}

hex = new generateArray(16);
   hex[0] = 0; hex[1] = 1; hex[2] = 2; hex[3] = 3; hex[4] = 4; hex[5] = 5;
   hex[6] = 6; hex[7] = 7; hex[8] = 8; hex[9] = 9; hex[10] = "a";
   hex[11] = "b"; hex[12] = "c"; hex[13] = "d"; hex[14] = "e"; hex[15] = "f";

function hexx(i)
{
   if(i < 0) return "00";
   else if (i > 255) return "ff";
   else return "" + hex[Math.floor(i / 16)] + hex[i % 16];
}

function setbgColor(r, g, b)
{
   var xr = hexx(r);
   var xg = hexx(g);
   var xb = hexx(b);
   document.bgColor = "#" + xr + xg + xb;
}

function fader(xr, xg, xb, yr, yg, yb, step)
{
   for(var i=0; i <= step; i++) {
      setbgColor(Math.floor( xr * (( step - i )/ step ) + yr * ( i / step )),
      Math.floor(xg * (( step - i )/ step ) + yg * ( i / step )),
      Math.floor(xb * (( step - i )/ step ) + yb * ( i / step )));
   }
}

//fader(255, 255, 255, 0, 0, 0, 100);
fader(1024, 512, 256, 0, 0, 0, 100);

