/* ================================================================
This copyright notice must be untouched at all times.

The original version of this script
is available at http://www.nuff-respec.com/
Copyright (c) 2005-2007 Daniel Bulli. All rights reserved.
This code may be modified in any way to fit your requirements.
=================================================================== */

	var hex_array = new create_array(0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f');
		
	// -------------------------------------------------------------
	function create_array() 
	{
		this.length = create_array.arguments.length;
		for (var i = 0; i < this.length; i++)
			this[i] = create_array.arguments[i];
			
		return this;
	}


	// -------------------------------------------------------------	
	function hex_to_rgb(hex_color)
	{
		var rgb_array = new create_array(0,0,0);
		
		hex_color = hex_color.toLowerCase();
		
		for (var i=1; i<=6; i++)
		{
			for (var j=0; j<16; j++)
			{
				if (hex_color.charAt(i) == hex_array[j])
				{
					if (i%2 !=0)
						rgb_array[Math.floor((i-1)/2)]=eval(j)*16;
					else
						rgb_array[Math.floor((i-1)/2)]+=eval(j);
				}
			}
		}
		
		return rgb_array;	
	}
	
	// -------------------------------------------------------------	
	function rgb_to_hex_value(rgb_color)
	{	
		if (rgb_color < 0)
			return "00";
		else if (rgb_color > 255)
			return "ff";
		else
			return "" + hex_array[Math.floor(rgb_color/16)] + hex_array[rgb_color%16];
	}
	
	
	// -------------------------------------------------------------	
	function rgb_to_hex(rr,gg,bb) 
	{	
		return "#" + rgb_to_hex_value(rr)+rgb_to_hex_value(gg)+rgb_to_hex_value(bb);
	}	
	


	// -------------------------------------------------------------
	function do_step_style(container,element_to_style,sub_element_to_style,start_val,end_val,style_prop,reset) 
	{
		//IF WE DON'T SUPPORT getElementById or no container
		if (!document.getElementById || !document.getElementById(container)) return false;
	
		//GET ALL elements IN containter
		var elements = document.getElementById(container).getElementsByTagName(element_to_style);

		var cur_step = 0;
		
		if(style_prop == 'color')
		{
			var rgb_start= hex_to_rgb(start_val.toLowerCase());
			var rgb_end  = hex_to_rgb(end_val.toLowerCase());
			

			var r_s = rgb_start[0];
			var g_s = rgb_start[1];
			var b_s = rgb_start[2];
			
			var r_e = rgb_end[0];
			var g_e = rgb_end[1];
			var b_e = rgb_end[2];			
		}
		else if(style_prop == 'fontSize')
		{
			var rgb_start= hex_to_rgb(start_val.toLowerCase());
			var rgb_end  = hex_to_rgb(end_val.toLowerCase());
			

			var f_s = start_val;
			var f_e = end_val;		
		}
		else
		{
			return false;
		}
		
		//LOOP OVER elements to add fade
		var el = elements.length - 1;
		for (var i = 0; i < elements.length; i++)
		{
			var element = elements[i];
			
			if(sub_element_to_style != null)
			{
				if(!element.getElementsByTagName(sub_element_to_style)[0]) return false;
				
				element = element.getElementsByTagName(sub_element_to_style)[0];
			}

			if(style_prop == 'color')
			{
				var r_c  =	Math.floor(r_s*((el-cur_step)/el) + r_e*(cur_step/el));
				var g_c  =	Math.floor(g_s*((el-cur_step)/el) + g_e*(cur_step/el));
				var b_c  =	Math.floor(b_s*((el-cur_step)/el) + b_e*(cur_step/el));		
				
				if(reset)
				{
					element.style.color = '';
				}
				else
				{
					element.style.color = '' + rgb_to_hex(r_c,g_c,b_c);					
				}
			}
			else if(style_prop == 'fontSize')
			{
				var f_c  = Math.round((f_s*((el-cur_step)/el) + f_e*(cur_step/el))*100)/100;	
				
				if(reset)
				{
					element.style.fontSize = '';
				}
				else
				{
					element.style.fontSize = '' + f_c + 'em';				
				}				
	
			}			
			
			cur_step++;
			
		}
		
		return false;
	}
	
	
	
//---------------------------------------------
function write_flash_css()
{
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="324" height="200" id="flash-style-with-css"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="http://www.nuff-respec.com/external/flash-style-with-css.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="base" value="/external/" /><embed src="http://www.nuff-respec.com/external/flash-style-with-css.swf" base="/external/" quality="high" bgcolor="#ffffff" width="324" height="200" name="flash-style-with-css" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>');
}
	
//---------------------------------------------
function toggle_search()
{
	var ssi = document.getElementById('ss-i');
	var ssb = document.getElementById('ss-b');

        
        if (ssi.className.match('hide'))
        {	
			ssi.className = "";
			ssb.className = "";
			ssi.focus();
		}
		else
		{
			ssi.className = "ss-hide";
			ssb.className = "ss-hide";
		}
	return true;	
}

//---------------------------------------------
function init_search()
{
	//label
	var lbl = document.getElementById('ss-l');
	lbl.onclick = function()
	{
		toggle_search();
	}
	
	var ssi = document.getElementById('ss-i');
	var ssb = document.getElementById('ss-b');
	ssi.className = "ss-hide";
	ssb.className = "ss-hide";	
}


//http://dean.edwards.name/weblog/2006/06/again/
   function init() 
   {
       // quit if this function has already been called
       if (arguments.callee.done) return;

       // flag this function so we don't do the same thing twice
       arguments.callee.done = true;


		if (!document.getElementById || !document.getElementById('ss-l')) return;

		init_search();
		do_step_style('cssgallery','li','p','#666666','#dddddd','color');
		do_step_style('cssgallery','li','a','#6A2680','#E6B6E6','color');
		do_step_style('cssgallery','li',null,'1.5','.8','fontSize');
		
		do_step_style('progressive','li','p','#666666','#cccccc','color');
		do_step_style('progressive','li','a','#cf852c','#cccccc','color');
		do_step_style('progressive','li',null,'1.5','.9','fontSize');		
   };

   /* for Mozilla */
   if (document.addEventListener) {
       document.addEventListener("DOMContentLoaded", init, false);
   }

// for Internet Explorer (using conditional comments)
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
        init(); // call the onload handler
    }
};
/*@end @*/


/* for other browsers */
window.onload = init;
