var ImageSwitcher = new Class ({
	thumb_images : 'undefined',
	initialize : function(main_image, thumb_images) {
		document.imageswitcher_main_image = main_image;
		this.thumb_images = thumb_images;
		this.build();
	},
	build : function() {
	 	//map actions to all thumbs
	 	for(var i = 0; i < this.thumb_images.length; i++) {
	 		
			function extractData(thumb) {
				var full_url = thumb.get('href');
				var thumb_url = thumb.getElement('img').get('src');
				return [full_url, thumb_url];
			}
			 
			var thumb_data = extractData(this.thumb_images[i]);
 		 	
			var morphObject = new Fx.Morph(
				document.imageswitcher_main_image,
				{
					duration : 'long',
					link : 'chain',
					transition : Fx.Transitions.Cubic.easeOut
				}
			);
		 	var morphStart = function(thumb_data) {
		 		var newImage = new Image();
		 		this.chain(function() {
		 			this.start({
		 				'opacity' : 0,
	 				});
	 			});
	 			this.chain(function() {
		 			newImage.src = thumb_data;
		 			
		 			var imageDimRatio = newImage.width / newImage.height;
		 			var imageWidth = 300;
		 			var imageHeight = 300 / imageDimRatio;
		 			
	 				this.start({
	 					'height' : imageHeight,
		 				'width' : imageWidth
	 				});
 				});
	 			this.chain(function() {
	 				document.imageswitcher_main_image.set('src', thumb_data);
	 				this.start({
	 					'opacity' : 100	
 					});
 				});
	 			this.callChain();
	 			return false;
 			}
 			this.thumb_images[i].addEvent(
 				'click',
 				morphStart.bind(morphObject, thumb_data)
			);
	 	}
	}
});
