text: 
  // http://www.netlobo.com/javascript_background_fade.html
  /*************************************************************
  * NLB Background Color Fader v1.0
  * Author: Justin Barlow - www.netlobo.com
  *
  * Description:
  * The Background Color Fader allows you to gradually fade the
  * background of any HTML element.
  *
  * Usage:
  * Call the Background Color Fader as follows:
  *   NLBfadeBg( elementId, startBgColor, endBgColor, fadeTime );
  *
  * Description of Parameters
  *   elementId - The id of the element you wish to fade the
  *             background of.
  *   startBgColor - The background color you wish to start the
  *             fade from.
  *   endBgColor - The background color you want to fade to.
  *   fadeTime - The duration of the fade in milliseconds.
  *************************************************************/
  
  var nlbFade_hextable = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; // used for RGB to Hex and Hex to RGB conversions
  var nlbFade_elemTable = new Array( ); // global array to keep track of faded elements
  var nlbFade_t = new Array( ); // global array to keep track of fading timers
  var NLBfadeBg = function ( elementId, startBgColor, endBgColor, fadeTime )
  {
  	var timeBetweenSteps = Math.round( Math.max( fadeTime / 300, 30 ) );
  	var nlbFade_elemTableId = nlbFade_elemTable.indexOf( elementId );
  	if( nlbFade_elemTableId > -1 )
  	{
  		for( var i = 0; i < nlbFade_t[nlbFade_elemTableId].length; i++ )
  			clearTimeout( nlbFade_t[nlbFade_elemTableId][i] );
  	}
  	else
  	{
  		nlbFade_elemTable.push( elementId );
  		nlbFade_elemTableId = nlbFade_elemTable.indexOf( elementId );
  	}
  	var startBgColorRGB = hexToRGB( startBgColor );
  	var endBgColorRGB = hexToRGB( endBgColor );
  	var diffRGB = new Array( );
  	for( var i = 0; i < 3; i++ )
  		diffRGB[i] = endBgColorRGB[i] - startBgColorRGB[i];
  	var steps = Math.ceil( fadeTime / timeBetweenSteps );
  	var nlbFade_s = new Array( );
  	for( var i = 1; i <= steps; i++ )
  	{
  		var changes = new Array( );
  		for( var j = 0; j < diffRGB.length; j++ )
  			changes[j] = startBgColorRGB[j] + Math.round( ( diffRGB[j] / steps ) * i );
  		if( i == steps )
  			nlbFade_s[i - 1] = setTimeout( 'document.getElementById("'+elementId+'").style.backgroundColor = "'+endBgColor+'";', timeBetweenSteps*(i-1) );
  		else
  			nlbFade_s[i - 1] = setTimeout( 'document.getElementById("'+elementId+'").style.backgroundColor = "'+RGBToHex( changes )+'";', timeBetweenSteps*(i-1) );
  	}
  	nlbFade_t[nlbFade_elemTableId] = nlbFade_s;
  }
  function hexToRGB( hexVal )
  {
  	hexVal = hexVal.toUpperCase( );
  	if( hexVal.substring( 0, 1 ) == '#' )
  		hexVal = hexVal.substring( 1 );
  	var hexArray = new Array( );
  	var rgbArray = new Array( );
  	hexArray[0] = hexVal.substring( 0, 2 );
  	hexArray[1] = hexVal.substring( 2, 4 );
  	hexArray[2] = hexVal.substring( 4, 6 );
  	for( var k = 0; k < hexArray.length; k++ )
  	{
  		var num = hexArray[k];
  		var res = 0;
  		var j = 0;
  		for( var i = num.length - 1; i >= 0; i-- )
  			res += parseInt( nlbFade_hextable.indexOf( num.charAt( i ) ) ) * Math.pow( 16, j++ );
  		rgbArray[k] = res;
  	}
  	return rgbArray;
  }
  function RGBToHex( rgbArray )
  {
  	var retval = new Array( );
  	for( var j = 0; j < rgbArray.length; j++ )
  	{
  		var result = new Array( );
  		var val = rgbArray[j];
  		var i = 0;
  		while( val > 16 )
  		{
  			result[i++] = val%16;
  			val = Math.floor( val/16 );
  		}
  		result[i++] = val%16;
  		var out = '';
  		for( var k = result.length - 1; k >= 0; k-- )
  			out += nlbFade_hextable[result[k]];
  		retval[j] = padLeft( out, '0', 2 );
  	}
  	out = '#';
  	for( var i = 0; i < retval.length; i++ )
  		out += retval[i];
  	return out;
  }
  if (!Array.prototype.indexOf) {
  	Array.prototype.indexOf = function( val, fromIndex ) {
  		if( typeof( fromIndex ) != 'number' ) fromIndex = 0;
  		for( var index = fromIndex, len = this.length; index < len; index++ )
  			if( this[index] == val ) return index;
  		return -1;
  	}
  }
  function padLeft( string, character, paddedWidth )
  {
  	if( string.length >= paddedWidth )
  		return string;
  	else
  	{
  		while( string.length < paddedWidth )
  			string = character + string;
  	}
  	return string;
  }
  
  
  if (typeof exports !== 'undefined') {
  	exports.NLBfadeBg = NLBfadeBg;
  }
  