var ButtonManager = new Class({
	
	initialize: function() {
		this.aButtons = new Array();
		this.lastActive = null;
		this.refMain = null;
	},
	
	setMain: function(_refMain){
		this.refMain = _refMain;
	},
	
	getMain: function(){
		return this.refMain;
	},
	
	addButton: function(button){
		this.aButtons.push(button);
	},
	
	deactivate: function(){
	  	this.lastActive.desactivar();
		this.lastActive.activado = 0;
		this.lastActive = null;
	},
	
	activate: function(button){
		if($chk(this.lastActive)) this.deactivate();
		this.lastActive = button;
		this.lastActive.activado = 1;
		this.lastActive.activar();
	}
});

var Button = new Class({

	initialize: function(elm) {
		this.boton			= elm;
		this.rutaFoto		= elm;
		this.activado		= 0;
		this.scope 			= null;
		this.boton.addEvent('click', this.onClick.bind(this));
		this.boton.addEvent('mouseover', this.onMouseOver.bind(this));
		this.boton.addEvent('mouseout', this.onMouseOut.bind(this));
	},
	
	init: function(_scope){
		this.scope = _scope;
	},
	
	activar: function (){	
		this.boton.effect('opacity', {duration: 300,transition: Fx.Transitions.linear}).start(0.5);
	},
	
	desactivar: function (){	
		this.boton.effect('opacity', {duration: 300,transition: Fx.Transitions.linear}).start(1);
	},
	
	onClick: function (e){	
		e = new Event(e).stop(); //deshabilito el href del enlace
		this.cambiaFoto();
		this.scope.onClick(this);
	},
	
	onMouseOver: function (){	
		if(this.activado == 0) this.activar();
	},
	
	onMouseOut: function (){	
		if(this.activado == 0) this.desactivar();
	},

	cambiaFoto:function(){
		$('intFoto').effect('opacity', {duration: 300,transition: Fx.Transitions.linear, onComplete: function(){this.creaImg(); }.bind(this) }).start(0);
		$('contenedorFoto').setStyle('background', 'url(images/galeria/loading.gif) no-repeat 50% 50%');
	},
	
	creaImg: function(){
		var nuevaFoto = new Asset.image(this.rutaFoto, {id: 'fotoGal', alt:'Foto', onload: function(){
			$('contenedorFoto').setStyle('background', 'none');
			$('contenedorFoto').effect('height',{duration: 300,transition: Fx.Transitions.linear}).start($('fotoGal').getStyle('height').toInt());
			$('intFoto').effect('opacity', {duration: 300,transition: Fx.Transitions.linear}).start(1);
		}.bind(this) });
		$('fotoGal').replaceWith(nuevaFoto);
	}
	
});

var Main = new Class({
	
	start: function(){
		this.botonManager = new ButtonManager();
		this.botonManager.setMain(this);
		this.enlaces = $$('.minis li a');		
		this.creaBotones();
	},
	
	creaBotones: function(){
		this.enlaces.each(function(lista, i){
			var button = new Button(lista);
			this.botonManager.addButton(button);
			button.init(this);
		}.bind(this));
	},
	
	onClick: function(buttonClicked){
		this.botonManager.activate(buttonClicked);
	}

});

function initGaleria(){
	if($$('.minis li a')!=""){
		var sitio = new Main().start();
	}
}

window.addEvent('domready', initGaleria);