var Box = {
	init: function(options){
		//Se i link hanno un rel, vengono usati
		$each(document.links, function(el){
			if (el.rel && el.rel.test(/^div#/i)){
				el.onclick = this.click.pass(el, this);
			}
		}, this);
		var els = $$('div.close');
		$each(els, function(el){
			el.onclick = this.close.bind(this);
		}, this);
	},

	click: function(link){
		return this.open(link.rel.substring(4));
	},

	open: function(div){
		//Sincronizzazione con gli eventi di tastiera e window
		this.eventKeyDown = this.keyboardListener.bindAsEventListener(this);
		document['addEvent']('keydown', this.eventKeyDown);
		window.addEvent('resize', function(){
			Box.position();
		});

		//Creo la grafica
		this.overlay = new Element('div', {'id': 'lbOverlay'}).injectInside(document.body);
		this.overlay.onclick = this.close.bind(this);

		this.blocco = $(div).injectAfter(this.overlay);
		this.fx = {
			overlay: this.overlay.effect('opacity', {duration: 500}).hide(),
			blocco: this.blocco.effect('opacity', {duration: 500}).hide()
		};

		this.position();
		this.fx.overlay.start(0.6).chain(function(){
			Box.fx.blocco.start(1);
		});
	},

	keyboardListener: function(event){
		//Tasto ESC
		switch (event.keyCode){
			case 27: case 88: case 67: this.close(); break;
		}
	},

	position: function(){
		this.overlay.setStyles({'height': window.getScrollHeight()});
		this.blocco.setStyles({'top': 50});
		this.blocco.setStyles({'left': (window.getScrollWidth()/2)-(170)});
		this.blocco.setStyles({'display': 'block'});
	},

	close: function(){
		for (var f in this.fx)
			this.fx[f].stop();
		Box.fx.blocco.start(0).chain(function(){
			Box.fx.overlay.start(0).chain(function(){
				Box.overlay.remove();
				Box.blocco.injectInside(document.body);
				document['removeEvent']('keydown', this.eventKeyDown);
				window.removeEvent('resize', function(){
					Box.position();
				});
			});
		});
		return false;
	}
};

window.addEvent('domready',function(){
	Box.init();
});
