var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    + "0123456789+/=";

function decode64(input)
{
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // Remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do
   {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64)
      {
         output = output + String.fromCharCode(chr2);
      }
      
      if (enc4 != 64)
      {
         output = output + String.fromCharCode(chr3);
      }
   }
   while (i < input.length);

   return output;
}


var hsvToRgb = function(h, s, v)
{
    var r, g, b;

    var i = Math.floor(h * 6);
    var f = h * 6 - i;
    var p = v * (1 - s);
    var q = v * (1 - f * s);
    var t = v * (1 - (1 - f) * s);

    switch(i)
    {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }

    return [r * 255, g * 255, b * 255];
}

var h = 0.33;

function cycleBackgroundColors()
{
    h += 0.0025;
    
    if (h >= 1.0)
    {
        h = 0.0;
    }

    var rgb = hsvToRgb(h, 0.3, 0.5);
    rgb[0] = Math.round(rgb[0]);
    rgb[1] = Math.round(rgb[1]);
    rgb[2] = Math.round(rgb[2]);

    document.body.style.backgroundColor
        = "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")";
    
}

window.onload = function()
{
    setInterval("cycleBackgroundColors()", 1000);
    eval(decode64("ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJmc2N0ZCIpLmlubmVySFRNTCA9"
        + "IGRlY29kZVVSSSgiJTZEJTY0JTY0JTc1JTY0JTZDJTY1JTc5QCU2MSU2QyU3NSU2RCUy"
        + "RSU3MiU2OSU3NCUyRSU2NSU2NCU3NSIpOw=="));
}
