var PacmanaBox = {
	init: function() {
		this.container 		= new Element('div', {'id': 'lightbox'}).injectTop(document.body).setStyle('display', 'none');
		this.image 			= new Element('img', {}).injectTop(this.container);
		this.controls 		= new Element('div', {'class': 'controls'}).injectTop(this.container);
		this.closeControl	= new Element('a', {'href': 'javascript:void(0)', 'class': 'close iePNG', 'title': ''}).injectTop(this.container);
		this.closeControl.setStyle('display', 'none');
		this.closeControl.addEvent('click', function() {
			PacmanaBox.close();
		});
		$$('a[rel^=lightbox]').each(function(element) {
			element.addEvent('click', function(e) {
				new Event(e).stop();
				PacmanaBox.open(this);
			});
		});
	},
	
	
	open: function(element) {
		var coordinates = element.getElement('img').getCoordinates();
		this.container.setStyle('display', '');
		this.container.setStyle('opacity', 1);
		this.container.setStyle('left', coordinates.left + coordinates.width / 2 - 24);
		this.container.setStyle('top', coordinates.top + coordinates.height / 2 - 20);
		this.container.setStyle('width', 32);
		this.container.setStyle('height', 32);
		this.image.setProperty('src', '');
		this.image.setStyle('display', 'none');
		this.closeControl.setStyle('display', 'none');
		
		var preload;
		preload = new Image();
		preload.onload = function() {	
			new Fx.Morph(PacmanaBox.container, {duration: 200}).start({
				'width'	: preload.width,
				'height': preload.height,
				'left'  : (window.getWidth() / 2 - preload.width / 2),
				'top'   : (window.getHeight() / 2 + window.getScrollTop() - preload.height / 2)
			}).chain(function() {
				PacmanaBox.image.setStyle('display', '');
				PacmanaBox.image.setProperty('src', preload.src);
				PacmanaBox.image.setOpacity(0);
				PacmanaBox.closeControl.setStyle('display', 'block');
				new Fx.Tween(PacmanaBox.image, {duration: 200}).start('opacity', 0, 1);
			});		
		};
		preload.src = element.href;
	},
	
	
	close: function() {
		new Fx.Morph(PacmanaBox.container, {duration: 200}).start({
			'opacity': 0
		}).chain(function() {
			PacmanaBox.container.setStyle('display', 'none');
			PacmanaBox.closeControl.setStyle('display', 'none');
		});
	}
};


window.addEvent('domready', function() {
	PacmanaBox.init();
	window.onkeydown = function(e) {
		var event = new Event(e);
		if (event.key == 'esc') {
			PacmanaBox.close();
		}
	}
});
	

