var BigImage = Class.create();

BigImage.prototype = {
	
	mainDivHandle: null,
	imageTagHandle: null,
	loaded: false,
	
	initialize: function(address) {
		
		this.mainDivHandle = document.createElement('div');
		this.mainDivHandle.style.position = 'absolute';
		this.mainDivHandle.style.left = '0px';
		this.mainDivHandle.style.top = '0px';
		this.mainDivHandle.style.width = '100%';
		this.mainDivHandle.style.height = '100%';
		this.mainDivHandle.style.zIndex = '1000';
		$(this.mainDivHandle).hide();
		document.body.appendChild(this.mainDivHandle);
		
		this.loaded = false;
		this.imageTagHandle = document.createElement('img');
		$(this.imageTagHandle).hide();
		$(this.imageTagHandle).observe("load", this.imageload.bind(this));
		$(this.mainDivHandle).observe("click", this.hide.bind(this));
		this.imageTagHandle.src = address;
		this.imageTagHandle.style.position = 'absolute';
		this.mainDivHandle.style.zIndex = '1001';
		this.mainDivHandle.appendChild(this.imageTagHandle);

	},
	
	reposition: function(){
		var imgDimansions = $(this.imageTagHandle).getDimensions();
		var documentDimansions = document.viewport.getDimensions();
		var documentOffsets =  document.viewport.getScrollOffsets();
		var aLeft = (documentDimansions.width / 2) + documentOffsets.left - (imgDimansions.width / 2);
		var aTop = (documentDimansions.height / 2) + documentOffsets.top - (imgDimansions.height / 2);
		this.imageTagHandle.style.left = aLeft + "px";
		this.imageTagHandle.style.top = aTop + "px";
	},
	
	show: function() {
		$(this.mainDivHandle).show();
		this.reposition();
	},
	
	hide: function() {
		$(this.mainDivHandle).hide();
	},
	
	imageload: function() {
		$(this.imageTagHandle).show();
		this.reposition();
	}
}

window.BigImagesLoaded = Array();

function showBigImage(imageAddress) {
	var myBigImage = 0;
	for(var i=0; i<window.BigImagesLoaded.size(); i++)
		if(window.BigImagesLoaded[i].address == imageAddress)
			myBigImage = window.BigImagesLoaded[i].handle;
	if(typeof myBigImage == 'number'){
		myBigImage = new BigImage(imageAddress);
		window.BigImagesLoaded.push({address: imageAddress, handle: myBigImage});
	}
	myBigImage.show();
}