// Changes the foreground color from the start value (sr,sg,sb) to the
// end color (er,eg,eb) over the specified length of time.  The delay value
// specifies the time delay before the changes take place although the
// start color is set immediately.  The element is specified by the given id.
function fade_in( id, sr, sg, sb, er, eg, eb, length, delay )
{
  if( document.getElementById && document.getElementById(id).style )
  {
    if( !delay || delay < 0 ) delay = 0;
    document.getElementById(id).style.color='rgb(' + sr + ','+ sg + ','+ sb + ')';
    setTimeout("_fade_in('"+id+"',"+sr+","+sg+","+sb+","+er+","+eg+","+eb+","+length+",0)", delay);
  }
}

// Do not call this function directly.
function _fade_in( id, sr, sg, sb, er, eg, eb, length, level)
{
  if( level < length )
  {
    var p = level/length;
    var r = 100*((1-p)*sr + p*er)/255;
    var g = 100*((1-p)*sg + p*eg)/255;
    var b = 100*((1-p)*sb + p*eb)/255;

    document.getElementById(id).style.color='rgb(' + r + '%,'+ g + '%,'+ b + '%)';
    level+=12;
    setTimeout("_fade_in('"+id+"',"+sr+","+sg+","+sb+","+er+","+eg+","+eb+","+length+","+level+")", 12);
  }
  else
  {
    document.getElementById(id).style.color='rgb(' + er + ','+ eg + ','+ eb + ')';
  }
}