var listadoRSS = new Class({
	Implements: [Options, Events],
	options: {
		paginaActual:1,
		paginado:10,
		divListado: 'listado',
		divPaginado: 'paginado',
		seccion: '',
		rssFile: '',
		thumbWidth:104,
		forceThumbResize:true,
		useBothTitles:false,
		classNota:'rss_listado',
		defaultNumPages:10,
		nextButton:'paginadoSiguiente',
		prevButton:'paginadoAnterior'
	},
	initialize: function(options){
		this.setOptions(options);
		this.options.thumbWidth = parseInt(this.options.thumbWidth);
		this.generaPagina();
		this.generaPaginado();
	},
	generaPaginado: function ()
	{
		var self = this;
		new Request({
			url : self.options.rssFile+(self.options.paginado*self.options.defaultNumPages),
			onSuccess: function(txt, rss)
			{
				var claseCajaNumero;
				var x = rss.getElementsByTagName('item');
				var numPags = x.length/self.options.paginado;
				var contenedorPaginas = new Element('div',{'class':'contenedorPaginador'}).inject(self.options.divPaginado);
				//var tablaGeneral = new Element('table').inject(self.options.divPaginado);
				//var filaGeneral = new Element('tr').inject(tablaGeneral);
				for ( i=0; i<numPags && i < self.options.defaultNumPages; ++i )
				{
					var numNumero = i+1;
					var divNumero = document.createElement ('div');
					if ( (i+1) == self.options.paginaActual )
					{
						divNumero.className = 'buscarnumerosSel';
					}
					else
					{
						divNumero.className = 'buscarnumeros';
					}
					divNumero.innerHTML=numNumero;
					$(divNumero).addEvent('click', function(){
						$$('.buscarnumerosSel')[0].className='buscarnumeros';
						$(this).className='buscarnumerosSel';
						self.generaPagina(parseInt(this.innerHTML));
					});
					$(divNumero).inject(contenedorPaginas);
				}
				$(self.options.prevButton).addEvent('click', function(){
					self.generaPagina('-1');
					$$('.buscarnumerosSel')[0].className='buscarnumeros';
					$$('.buscarnumeros')[self.options.paginaActual-1].className='buscarnumerosSel';
				});
				$(self.options.nextButton).addEvent('click', function(){
					self.generaPagina('+1');
					$$('.buscarnumerosSel')[0].className='buscarnumeros';
					$$('.buscarnumeros')[self.options.paginaActual-1].className='buscarnumerosSel';
				});
			}
		}).send();
	},
	getPag: function( pag )
	{
		var action = null;
		var pagRes = 1;
		if ( typeof(pag) == 'number' )
		{
			action = 2;
		}
		else if ( typeof(pag) == 'string' )
		{
			if ( pag == '+1' )
			{
				action = 1;
			}
			else if ( pag == '-1' )
			{
				action = 0;
			}
		}
		switch ( action )
		{
			case 0:
				if ( this.options.paginaActual > 1 )
				{
					pag = this.options.paginaActual-1;
				}
				else
				{
					pag = this.options.defaultNumPages;
				}
				break;
			case 1:
				if ( this.options.paginaActual < this.options.defaultNumPages )
				{
					pag = this.options.paginaActual+1;
				}
				else
				{
					pag = 1;
				}
				break;
			case 2:
				if ( pag >= 1 && pag <= this.options.defaultNumPages )
				{
					pag = pag;
				}
				else
				{
					pag = 1;
				}
				break;
			default:
				break;
		}
		pagRes = ((pag-1)*this.options.paginado)+","+(this.options.paginado);
		this.options.paginaActual = pag;
		return pagRes;
	},
	generaPagina: function( numPagina )
	{
		var self = this;
		if ( typeof(numPagina) == 'undefined') 
		{
			numPagina = this.options.paginaActual;
		}
		var paginado = this.getPag ( numPagina );
		new Request({
			url: self.options.rssFile+paginado,
				onSuccess : function( txt, rss )
				{
					var item = rss.getElementsByTagName('item');
					var nodeParser = new parseXMLNode ();
					if( item.length > 0 )
					{
						/** se limpia el contenido **/
						$(self.options.divListado).innerHTML = '';
						for( var i = 0; i < item.length; ++i )
						{
							var itemNode = nodeParser.node2json(item[i]);
							/** DIR contenedor **/
							var divRS = new Element( 'div', { 'class' : self.options.classNota } ).inject( self.options.divListado );
							/** THUMB **/
							var divIMG = new Element( 'div', { 'class' : 'rss_thumb' } ).inject( divRS );
							var thumb = new Element( 'img', { 'src' :  itemNode.enclosure.url } ).inject( divIMG );
							var H = ( self.options.thumbWidth * parseInt( thumb.height, 10 ) ) / parseInt( thumb.width, 10 );

							if( H > self.options.thumbWidth )
							{
								$( divRS ).addClass( 'vertical' );
							}
							if( self.options.forceThumbResize )
							{
								$( thumb ).setStyles( { 'width' : self.options.thumbWidth, 'height' : H } );
							}
							/** TITULO **/
							divTitle = new Element( 'div', { 'class' : 'rss_title' } ).inject( divRS );
							if( self.options.useBothTitles )
							{
								anchT1 = new Element( 'a',{ 'text' : itemNode.title.h1, 'href' : itemNode.link.value, 'class' : 'title1'}).inject( divTitle );
								anchT2 = new Element( 'a',{ 'text' : itemNode.title.h2, 'href' : itemNode.link.value, 'class' : 'title2'}).inject( divTitle );
							} else {
								anchTitle = new Element( 'a', { 'text' : itemNode.title.value, 'href' : itemNode.link.value } ).inject( divTitle );
							}
							/** ENTRADILLA **/
							divEntr = new Element( 'div', { 'class' : 'rss_description' , 'html' : itemNode.description.value } ).inject( divRS );
						}
					}
				}
			}
		).send();
	}
});