Source to fade.htm

 

<html>
<head>
<title>Color fade test</title>
</head>
<script language="JavaScript">
<!--

// Analysis

/*****************************************************************
 *                                                               *
 * This script adapted from the original written by Travis Simon *
 * for apcmag. You can find the JavaScript tutorial online at    *
 * http://apcmag.com.                                            *
 *                                                               *
 * Feel free to use any portion of the script, but please        *
 * include this header so that others may benefit from the       *
 * material as well.                                             *
 *                                                               *
 *****************************************************************/

// toHex converts from decimal to Hex
function toHex(number) 
{

var temp=0;
var hexNumber = "";

var hexString = "0123456789ABCDEF";

hexNumber += hexString.charAt(Math.floor(number/16));
hexNumber += hexString.charAt(Math.floor(number%16));

return hexNumber;
}


// toDec assumes the Hex number is between 0 & 255
function toDec(number)
{

var hexString = "0123456789ABCDEF";
var dec = 0;

dec = hexString.indexOf(number.charAt(0)) * 16 + 
hexString.indexOf(number.charAt(1));

return dec;
}


// minDif finds the min value > 0 
// function assumes values in order (ie. difRed, difGreen, difBlue)
function minDif(a, b, c)
{

var min = "";
if(Math.abs(a)>=Math.abs(b))
	if(Math.abs(a)>=Math.abs(c))
		if(Math.abs(b==0) && Math.abs(c==0))
			min = "red";
		else if(Math.abs(b==0) || (Math.abs(b)>Math.abs(c) && Math.abs(c)!=0))
			min = "blue";
		else 
			min = "green";
	else
		if(Math.abs(a)==0 && Math.abs(b) ==0)
			min= "blue";
		else if(Math.abs(b)==0)
			min= "red";
		else 
			min = "green";
else 
	if(Math.abs(b)>=Math.abs(c))
		if(Math.abs(a==0) && Math.abs(c==0))
			min = "green";
		else if(Math.abs(a==0) || (Math.abs(a)>Math.abs(c) && Math.abs(c)!=0))
			min= "blue";
		else
			min = "red";
	else
		if(Math.abs(a)==0)
			min = "green";
		else
			min = "red";

return min;
}


// bgFade function
function bgFade(steps, red, green, blue, rSteps, gSteps, bSteps)
{
for(var x=0; x < steps; x++)
	{
	red += rSteps;		
	green += gSteps;
	blue += bSteps;
	document.bgColor = "#" + toHex(red) + toHex(green) + toHex(blue);
	}
}


// Fade function
function fade(newRed, newGreen, newBlue)
{
var steps;
var Rsteps;
var Gsteps;
var Bsteps;

// separate and convert hex RGB to decimal values
// bgcolor is in form of "#FFFFFF", so first char 
// must be skipped
var oldBG = document.bgColor;

var oldRed = toDec(oldBG.charAt(1).toUpperCase() + 
oldBG.charAt(2).toUpperCase());
var oldGreen = toDec(oldBG.charAt(3).toUpperCase() + 
oldBG.charAt(4).toUpperCase());
var oldBlue = toDec(oldBG.charAt(5).toUpperCase() + 
oldBG.charAt(6).toUpperCase());

// calculate the difference btw new and old RGB values
var difRed = newRed - oldRed;
var difGreen = newGreen - oldGreen;
var difBlue = newBlue - oldBlue;

var min = minDif(difRed, difGreen, difBlue);

// calculate # of increment steps and individual increments
if(min == "red")
	{
	steps = Math.abs(difRed);
	if(difRed > 0)
		Rsteps = 1;
	else
		Rsteps = -1;
	Gsteps = difGreen / Math.abs(difRed);
	Bsteps = difBlue / Math.abs(difRed);
	}
else if(min == "green")
	{
	steps = Math.abs(difGreen);
	Rsteps = difRed / Math.abs(difGreen);
	if(difGreen > 0)
		Gsteps = 1;
	else
		Gsteps = -1;
	Bsteps = difBlue / Math.abs(difGreen);
	}
else 
	{
	steps = Math.abs(difBlue);
	Rsteps = difRed / Math.abs(difBlue);
	Gsteps = difGreen / Math.abs(difBlue);
	if(difBlue > 0)
		Bsteps = 1;
	else
		Bsteps = -1;
	}

bgFade(steps, oldRed, oldGreen, oldBlue, Rsteps, Gsteps, Bsteps);
document.bgColor = "#" + toHex(newRed) + toHex(newGreen) + toHex(newBlue);
document.fgColor = "#" + toHex(newBlue) + toHex(newRed) + toHex(newGreen);

}

var fadeToR;
var fadeToG;
var fadeToB;

document.bgColor ="#FFFFFF";

while(true)
	{
	fadeToR = prompt("Enter value for Red between 0 and 255 ('Quit' exits).", "0");
	if(fadeToR == null || fadeToR.toLowerCase() == "quit" || fadeToR > 255 || fadeToR < 0)
		break;
	fadeToG = prompt("Enter value for Green between 0 and 255 ('Quit' exits).", "0");
	if(fadeToG == null || fadeToG.toLowerCase() == "quit" || fadeToG > 255 || fadeToG < 0)
		break;
	fadeToB = prompt("Enter value for Blue between 0 and 255 ('Quit' exits).", "0");
	if(fadeToB.toLowerCase() == "quit" || fadeToB.toLowerCase() == "quit" ||fadeToB > 255 || fadeToB < 0)
		break;
	
	fade(fadeToR, fadeToG, fadeToB);
	}

// -->
</script>
<body>
</body>
</html>


 

Execute code or examples page