﻿// ***************************************************************************
// fade.js
// by i am jack's design (http://www.iamjacksdesign.com)
// last modified: 2/20/05
// ***************************************************************************

// FADE.JS WORKS OFF OF RGB VALUES FOR IT'S BASE COLOR. 
// SET THE THREE VARIABLES BELOW TO THE RED, GREEN AND BLUE VALUES FOR YOUR 
// DESIRED BASE COLOR.

var FADE_RED = 00;
var FADE_GREEN = 120;
var FADE_BLUE = 193;

var RED_START = 00;
var GREEN_START = 120;
var BLUE_START = 193;

var RED_END = 249;
var GREEN_END = 253;
var BLUE_END = 256;

var RED_STEP = 13;
var GREEN_STEP = 6;
var BLUE_STEP = 3;

// THE THREE VARIABLES BELOW DEFINE THE MOVEMENT OF THE FADE:
//
// 		FADE_HOLD 	= Time (in milliseconds) that your base color lasts
//					  before the fade begins.
//		FADE_SPEED 	= Time (in milliseconds) that each color of the fade lasts
//		FADE_STEP	= Increase in the RGB value per color change

var FADE_HOLD = 500;
var FADE_SPEED = 50;
var FADE_STEP = 25;





var containers;
var originalColours;


// FOR BASIC FUNCTIONALITY, LEAVE EVERYTHING BELOW THIS POINT AS IS.

function fade(container)
{
	if (fade_r == 0) fade_r == FADE_RED;
	if (fade_g == 0) fade_g == FADE_GREEN;
	if (fade_b == 0) fade_b == FADE_BLUE;
	
	if (fade_r + fade_g + fade_b != (255 * 3))
	{	
		document.getElementById(container).style.background = "rgb(" + fade_r + "," + fade_g + "," + fade_b + ")";
		
		if ((fade_r == FADE_RED) && (fade_g == FADE_GREEN) && (fade_b == FADE_BLUE))
		{
			setTimeout('fade("' + container + '")', FADE_HOLD)
		}
		else
		{	
			setTimeout('fade("' + container + '")', FADE_SPEED)
		}
		
		if ((fade_r >= 255) || (fade_r + FADE_STEP > 255)) fade_r = 255; else fade_r = fade_r + FADE_STEP;
		if ((fade_g >= 255) || (fade_g + FADE_STEP > 255)) fade_g = 255; else fade_g = fade_g + FADE_STEP;
		if ((fade_b >= 255) || (fade_b + FADE_STEP > 255)) fade_b  = 255; else fade_b = fade_b + FADE_STEP;
	}
	else
	{	
		document.getElementById(container).style.background = "rgb(" + fade_r + "," + fade_g + "," + fade_b + ")";
		fade_r = FADE_RED;
		fade_g = FADE_GREEN;
		fade_b = FADE_BLUE;
	}
}

function startfadearray(theArray)
{
    containers = theArray;
    originalColours = new Array();
    
    //alert("Starting Fade");
    
	for (keyVar in containers)
	{  
	    originalColours.push(document.getElementById(containers[keyVar]).style.background);
	    document.getElementById(containers[keyVar]).style.background = "rgb(" + FADE_RED + "," + FADE_GREEN + "," + FADE_BLUE + ")";
	}
	
	//setTimeout("alert('boo!')", 3000);
	var x = 'fadearray(' + RED_START + ',' + GREEN_START + ',' + BLUE_START +')';
    setTimeout(x, FADE_HOLD);
}

function fadearray(fade_r, fade_g, fade_b)
{
	if (fade_r < RED_END ||
	    fade_g < GREEN_END ||
	    fade_b < BLUE_END)
	{	
	    for (keyVar in containers)
	    {
	        //alert(containers[keyVar]);
	        document.getElementById(containers[keyVar]).style.background = "rgb(" + fade_r + "," + fade_g + "," + fade_b + ")";
	    }
		if ((fade_r >= RED_END) || (fade_r + FADE_STEP > RED_END)) fade_r = RED_END; else fade_r = fade_r + RED_STEP;
		if ((fade_g >= GREEN_END) || (fade_g + FADE_STEP > GREEN_END)) fade_g = GREEN_END; else fade_g = fade_g + GREEN_STEP;
		if ((fade_b >= BLUE_END) || (fade_b + FADE_STEP > BLUE_END)) fade_b  = BLUE_END; else fade_b = fade_b + BLUE_STEP;	
			    		
		var x = 'fadearray(' + fade_r + ',' + fade_g + ','+ fade_b + ')';
		
		setTimeout(x, FADE_SPEED);
	}
	else
	{
	    var i = 0;
	    for (keyVar in containers)
	    {
	        document.getElementById(containers[keyVar]).style.background = originalColours[i]; //"rgb(" + fade_r + "," + fade_g + "," + fade_b + ")"; //
	        i++;     //
	    }
	}
}


// Array.push() - Add an element to the end of an array, return the new length
//if( typeof Array.prototype.push==='undefined' ) {
// Array.prototype.push = function() {
//  for( var i = 0, b = this.length, a = arguments, l = a.length; i<l; i++ ) {
//   this[b+i] = a[i];
//  }
//  return this.length;
// };
//}



