/************************************************************** 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function NLBfadeBg( 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;}