/*                                                                 DEGRADADO DE LINKS
===================================================================================== */

Color_Inicial = "#202020"; 			// Color del link en el evento MouseOut
Color_Final = "#F59C24"; 			// Color del link en el evento MouseOver 

Pasos_In = 10; 					// Retardo del degradado de entrada 
Pasos_Out = 20; 				// Retardo del degradado de salida 

Auto_Degradado = true;				// TRUE: Todos los link se autodegradan 
Afectar_Clases = true;				// TRUE: Todas las clases CSS tienen degradado 


/* *********************************** */
Hexa = new Crear_Array(16);
 
// Inicializamos Array
for(var i = 0; i < 10; i++) 
	Hexa[i] = i; 
Hexa[10]="a"; Hexa[11]="b"; Hexa[12]="c"; Hexa[13]="d"; Hexa[14]="e"; Hexa[15]="f"; 

document.onmouseover = Mouse_Over; 
document.onmouseout = Mouse_Out; 

Color_Inicial = dehexize(Color_Inicial.toLowerCase()); 
Color_Final = dehexize(Color_Final.toLowerCase()); 


var Degrad_Id = new Array(); 

/*                                      Funcion DEHEXIZE
/******************************************************* */
function dehexize(Color){ 
	var Array_Colores = new Crear_Array(3); 

	for (i=1; i<7; i++){ 
		for (j=0; j<16; j++){ 
			if (Color.charAt(i) == Hexa[j]){ 
				if (i%2 !=0) 
					Array_Colores[Math.floor((i-1)/2)]=eval(j)*16; 
				else 
					Array_Colores[Math.floor((i-1)/2)]+=eval(j); 
			} // IF 
		} // FOR 2
	} // FOR 1
	
	return Array_Colores; 
} 


/*                                    Funcion MOUSE_OVER
/******************************************************* */
function Mouse_Over() { 
	if(document.all){ 
		var srcElement = event.srcElement; 

		if ((srcElement.tagName == "A" && Auto_Degradado) || srcElement.className == "degradado" || (Afectar_Clases && srcElement.className.indexOf("degradado") != -1)) 
			Degradado(Color_Inicial,Color_Final,srcElement.uniqueID,Pasos_In); 
	} // IF
} 


/*                                     Funcion MOUSE_OUT
/******************************************************* */
function Mouse_Out() { 
	if (document.all){ 
		var srcElement = event.srcElement; 

		if ((srcElement.tagName == "A" && Auto_Degradado) || srcElement.className == "degradado" || (Afectar_Clases && srcElement.className.indexOf("degradado") != -1)) 
			Degradado(Color_Final,Color_Inicial,srcElement.uniqueID,Pasos_Out); 
	} // IF
} 


/*                                   Funcion CREAR_ARRAY
/******************************************************* */
function Crear_Array(n) { 
	this.length = n; 
	for(var i = 1; i <= n; i++) 
		this[i] = 0; 
		
	return this; 
} 


/*                                        Funcion TO_HEX
/******************************************************* */
function To_Hex(i) { 
	if (i < 0) 
		return "00"; 
	else if (i > 255) 
		return "ff"; 
	else 
		return "" + Hexa[Math.floor(i/16)] + Hexa[i%16];
} 


/*                                 Funcion APLICAR_COLOR
/******************************************************* */
function Aplicar_Color(r, g, b, element) { 
	var hr = To_Hex(r);
	var hg = To_Hex(g);
	var hb = To_Hex(b); 

	element.style.color = "#"+hr+hg+hb; 
} 


/*                                     Funcion DEGRADADO
/******************************************************* */
function Degradado(s,e, element,step){ 
	var sr = s[0]; var sg = s[1]; var sb = s[2]; 
	var er = e[0]; var eg = e[1]; var eb = e[2]; 

	if (Degrad_Id[0] != null && Degradado[0] != element){ 
		Aplicar_Color(sr,sg,sb,eval(Degrad_Id[0])); 
		var i = 1; 

		while(i < Degrad_Id.length){ 
			clearTimeout(Degrad_Id[i]); 
			i++; 
		} // WHILE 
	} // IF

	for(var i = 0; i <= step; i++) { 
		Degrad_Id[i+1] = setTimeout("Aplicar_Color(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +er+ " * (" +i+ "/" + 
		step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +eg+ " * (" +i+ "/" +step+ 
		")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +eb+ " * (" +i+ "/" +step+ ")),"+element+");",i*step); 
	} // FOR
	
	Degrad_Id[0] = element; 
}
