﻿
			
(function($){
	$.fn.stxArts= function(ops){
			var stxOps;
		    var defaults = { 'directorio':'', 'dirMedia':'', 'mostrarMedia':'0', 'maxCars':'200',
		    				'mostrarBarNav':'1','mostrarTitulo':'1', 'titulo': 'Publicaciones', 'noSimultaneos':'1', 'mostrarMedia':'1', 'autoshow':'0',
		    				'duracion': '3000', 'pagActual':'0', 'bgColor': '#342d59', 'color': 'yellow', 'alto': '70px', 'ancho': '500px', 'margin':'0px',
		    				'articulos': []//[{ 'titulo':'', 'contenido':'', 'fecCre':''}]
		   					};
		   					
		    var noPaginas = 0;
			var pagActual = 1;
			var espacioArticulos;
			var elemento = $(this);
			var intervalId;
		    this.each(function(){
		    	$(this).prepend(''
			+'		<div class="stxArts">'
			+'			<span class="stxArtsTitulo" style="visibility:hidden;"></span>		'
			+'			<hr />	<div class="stxArticulos" style="visibility:visible;"></div>'
			+'			<div class="stxArtsNav" style="visibility:hidden;">				'
			+'				<span class="stxArtsPaginas"></span>	'
			+'				<span class="stxArtsEnlaces">		'
			+'					<span class="stxArtPrim"><<</span>	'
			+'					<span  class="stxArtAnt"><-</span>	'
			+'					&nbsp<span class="stxArtPlay"></span>&nbsp	'
			+'					<span  class="stxArtProx">-></span>	'			
			+'					<span  class="stxArtUlt">>></span>	'
			+'				</span>									'
			+'			</div>										'
			+'		</div>');	
				stxOps = $.extend(defaults,ops);
				
				espacioArticulos = elemento.find('.stxArticulos');
				agregarEspacios(espacioArticulos, stxOps.noSimultaneos);
				Ini();
			});	
			
			function Ini(){
					if(stxOps.titulo){
						elemento.find('.stxArtsTitulo').text(stxOps.titulo);	
					}					
					if(stxOps.mostrarBarNav == 1){
						elemento.find('.stxArtsNav').css({'visibility':'visible','display':'block'});
					}
					if(stxOps.mostrarTitulo == 1){
						elemento.find('.stxArtsTitulo').empty().append(stxOps.titulo).css({'visibility':'visible','display':'block'});	
					}
					if(stxOps.mostrarMedia == 1 ){
						elemento.find('.stxArtMedia').css({'visibility':'visible', 'display':'block'});	
					}
					if(stxOps.css){
						elemento.css(stxOps.css);
					}
					
					elemento.find('.stxArtProx').bind('click',pagProx);
					elemento.find('.stxArtAnt').bind('click',pagAnt);
					elemento.find('.stxArtUlt').bind('click',pagUlt);
					elemento.find('.stxArtPrim').bind('click',pagPrim);
					elemento.find('.stxArtPlay').bind('click',autoCambiar);

					//Asigna los articulos.
					devArticulos(0); 
					
					//stxOps.pagActual = parseInt(Math.random(0,stxOps.articulos.length)*(stxOps.articulos.length));
					autoCambiar();
					if(stxOps.autoshow == 0)
						autoCambiar();
			}
			
			//Agrega espacios para los articulos.
			function agregarEspacios(obj,cantidad){
				var i;
				if(!cantidad){
					cantidad = stxOps.noSimultaneos;
				}
				for(i=0; i < cantidad; i++){
					obj.append(''
				+'				<div class="stxArtContenido">			'
				+'					<a><div class="stxArtMedia">		'									
				+'					</div></a>							'
				+'					<div class="stxArtDescripcion">		'
				+'						<a><span></span></a>			'
				+'					</div>					'
				+'				</div><hr style="display: table-cell; clear: both; width: 100%;" />	');	
				}
				elemento.find('.stxArtContenido').css({'display':'table', 'width':stxOps.ancho});
			}

			//Muestra la reseña del articulo en la posicion indicada.
			function mostrarArticulos(obj){

				if(stxOps.articulos && stxOps.articulos.length > 0){					
					var inicio = (pagActual * stxOps.noSimultaneos) - stxOps.noSimultaneos;
					var ultimo = pagActual * stxOps.noSimultaneos - 1;
					
					var cantidad = stxOps.noSimultaneos;
					if(stxOps.noSimultaneos > (stxOps.articulos.length - inicio)){
						cantidad = stxOps.articulos.length - inicio;
					}
					
					var i;
					elemento.find('.stxArtDescripcion span').empty();
					elemento.find('.stxArtMedia').css('visibility','hidden');
					for(i = 0; i < cantidad; i++){
						var artic = espacioArticulos.find('.stxArtContenido').eq(i);
						//Verifico si la opcion de mostrar media esta habilitada y si el objeto media del articulo actual no es undefined.
						artic.find('.stxArtMedia').css('background-image','');
						if(stxOps.mostrarMedia == 1 && stxOps.articulos[i + inicio].media){
							var archivo = stxOps.articulos[i + inicio].media['nombre'] + stxOps.articulos[i + inicio].media['formato'];
							artic.find('.stxArtMedia').css('background-image','url('+ stxOps.dirMedia + archivo +')');
						}
						artic.find('.stxArtDescripcion span').prepend('<strong style="font-size:1.2em; padding:0px;" >'+ stxOps.articulos[i + inicio].titulo + '</strong><br /><br />');
						artic.find('.stxArtDescripcion span').append($(stxOps.articulos[i + inicio].contenido).text().substring(0, stxOps.maxCars) + '...');
						artic.find('a').attr('href', stxOps.articulos[i + inicio].enlace).css({'visibility':'vissible'});

						artic.css({'visibility':'visible'}).find('.stxArtMedia, hr').css({'visibility':'visible'});
					}
	
					actualizarPie();
				}
			}
			
			//Retorna la cantidad de paginas de acuerdo al numero de articulos(noArts) y a la cantidad de articulos mostrados simultaneamente(noSimultaneos) por el plugin.
			function devNoPaginas(noArts, noSimultaneos){
				if(noArts % noSimultaneos != 0)
					return parseInt(noArts / noSimultaneos) + 1;
				else
					return (noArts / noSimultaneos);
			}
			
			/**************** Paginacion y Autorefresco ***************/
			//Cambiar a la pagina siguiente.
			function pagProx(){
				if(pagActual < noPaginas){
					pagActual++;
					mostrarArticulos();
					return true;
				}
				else{
					return false;
				}
			}
			
			function pagAnt(){
				if(pagActual > 1){
					pagActual--;
					mostrarArticulos();	
					return false;
				}
				else{
					return true;
				}
			}
			
			function autoCambio(){
				if(!pagProx()){
					pagActual = 0;
					pagProx();
				}
			}
			
			function autoCambiar(){
				if(stxOps.autoshow == 0){
					stxOps.autoshow = 1;
					elemento.find('.stxArtPlay').empty().prepend('||');
					intervalId= setInterval(autoCambio,stxOps.duracion);
				}
				else{
					stxOps.autoshow = 0;
					elemento.find('.stxArtPlay').empty().prepend('>');
					if(intervalId)
						clearInterval(intervalId);
					}
			}
			
			function pagUlt(){
				pagActual = noPaginas;
				mostrarArticulos();
			}
			function pagPrim(){
				pagActual = 1;
				mostrarArticulos();
			}

			function actualizarPie(){
				elemento.find('.stxArtsPaginas').empty().prepend(pagActual + ' - ' + noPaginas);
			}

			/**************** Paginacion ***************/
			
			//Devuelve los articulos a mostrar desde el servidor.
			function devArticulos(idIni){
				$.post(	
					stxOps.directorio + 'stxArts.php',
					{"func":"devTopArts","idIni":idIni,"id":stxOps.id},
					function(arts){
						if(arts){
							stxOps.articulos = $.extend(stxOps.articulos,$.parseJSON(arts));
							//Numero de páginas.
					    	noPaginas = devNoPaginas(stxOps.articulos.length, stxOps.noSimultaneos);
					    	//Muestro los articulos inmediatamente.
							mostrarArticulos();
						}
						else
							alert('Ha ocurrido un error al validar los datos en el servidor o el mismo no esta disponible.');
					}
				);
			}	
			
			
			this.Finalizar = function(){
				elemento.find('.stxArts').remove();
			};
	};
})(jQuery);

