Poster = Class.create ({
	initialize: function (img) {
		this.closeImage_Cached = this.closeImage.bindAsEventListener(this);
		img.observe ('click', this.imageClick.bindAsEventListener(this));
	},

	imageClick: function (event) {
		this.element = Event.element (event);
		var dest = this.element.up('.oneEvent').select ('.PosterUrl')[0].innerHTML;
		event.stop()

		this.overlay = document.createElement ('div');
		document.body.appendChild (this.overlay);
		this.overlay.style.position = 'absolute';
		this.overlay.style.zIndex = 1000;
		this.overlay.style.top = '0px';
		this.overlay.style.left = '0px';
		this.overlay.style.height = document.viewport.getHeight()+'px';
		this.overlay.style.width = document.viewport.getWidth()+'px' ;
		
		this.div = document.createElement ('div');
		this.img = document.createElement ('img');
		$(this.div).setStyle ({display: 'none', zIndex: '1001', position: 'absolute', border: '3px solid #fff', top: this.element.viewportOffset().top+'px', left: this.element.viewportOffset().left+'px' });
		$(this.img).observe ('load', this.onImageLoaded.bindAsEventListener(this));
		this.img.src = dest;
		this.div.appendChild (this.img);
		document.body.appendChild (this.div);
	},
	
	onImageLoaded: function (event) {
		var img_dims = $(this.div).getDimensions();
		$(this.div).setStyle ({display: '', visibility: 'visible', height: this.element.getHeight()+'px', width: this.element.getWidth()+'px'});
		$(this.img).setStyle ({width: '100%', height: '100%'});
		
		var targetHeight = Math.min(document.viewport.getHeight()-20, img_dims.height);
		var ratio = targetHeight / img_dims.height;
		var targetWidth = Math.floor (ratio * img_dims.width);
		
		var left_ = (document.viewport.getWidth() - targetWidth) / 2;
		var top_ = (document.viewport.getHeight() - targetHeight) / 2;
		this.currentImage = this.div;
		Event.observe (document.body, 'click', this.closeImage_Cached);
		jQuery (jQuery(this.div)).animate ({left: left_+"px", top: top_+'px'}, 200); //height: targetHeight+'px', width: targetWidth+'px'
	},
	
	closeImage: function (event) {
		document.body.removeChild (this.currentImage);
		document.body.removeChild (this.overlay);
		event.stop();
		Event.stopObserving (document.body, 'click', this.closeImage_Cached);
	}
});