/*************************************************************************
Plataforma En Línea TecnoCMS v9.1: JavaScript Bloque Para Mostrar Noticias con Slide
Todos los Derechos Reservados por Tecno-Soluciones de Venezuela C.A.

TecnoCMS es una Marca Registrada de Tecno-Soluciones de Venezuela C.A.
Más Información en: http://www.tecnosoluciones.com
Email: webmaster@tecnosoluciones.com

Atención: Usted utiliza este programa  bajo el Acuerdo de Servicios de Tecno-Soluciones de
     Venezuela C.A. Por favor lea el documento AcuerdoDeServicios.pdf  anexo para
                     conocer los detalles, responsabilidades y limitaciones del uso de este software.
                     Código Fuente desarrollado y/o mejorado por Tecno-Soluciones de Venezuela C.A.

Control de Versiones:
vZ.1 – Modificado por ASG & LB el 06/07/2010
            Descripción: Javascript Ticker, rotador de Noticias.

 **************************************************************************/

var TickerDW = {
	indice: 0,
	contenedoresLlenos: 0,
	contenedorActual: 0,
	identificadorRetardo: null,
	init: function(elementos, destino, opciones){
		
		this.ticker = $(destino);
		
		this.arrayElementos = elementos;
		
		if (opciones.classElemento != undefined){
			this.classElemento = opciones.classElemento;
		}else{
			this.classElemento = "elementoticker";
		}
		
		if (opciones.classContenedorElemento != undefined){
			this.classContenedorElemento = opciones.classContenedorElemento;
		}else{
			this.classContenedorElemento = "contelementoticker";
		}
		
		if (opciones.retardo != undefined){
			this.retardo = opciones.retardo;
		}else{
			this.retardo = 3000;
		}
		
		if (opciones.numElementos != undefined){
			this.numElementos = opciones.numElementos;
		}else{
			this.numElementos = 3;
		}
		
		this.contenedores = new Array();
		
		for (i=0; i < this.numElementos; i++){
			this.contenedores[i] = $("<div></div>").addClass(this.classContenedorElemento);
			$(this.ticker).append(this.contenedores[i]);
		}
		
		if (this.arrayElementos.length > 0){
			//comienzo la animación
			this.rotaTextos();
		}
		
	},
	crearElemento: function(){
		var nuevoTitulo = $("<span class='horas'></span>").html(this.arrayElementos[this.indice].titulo)
		var nuevoEnlace = $("<a></a>").attr("href",this.arrayElementos[this.indice].url).html(this.arrayElementos[this.indice].verMas)
		var nuevoElemento = $("<div></div>").addClass(this.classElemento);
		var nuevoTexto = $("<span></span>").html(this.arrayElementos[this.indice].intro);
		
		nuevoElemento.append(nuevoTitulo);
		nuevoTexto.append(nuevoEnlace);		
		nuevoElemento.append(nuevoTexto);
		var aux = this;
		nuevoElemento.bind("mouseover",function(){
			window.clearTimeout(TickerDW.identificadorRetardo);
			$(this).addClass("pintaRows");
		});
		nuevoElemento.bind("mouseout",function(){
			aux.identificadorRetardo = window.setTimeout("TickerDW.rotaTextos()",parseInt(aux.retardo / 3));
			$(this).removeClass("pintaRows");
		});
		return nuevoElemento;
	},
	
	muestraNoticia: function(){
		if (this.contenedoresLlenos < this.numElementos){			
			var nuevoElemento = this.crearElemento();
			$(this.contenedores[this.indice]).append(nuevoElemento).css({display:"none"}).fadeIn(2000);			
			this.contenedoresLlenos++;
			this.indice = (this.indice + 1) % this.arrayElementos.length;
		}else{
			$(this.contenedores[this.contenedorActual]).slideUp(1000);
			setTimeout("TickerDW.contenedorEnCola()",800);
		}
	},
	
	contenedorEnCola: function(){
		$(TickerDW.contenedores[TickerDW.contenedorActual]).remove();
		TickerDW.contenedores[TickerDW.contenedorActual] = $("<div></div>").addClass(TickerDW.classContenedorElemento);		
		var nuevoElemento = TickerDW.crearElemento();
		$(TickerDW.contenedores[TickerDW.contenedorActual]).append(nuevoElemento).css({display:"none"}).fadeIn(800);
		$(TickerDW.ticker).append(TickerDW.contenedores[TickerDW.contenedorActual]);
		TickerDW.contenedorActual = (TickerDW.contenedorActual + 1) % TickerDW.contenedores.length;
		TickerDW.indice = (TickerDW.indice + 1) % TickerDW.arrayElementos.length;
	},
	
	rotaTextos: function(){
		TickerDW.muestraNoticia();
		var actRetardo;
		if (TickerDW.contenedoresLlenos < TickerDW.numElementos){	
			actRetardo = parseInt(TickerDW.retardo/10);
		}else{
			actRetardo = TickerDW.retardo;
		}
		TickerDW.identificadorRetardo = window.setTimeout("TickerDW.rotaTextos()",actRetardo);
	}
};