Galeria=new Class({
	Implements: [Options],
    options: {
        contenedor: '',
		imagenes: [],
		ancho: 0,
		alto: 0,
		div_imagenes: [],
		div_fechas: [],
		div_descripcion: [],
		div_txt_fechas: [],
		div_txt_descripcion: [],
		fx_imagenes: [],
		fx_fechas: [],
		fx_descripcion: [],
		fx_txt_fechas: [],
		fx_txt_descripcion: [],
		vinculos: [],
		dias: [],
		meses: [],
		titulos:[],
		subtitulos: []
    },
    initialize: function(options){
        this.setOptions(options);
        Object.append(this,this.options);
        this.options=null;
        this.crearDOM();
    },
	crearDOM: function(){
		var i,itop=this.imagenes.length,posx=0,j,k=0,yo=this,div;
		for(i=0;i<itop;i++){
			this.div_imagenes[k]=new Element('div',{
				styles: {
					'background-image': 'url('+this.imagenes[i]+')',
					'height': this.alto+'px',
					'width': this.ancho+'px',
					'position': 'absolute',
					'top': '0px',
					'left': posx+'px',
					'z-index': 2,
					'overflow':'hidden'
				}
			}).inject(this.contenedor);
			this.div_imagenes[k].set('indice',k);
			this.div_imagenes[k].addEvent('mouseenter',function(){
				yo.mostrarDescripcion(this.get('indice'));
			});
			this.div_imagenes[k].addEvent('mouseleave',function(){
				yo.ocultarDescripcion(this.get('indice'));
			});
			this.div_fechas[k]=new Element('div',{
				styles: {
					'background-color': '#000000',
					'height': this.alto+'px',
					'width': '103px',
					'position': 'absolute',
					'top': '0px',
					'left': '-103px',
					'z-index': 3
				}
			}).inject(this.div_imagenes[k]);
			this.div_fechas[k].fade(0.5);
			this.div_descripcion[k]=new Element('div',{
				styles: {
					'background-color': '#000000',
					'height': '91px',
					'width': this.ancho+'px',
					'position': 'absolute',
					'top': '289px',
					'left': '0px',
					'z-index': 3
				}
			}).inject(this.div_imagenes[k]);
			this.div_descripcion[k].fade(0.5);
			this.div_txt_fechas[k]=new Element('div',{
				styles: {
					'height': this.alto+'px',
					'width': '103px',
					'position': 'absolute',
					'top': '0px',
					'left': '-103px',
					'z-index': 3
				}
			}).inject(this.div_imagenes[k]);
			div=new Element('div',{
			}).inject(this.div_txt_fechas[k]);
			div.addClass('fecha_num_galeria');
			div.innerHTML=this.dias[i];
			div=new Element('div',{
			}).inject(this.div_txt_fechas[k]);
			div.addClass('fecha_txt_galeria');
			div.innerHTML=this.meses[i];
			this.div_txt_descripcion[k]=new Element('div',{
				styles: {
					'height': '91px',
					'width': this.ancho+'px',
					'position': 'absolute',
					'top': '289px',
					'left': '0px',
					'z-index': 3
				}
			}).inject(this.div_imagenes[k]);
			div=new Element('div',{
			}).inject(this.div_txt_descripcion[k]);
			div.addClass('tit_galeria');
			div.innerHTML=this.titulos[i];
			div=new Element('div',{
			}).inject(this.div_txt_descripcion[k]);
			div.addClass('subtit_galeria');
			div.innerHTML=this.subtitulos[i];
			img=new Element('img',{
				src: 'imagenes_comunes/botones/btn_mas.png',
				styles: {
					'cursor': 'pointer',
					'display': 'inline'
				}
			}).inject(this.div_txt_descripcion[k]);
			img.addClass('img_mas_galeria');
			img.addEvent('mouseover',function(){
				this.src='imagenes_comunes/botones/btn_mas_over.png';
			});
			img.addEvent('mouseout',function(){
				this.src='imagenes_comunes/botones/btn_mas.png';
			});
			img.set('vinculo',this.vinculos[i]);
			img.addEvent('click',function(){
				openInNewWindow(this.get('vinculo'));
			});
			
			this.fx_fechas[k]=new Fx.Morph(this.div_fechas[k],{
				link: 'cancel',
				duration: 500
			});
			this.fx_descripcion[k]=new Fx.Morph(this.div_descripcion[k],{
				link: 'cancel',
				duration: 500
			});
			this.fx_txt_fechas[k]=new Fx.Morph(this.div_txt_fechas[k],{
				link: 'cancel',
				duration: 500
			});
			this.fx_txt_descripcion[k]=new Fx.Morph(this.div_txt_descripcion[k],{
				link: 'cancel',
				duration: 500
			});
			
			this.fx_imagenes[k]=new Fx.Morph(this.div_imagenes[k],{
				link: 'chain',
				duration: 500
			});
			if(i==(itop-1)){
			this.fx_imagenes[k].addEvent('complete',function(){
				yo.desbloquear();
			});
			}
			k++;
			posx+=this.ancho;
		}
	},
	mostrarDescripcion: function(i){
		this.fx_fechas[i].start({
			'left': 0
		});
		this.fx_txt_fechas[i].start({
			'left': 0
		});
		this.fx_descripcion[i].start({
			'top': 198
		});
		this.fx_txt_descripcion[i].start({
			'top': 198
		});
	},
	ocultarDescripcion: function(i){
		this.fx_fechas[i].start({
			'left': -103
		});
		this.fx_txt_fechas[i].start({
			'left': -103
		});
		this.fx_descripcion[i].start({
			'top': 289
		});
		this.fx_txt_descripcion[i].start({
			'top': 289
		});
	},
	desbloquear: function(){
		this.bloquear=false;
	},
	anterior: function(){
		if(!this.bloquear){
			var i,itop=this.div_imagenes.length,posx, myfx;	
			this.bloquear=true;	
			for(i=0;i<itop;i++){
				prevPosX=this.div_imagenes[i].getStyle('left').substring(0,strpos(this.div_imagenes[i].getStyle('left'),'px',0)).toInt(10);
				posx=prevPosX+this.ancho;
				if(posx>(this.ancho*(itop-1))){
					this.div_imagenes[i].setStyle('z-index',1);
					this.div_imagenes[i].setStyle('left',-this.ancho);
					this.fx_imagenes[i].start({
						'left': 0
					});
				}else{
					this.div_imagenes[i].setStyle('z-index',2);
					this.fx_imagenes[i].start({
						'left': posx
					});
				}
			}
		}else{
			this.siguiente.delay(250,this);
		}
	},
	siguiente: function(){
		if(!this.bloquear){
			var i,itop=this.div_imagenes.length,posx, myfx;	
			this.bloquear=true;	
			for(i=0;i<itop;i++){
				prevPosX=this.div_imagenes[i].getStyle('left').substring(0,strpos(this.div_imagenes[i].getStyle('left'),'px',0)).toInt(10);
				posx=prevPosX-this.ancho;
				if(posx<0){
					this.div_imagenes[i].setStyle('z-index',1);
					this.fx_imagenes[i].start({
						'left': (itop-1)*this.ancho
					});
				}else{
					this.div_imagenes[i].setStyle('z-index',2);
					this.fx_imagenes[i].start({
							'left': posx
					});
				}
			}
		}else{
			this.anterior.delay(250,this);
		}
	}
});
function strpos (haystack, needle, offset) {
	var i = (haystack + '').indexOf(needle, (offset || 0));
	return i === -1 ? false : i;
}
