// JavaScript Document
var oSlider = new function(){
	this.iniciarEfecto = function(conf){
		var ef = new Slider(conf);		
	}
}

var Slider = function(conf){
	
	var asignarClick = function(indice,cuadro){
		AddEvent(cuadro,'click',function(){
			nextCont(indice+1,true);
		})
		
	}
	
	var nextCont = function(indice,forzar){

		if(!enMovimiento){
			var desde = 0;
			var hasta = 0;
			var propiedad = '';
			
			if(oConf['aleatorio'] && !forzar){
				indice = obtenerRango();
				var siguiente = Ext.get(contGeneral.dom.childNodes[indice-1]);
			}
			else{
				if(!indice){
					var siguiente = Ext.get(contActual.dom.nextSibling);
					if(!siguiente){
						siguiente = Ext.get(contGeneral.dom.firstChild);
					}
				}
				else{
					var siguiente = Ext.get(contGeneral.dom.childNodes[indice-1]);
				}
			}
			if(siguiente.dom.id != contActual.dom.id){
				
				intervaloTrans = clearInterval(intervaloTrans);
				enMovimiento = true;
				
				
				if(oConf['alto'] != 'auto'){
				
					if(oConf['desplazamiento'] == 'transparencia')siguiente.setOpacity(0);
					contActual.dom.style.visibility = 'visible';
					siguiente.dom.style.visibility = 'visible';
					
					contActual.dom.style.zIndex = 1;
					siguiente.dom.style.zIndex = 2;
					if(oConf['desplazamiento'] == 'izquierda'){
						siguiente.dom.style.marginLeft = (-ancho) + 'px';
						desde = -ancho;
						propiedad = 'marginLeft';
					}
					else if(oConf['desplazamiento'] == 'derecha'){
						siguiente.dom.style.marginLeft = (ancho) + 'px';
						desde = ancho;
						hasta = 0;
						propiedad = 'marginLeft';			
					}
					else if(oConf['desplazamiento'] == 'arriba'){
						siguiente.dom.style.marginTop = (-oConf['alto']) + 'px';
						desde = (-oConf['alto']);
						hasta = 0;
						propiedad = 'marginTop';			
					}
					else if(oConf['desplazamiento'] == 'abajo'){
						siguiente.dom.style.marginTop = (oConf['alto']) + 'px';
						desde = oConf['alto'];
						hasta = 0;
						propiedad = 'marginTop';			
					}
					else if(oConf['desplazamiento'] == 'ninguno'){
						siguiente.dom.style.zIndex = 1;
						contActual.dom.style.zIndex = 0;
						if(oConf['paso'] == 'numeracion' || oConf['paso'] == 'titulos' || oConf['paso'] == 'reproducir'){
							contCuadrosClick.childNodes[siguiente.dom.indice].className = 'on';
							contCuadrosClick.childNodes[contActual.dom.indice].className = '';
						}
						
						contActual = siguiente;
						enMovimiento = false;
						if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
		
					}
					else if(oConf['desplazamiento'] == 'transparencia'){
						siguiente.fadeIn({
						 callback : function(){
								siguiente.dom.style.zIndex = 1;
								contActual.dom.style.zIndex = 0;
								contActual = siguiente;				
								enMovimiento = false;
								if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
							 },duration:oConf['tiempoEfecto']
						});
						if(oConf['paso'] == 'numeracion' || oConf['paso'] == 'titulos' || oConf['paso'] == 'reproducir'){
							contCuadrosClick.childNodes[siguiente.dom.indice].className = 'on';
							contCuadrosClick.childNodes[contActual.dom.indice].className = '';
						}
						
					}
					
					
					
					if(propiedad != ''){
						if(oConf['paso'] == 'numeracion' || oConf['paso'] == 'titulos' || oConf['paso'] == 'reproducir'){
							contCuadrosClick.childNodes[siguiente.dom.indice].className = 'on';
							contCuadrosClick.childNodes[contActual.dom.indice].className = '';
						}
					}
					
					if(propiedad == 'marginLeft'){
						siguiente.animate(
							{marginLeft: {from: desde, to: hasta}},
							oConf['tiempoEfecto'], 
							function () {
								siguiente.dom.style.zIndex = 1;
								contActual.dom.style.zIndex = 0;
								contActual.dom.style.visibility = 'hidden';
		
								contActual = siguiente;
								enMovimiento = false;
								
								if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
							
							},
							oConf['efecto']
						);
					}
					else if(propiedad == 'marginTop'){
						siguiente.animate(
							{marginTop: {from: desde, to: hasta}},
							oConf['tiempoEfecto'], 
							function () {
								siguiente.dom.style.zIndex = 1;
								contActual.dom.style.zIndex = 0;
								contActual.dom.style.visibility = 'hidden';	
								contActual = siguiente;
								enMovimiento = false;						
								if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
							
							},
							oConf['efecto']
						);
					}		
				}
				else{
					if(oConf['desplazamiento'] == 'acordeon'){
						desde = contGeneral.dom.offsetHeight;
						hasta = 0;
						ocultarElementos();
						contGeneral.animate(
							{height: {from: desde, to: hasta}},
							oConf['tiempoEfecto'], 
							function () {
								siguiente.dom.style.display = '';
								siguiente.dom.style.visibility = 'visible';							
								contActual.dom.style.display = 'none';
								contActual = siguiente;
								
								contGeneral.animate(
									{height: {from: 0, to: siguiente.dom.offsetHeight}},
									oConf['tiempoEfecto'], 
									function () {
										enMovimiento = false;						
										reubicarElementos();
										if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
									},
									oConf['efecto']
								);							
							},
							oConf['efecto']
						);
	
					}				
					else if(oConf['desplazamiento'] == 'transparencia'){
						ocultarElementos();
						contGeneral.fadeOut({
						 callback : function(){
	
								siguiente.dom.style.display = '';
								contActual.dom.style.display = 'none';
								contActual = siguiente;
	
								contGeneral.fadeIn({
								 callback : function(){
										enMovimiento = false;
										reubicarElementos();									
										if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
									 },duration:oConf['tiempoEfecto']
								});							
							 },duration:oConf['tiempoEfecto']
						});
						if(oConf['paso'] == 'numeracion' || oConf['paso'] == 'titulos' || oConf['paso'] == 'reproducir'){
							contCuadrosClick.childNodes[siguiente.dom.indice].className = 'on';
							contCuadrosClick.childNodes[contActual.dom.indice].className = '';
						}
						
					}
					
				}
			}
			else{
				enMovimiento = false;
			}
		}
	}
	var obtenerRango = function(){
		var i,aleatorio,continuar = true;
		var indexAnt = -1;
		while(continuar){
			continuar = false;
			
			
			if(arrAleatorios.length == cantConts){
				indexAnt = arrAleatorios[arrAleatorios.length-1];
				arrAleatorios = new Array();
			}
			aleatorio = Math.floor(Math.random()*(rango_superior-(rango_inferior-1))) + rango_inferior;	
			for(i=0;i<arrAleatorios.length;i++){
				if(arrAleatorios[i] == aleatorio){
					continuar = true;
					break;
				}
			}
			if(aleatorio == indexAnt)continuar = true;
			if(!continuar)arrAleatorios.push(aleatorio)
			
		}
		
		return aleatorio;
	}
	var prevCont = function(){
		
		if(!enMovimiento){
			intervaloTrans = clearInterval(intervaloTrans);
			enMovimiento = true;
			var desde = 0;
			var hasta = 0;
			var propiedad = '';
			var anterior = Ext.get(contActual.dom.previousSibling);
			if(!anterior){
				anterior = Ext.get(contGeneral.dom.lastChild);
			}
			var i;
			
			
			if(oConf['alto'] != 'auto'){
				for(i=0;i<cantConts;i++){
					contGeneral.dom.childNodes[i].style.visibility = 'hidden';
				}
				
				anterior.dom.style.zIndex = 1;
				contActual.dom.style.zIndex = 2;
				contActual.dom.style.visibility = 'visible';
				anterior.dom.style.visibility = 'visible';
				
				
				
				if(oConf['desplazamiento'] == 'izquierda'){
					desde = 0;
					hasta = -ancho;				
					propiedad = 'marginLeft';
				}
				else if(oConf['desplazamiento'] == 'derecha'){
					desde = 0;
					hasta = ancho;
					propiedad = 'marginLeft';			
				}
				else if(oConf['desplazamiento'] == 'arriba'){
					desde = 0;
					hasta = (-oConf['alto']);
					propiedad = 'marginTop';			
				}
				else if(oConf['desplazamiento'] == 'abajo'){
					hasta = (oConf['alto']);
					propiedad = 'marginTop';			
				}
				else if(oConf['desplazamiento'] == 'ninguno'){
					anterior.dom.style.zIndex = 1;
					contActual.dom.style.zIndex = 0;
					
					contActual = anterior;
					enMovimiento = false;
					if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
				}
				else if(oConf['desplazamiento'] == 'acordeon'){
					desde = contGeneral.dom.offsetHeight;
					hasta = 0;
					propiedad = 'height';
				}
				
				else if(oConf['desplazamiento'] == 'transparencia'){
					contActual.fadeOut({
									callback : function()
									{
									anterior.dom.style.zIndex = 1;
									contActual.dom.style.zIndex = 0;
									contActual.dom.style.visibility = 'visible';
									contActual = anterior;
									enMovimiento = false;
									if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
										
								},duration:oConf['tiempoEfecto']
							});
				}
				
				
				if(propiedad == 'marginLeft'){
					contActual.animate(
						{marginLeft: {from: desde, to: hasta}},
						oConf['tiempoEfecto'], 
						function () {
							anterior.dom.style.zIndex = 1;
							contActual.dom.style.zIndex = 0;
							contActual.dom.style.margin = 0 + 'px';
							contActual.dom.style.visibility = 'hidden';
							contActual = anterior;
							enMovimiento = false;
							if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
							
						
						},
						oConf['efecto']
					);
				}
				else if(propiedad == 'marginTop'){
					contActual.animate(
						{marginTop: {from: desde, to: hasta}},
						oConf['tiempoEfecto'], 
						function () {
							anterior.dom.style.zIndex = 1;
							contActual.dom.style.zIndex = 0;
							contActual.dom.style.margin = 0 + 'px';
							contActual.dom.style.visibility = 'hidden';						
							contActual = anterior;
							enMovimiento = false;						
							if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
						
						},
						oConf['efecto']
					);
				}	
			}
			else{

				if(oConf['desplazamiento'] == 'acordeon'){
					desde = contGeneral.dom.offsetHeight;
					hasta = 0;
					ocultarElementos();
					contGeneral.animate(
						{height: {from: desde, to: hasta}},
						oConf['tiempoEfecto'], 
						function () {
							anterior.dom.style.display = '';
							anterior.dom.style.visibility = 'visible';							
							contActual.dom.style.display = 'none';
							contActual = anterior;
							
							contGeneral.animate(
								{height: {from: 0, to: anterior.dom.offsetHeight}},
								oConf['tiempoEfecto'], 
								function () {
									enMovimiento = false;						
									reubicarElementos();
									if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
								},
								oConf['efecto']
							);							
						},
						oConf['efecto']
					);

				}
				else if(oConf['desplazamiento'] == 'transparencia'){
					ocultarElementos();
					contGeneral.fadeOut({
					 callback : function(){

							anterior.dom.style.display = '';
							contActual.dom.style.display = 'none';
							contActual = anterior;

							contGeneral.fadeIn({
							 callback : function(){
									enMovimiento = false;
									reubicarElementos();									
									if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);				
								 },duration:oConf['tiempoEfecto']
							});							
						 },duration:oConf['tiempoEfecto']
					});
					if(oConf['paso'] == 'numeracion' || oConf['paso'] == 'titulos' || oConf['paso'] == 'reproducir'){
						contCuadrosClick.childNodes[anterior.dom.indice].className = 'on';
						contCuadrosClick.childNodes[contActual.dom.indice].className = '';
					}
					
				}				

			}		
			
		}		
		
	}
	var pausar = function(){
		if(contPausar.className == 'pausarSlider'){
			contPausar.className = 'playSlider';
			intervaloTrans = clearInterval(intervaloTrans);
		}
		else{
			contPausar.className = 'pausarSlider';
			intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);			
		}
	}
	var reubicarElementos = function(){
		var alt = oConf['alto'];
		if(alt == 'auto')alt = contGeneral.dom.offsetHeight;
		if(oConf['paso'] == 'flechas'){
			var flechaAnt = $('sliderAnt' + oConf['indice']);				
			if(flechaAnt){
				flechaAnt.style.display = '';
				var mitad = Math.round((alt - flechaAnt.offsetHeight)/2);
				flechaAnt.style.marginTop = (-mitad) - flechaAnt.offsetHeight + 'px';
				var flechaSig = $('sliderSig' + oConf['indice']);			
				flechaSig.style.display = '';
				flechaSig.style.marginTop = (-mitad) - flechaSig.offsetHeight + 'px';
				flechaSig.style.marginLeft = (contGeneral.dom.offsetWidth - flechaSig.offsetWidth) + 'px';
			}
		}
		else if(oConf['paso'] == 'pausar'){
			var contPausar = $('pausarSlider' + oConf['indice']);
			if(contPausar){
				contPausar.style.display = 'block';
				contPausar.style.marginLeft = Math.round((contGeneral.dom.offsetWidth - contPausar.offsetWidth)/2) + 'px';
				contPausar.style.marginTop = -Math.round((contGeneral.dom.offsetHeight - contPausar.offsetHeight)/2) - contPausar.offsetHeight + 'px';
				contPausar.style.display = 'none';
			}
			
		}
	}.closure(this)
	var ocultarElementos = function(mostrar){
		if(oConf['paso'] == 'flechas'){
			var flechaAnt = $('sliderAnt' + oConf['indice']);				
			if(flechaAnt){
				var flechaSig = $('sliderSig' + oConf['indice']);			
				flechaAnt.style.display = 'none';
				flechaSig.style.display = 'none';					
				
			}
		}
		else if(oConf['paso'] == 'pausar'){
			var contPausar = $('pausarSlider' + oConf['indice']);
			if(contPausar){
				contPausar.style.display = 'none';
			}
		}
	}.closure(this)	

	var oConf = conf;
	if(!oConf['tiempoEfecto'])oConf['tiempoEfecto'] = 1;
	var indiceSlide = 0;
	var i;
	var intervaloTrans = 0;
	var enMovimiento = false;
	var contGeneral = Ext.get('contElemSlider' + oConf['indice']);
	contGeneral.dom.style.position = 'relative';
	var ancho = contGeneral.dom.offsetWidth;
	var elemTemp = null;
	
	var cantConts = contGeneral.dom.childNodes.length;
	var cuadroAnterior = null;

	if(cantConts > 0){
		var indice = 0;
		if(!Nav.esIE || Nav.esIE9){
			var continuar = true;
			while(continuar){
				continuar = false;
				for(i=0;i<contGeneral.dom.childNodes.length;i++){
					if(!contGeneral.dom.childNodes[i].tagName){
						contGeneral.dom.removeChild(contGeneral.dom.childNodes[i]);	
						continuar = true;
					}
				}
			}
			cantConts = contGeneral.dom.childNodes.length;		
		}

		var indAct = 0;		
		if(oConf['aleatorio'] == 1){
			var rango_superior = 0;  
			var rango_inferior = cantConts + 1; 		
			var arrAleatorios = new Array();
			indAct = obtenerRango();
			indAct = indAct-1;
		}


		for(i=0;i<cantConts;i++){
			contGeneral.dom.childNodes[i].style.margin = '0px';	
			elemTemp = contGeneral.dom.childNodes[i];
			var divCont = document.createElement('div');
			contGeneral.dom.insertBefore(divCont,elemTemp);
			divCont.appendChild(elemTemp);

			if(oConf['alto'] != 'auto'){
				if(Nav.esIE7)divCont.style.height = (oConf['alto'] + 1) + 'px';
				else divCont.style.height = (oConf['alto']) + 'px';
			}
		
			divCont.style.overflowX = 'hidden';
			if(oConf['alto'] != 'auto')divCont.style.position = 'absolute';
			
			if(oConf['centrar'] == 'si')divCont.style.textAlign = 'center';
			divCont.indice = i;

				if(i == indAct){
					divCont.style.zIndex = 1;
				}
				else{
					if(oConf['alto'] != 'auto'){
						divCont.style.zIndex = 0;
						divCont.style.visibility = 'hidden';
					}
					else divCont.style.display = 'none';
				}

		
			if(oConf['scrollContenido'] != 'no')divCont.style.overflowY = 'auto';
			else divCont.style.overflowY = 'hidden';
		
			divCont.style.backgroundColor = '#FFFFFF';
			divCont.style.width = ancho + 'px';

		}
		
		if(cantConts > 1){
		
			var contActual = Ext.get(contGeneral.dom.childNodes[indAct]);		
			if(conf['paso'] == 'flechas'){
				var flechaAnt = $('sliderAnt' + oConf['indice']);				
				if(flechaAnt){
					var flechaSig = $('sliderSig' + oConf['indice']);			
					AddEvent(flechaAnt,'click',function(){prevCont(false)});
					AddEvent(flechaSig,'click',function(){nextCont(false)});			
				}
			}
			else if(conf['paso'] == 'numeracion'){
				var contCuadrosClick = $('numeracionSlider' + oConf['indice']);
				if(contCuadrosClick){
					contCuadrosClick.style.marginLeft = (contGeneral.dom.offsetWidth - contCuadrosClick.offsetWidth) + 'px';
					for(i=0;i<contCuadrosClick.childNodes.length;i++){
						asignarClick(i,contCuadrosClick.childNodes[i]);
					}
					contCuadrosClick.childNodes[0].className = 'on';			
				}
			}
			else if(conf['paso'] == 'titulos'){
				var contCuadrosClick = $('titSlider' + oConf['indice']);
				if(contCuadrosClick){
					contCuadrosClick.style.marginLeft = (contGeneral.dom.offsetWidth - contCuadrosClick.offsetWidth) + 'px';
					for(i=0;i<contCuadrosClick.childNodes.length;i++){
						asignarClick(i,contCuadrosClick.childNodes[i]);
					}
					contCuadrosClick.childNodes[0].className = 'on';			
				}
			}
			
			else if(conf['paso'] == 'pausar'){
				var contPausar = $('pausarSlider' + oConf['indice']);
				if(contPausar){
					AddEvent(contGeneral.dom,'mouseover',function(){
						contPausar.style.display = 'block';
					})			
					AddEvent(contGeneral.dom,'mouseout',function(){
						contPausar.style.display = 'none';
					})			
					AddEvent(contPausar,'mouseover',function(){
						contPausar.style.display = 'block';
					})			
					AddEvent(contPausar,'mouseout',function(){
						contPausar.style.display = 'none';
					})			
					AddEvent(contPausar,'click',pausar);
				}
				
			}
			else{
				
	
			}
			reubicarElementos();
			if(oConf['tipoPaso'] != 'manual')intervaloTrans = setTimeout(function(){nextCont()},oConf['tiempo']);
		}
	}

}
