//must include:
//		jQuery.js    -http://www.jquery.com
//		rgbColor.js	 -http://www.phpied.com/rgb-color-parser-in-javascript/


//takes a CSS selector and a Hex formatted integer to shade by increments
function shadeElements(elementToShade, shadingIncrimentHex){
				
		//shading parameters
		var selector	= elementToShade;
		var increment	= shadingIncrimentHex;
		
		//find the starting color for the selected item and convert it to a number
		var baseColorCSS 	= $(selector).css("color");
		var baseColorRGBObj	= new RGBColor(baseColorCSS);
		var baseColorString	= baseColorRGBObj.toHex().substring(1); //kill the leading '#'
		var baseColorNumber	= parseInt(baseColorString, 16);
		
		//reduce the base color to it's components
		var BaseColorComp = new Array();
		BaseColorComp['r']	= (baseColorNumber & 0xff0000);
		BaseColorComp['g'] 	= (baseColorNumber & 0x00ff00);
		BaseColorComp['b']	= (baseColorNumber & 0x0000ff);
	
			
		//reassign the color of each item to progressively darker colors
		$(selector).each(function(iterator){										
					
					//break the shader into components to interact with the base color
					var colorShader = (iterator * increment);
					var ComponentShader=Array();
					ComponentShader['r']	= (colorShader * 0x010000);
					ComponentShader['g'] 	= (colorShader * 0x000100);
					ComponentShader['b']	= (colorShader * 0x000001);
		
					//create the new color, being careful to keep each component from overflowing
					var newColor = 0;
					
					
					if((BaseColorComp['r'] - ComponentShader['r']) > 0){
							newColor += (BaseColorComp['r']  - ComponentShader['r']);							
					}
					else{
						newColor = (newColor & 0x00ffff);
					}
										
					if((BaseColorComp['g'] - ComponentShader['g']) > 0){
						newColor += (BaseColorComp['g']  - ComponentShader['g']);
					}
					else{
						newColor = (newColor & 0xff00ff);
					}
									
					if((BaseColorComp['b'] - ComponentShader['b']) > 0){
						newColor += (BaseColorComp['b']  - ComponentShader['b']);	
					}
					else{
						newColor = (newColor & 0xffff00);
					}
		
					var newColorTmpStr = "0x" + newColor.toString(16);
					var newColorRGBObj = new RGBColor(newColorTmpStr);
					var newColorStr = newColorRGBObj.toHex();
					
	
					$(this).css({color:newColorStr});	
					
 				});
}

//takes a CSS selector and an array of hex color strings to color elements to the colors in the array
//if there are more elements than colors in the array, then the last array color is used multiple times
function colorElements(elementsToColor, listOfColors){
	
	var selector		= elementsToColor;
	var colorArraySize 	= listOfColors.length;
	
	//color each element asked for according to the list,
	//or by the last color of the list if the list is too short
	$(selector).each(
		function(iterator){
			if(iterator < colorArraySize){
				$(this).css("background-color",listOfColors[iterator]);
			}//if
			else{
				$(this).css("background-color",listOfColors[(colorArraySize-1)]);
			}//else
		}//function(iterator)
	)//.each()
}//function colorElements(v,v)


//$(function(){	shadeElements("div#Accordion1 h2", 0x33);});