image = new Object();
context = new Object();
protocol = new Object();
metadata = new Object();
imageInfoMap = new Object();

//creates object with image information for image req=ctx was just sent for.
function getCurrImageInfo() {
	var rect = image.rect ? image.rect.split(',') : [0,0,2000,2000];
	var imageInfo = new Object();
	imageInfo.width = rect[2];
	imageInfo.height = rect[3];
	imageInfo.iv = image.version ? image.version : "";
	return imageInfo;
}

//custom function for swapping out images. looks up image info in 'imageInfoMap' and pass image width, height
//and context id into the setImage call.
function fixSetImage(inImageName, inReset) {
	
	if (typeof imageInfoMap[inImageName] == 'undefined')
	{
		try
		{
			var scriptSrc = inImageName.split('?')[0] + '?req=ctx,javascript';
			var s7imageJavascript = new Element('script', {src : scriptSrc, type : 'text/javascript'});
			s7imageJavascript.inject(document.body);
			s7imageJavascript.onload = function () {
				imageInfoMap[inImageName] = getCurrImageInfo();
				var imageInfo = imageInfoMap[inImageName];
				s7zoom.setImage(inImageName, inReset, imageInfo.width, imageInfo.height, imageInfo.iv);
			}
			s7imageJavascript.onreadystatechange = function() { if (this.readyState=="loaded") this.onload(); }; // this is needed because IE6-IE8 does not provide onload event for script tags 
			return false;
		}
		catch (e)
		{
			s7zoom.setImage(inImageName,true);
			return false;
		}
	}
	
	var imageInfo = imageInfoMap[inImageName];
	s7zoom.setImage(inImageName, inReset, imageInfo.width, imageInfo.height, imageInfo.iv);
}

