//---------------------------- INICIO OBJETO FADER 2.1 ----------------------------//
//	+	requiere la libreria prototype.js
/*	+	clases definidas en css para ese identificador
		.fade0 {background-color: #ffffcc !important;}
		.fade1 {background-color: #ffffc8 !important;}
		.fade2 {background-color: #ffffc4 !important;}
		.fade3 {background-color: #ffffc1 !important;}
		.fade4 {background-color: #ffffbd !important;}
		.fade5 {background-color: #ffffb9 !important;}
		.fade6 {background-color: #ffffb5 !important;}
		.fade7 {background-color: #ffffb1 !important;}
		.fade8 {background-color: #ffffad !important;}
		.fade9 {background-color: #ffffaa !important;}
		.fade10 {background-color: #ffffa6 !important;}
		.fade11 {background-color: #ffffa2 !important;}*/
/*	+	revision 2.1: nuevas clases para el fade-gris
		.fade0-gris {background-color: #F5F5F5 !important;}
		.fade1-gris {background-color: #F1F1F1 !important;}
		.fade2-gris {background-color: #EDEDED !important;}
		.fade3-gris {background-color: #E9E9E9 !important;}
		.fade4-gris {background-color: #E5E5E5 !important;}
		.fade5-gris {background-color: #E1E1E1 !important;}
		.fade6-gris {background-color: #DCDCDC !important;}
		.fade7-gris {background-color: #D8D8D8 !important;}
		.fade8-gris {background-color: #D4D4D4 !important;}
		.fade9-gris {background-color: #D0D0D0 !important;}
		.fade10-gris {background-color: #CCCCCC !important;}
		.fade11-gris {background-color: #C8C8C8 !important;}*/
/*	+	javascript necesario para su uso
	//	-	array de clases css
	var aFases = ['fade0', 'fade1', 'fade2', 'fade3', 'fade4', 'fade5', 'fade6', 'fade7', 'fade8', 'fade9', 'fade10', 'fade11', 'fade10', 'fade9', 'fade8', 'fade7', 'fade6', 'fade5', 'fade4', 'fade3', 'fade2', 'fade1', 'fade0'];
	//	-	nueva instancia del objeto Fader
	var oFaderForm = new Fader();
	//	-	ejecucion del efecto, aplicado a un identificador, con el array de fases y en un tiempo (milisegundos)
	oFader.fade($('elemento'), aFases, 1200);*/
var Fader = Class.create();

Fader.prototype = {
	initialize: function(){
		//	funcion de inicio, se ejecuta al crear la instancia de la clase
	},
	fade: function(poElemento, paFases, piTiempoTotal){
		//	copio los valores a variables globales, para evitar problemas con los temporizadores
		window.Fader_oElemento = poElemento;
		//	array con el numero de iteraciones que ha de hacer el objeto,
		//	equivalentes a las clases CSS definidas para el (obligatorio)
		//	ejemplo: ['fade0', 'fade1', 'fade2', 'fade3']
		window.Fader_aFases = paFases;
		//	fase actual
		window.Fader_iFase = 0;
		//	tiempo total del efecto visual
		window.Fader_iTiempoTotal = piTiempoTotal;

		var fIteracion = function(){
			if (window.Fader_iFase > 0){
				window.Element.removeClassName(window.Fader_oElemento, window.Fader_aFases[window.Fader_iFase - 1]);
			}
			if (window.Fader_aFases[window.Fader_iFase]){
				window.Element.addClassName(window.Fader_oElemento, window.Fader_aFases[window.Fader_iFase]);
//	window.status = window.Fader_oElemento.className;
			}
			window.Fader_iFase++;
		}
		
		for (var i = 0; i <= paFases.length; i++){
			var iTiempo = parseInt(window.Fader_iTiempoTotal/window.Fader_aFases.length*(i+1));
			window.setTimeout(fIteracion, iTiempo);
		}
		
		var fFinal = function(){
			window.Element.removeClassName(window.Fader_oElemento, window.Fader_aFases[window.Fader_aFases.length - 1]);
//	window.status = window.Fader_oElemento.className;
		}
		var iTiempo = parseInt(window.Fader_iTiempoTotal/window.Fader_aFases.length*(window.Fader_aFases.length+2));
		
		window.setTimeout(fFinal, iTiempo);
	},
	kill: function(){
		//	elimina la instancia actual de objeto en mitad de un fade, por si es necesario
		if (window.Fader_oElemento){
			for (var i = 0; i < window.Fader_aFases.length; i++){
				window.Element.removeClassName(window.Fader_oElemento, window.Fader_aFases[i]);
			}
		}
	}
}

/*	funcion de llamada a un objeto Fader por defecto	*/
function fadeElement(poElement, pcOption){
	var cOption = (pcOption) ? pcOption : '';//	por si necesita un fade alternativo
	var aFases = ['fade0'+cOption, 'fade1'+cOption, 'fade2'+cOption, 'fade3'+cOption, 'fade4'+cOption, 'fade5'+cOption, 'fade6'+cOption, 'fade7'+cOption, 'fade8'+cOption, 'fade9'+cOption, 'fade10'+cOption, 'fade11'+cOption, 'fade10'+cOption, 'fade9'+cOption, 'fade8'+cOption, 'fade7'+cOption, 'fade6'+cOption, 'fade5'+cOption, 'fade4'+cOption, 'fade3'+cOption, 'fade2'+cOption, 'fade1'+cOption, 'fade0'+cOption];
	var oFader = new Fader();
	oFader.fade(poElement, aFases, 3000);
}
//---------------------------- FIN OBJETO FADER 2.0 ----------------------------//
