function vimmelGallery(title, summary, imagearray) {
	this.settings = { "title": title, "summary": summary, "imagearray" : imagearray, index : 0 };
	var preloadimages=[];
	var self = this;
	
	jQuery("#vimmel-wrapper .vimmelImage img").live('click', function(){
		self.navigateNext();
	});
		
	jQuery("#vimmel-controls img").live('click', function(event){
		self.navigate(jQuery(this));
	});

	for (var i=0; i<imagearray.length; i++){ //preload images
		preloadimages[i]=new Image();
		preloadimages[i].src=this.settings.imagearray[i]["image"];
		preloadimages[i].src=this.settings.imagearray[i]["thumb"];
	}

	this.reset = function(){
		var summary = jQuery("#vimmel-wrapper .vimmelImage p");
		if(summary.html().length > 0){
			summary.show();
		}else{
			summary.hide();
		}
	};
	
	this.navigateNext = function(){
		var controls = jQuery("#vimmel-controls");
		var current_link = jQuery("#vimmel-controls img.current");
		var next_link = current_link.next().length ? current_link.next() : controls.children().first();
		next_link.trigger('click');
	};
	
	this.navigate = function(next_image){
		// no next_image means visitor did *not* arrive here by clicking a thumbnail
		if(!next_image)
		{
			var link_id = location.hash.substr(1, location.hash.length);
			if(link_id.length){
				// came here via direct link to specific photo
				next_image = jQuery("#vimmel-controls img#" + link_id);
			}else{
				// no image id in location
				this.reset();
				return false;
			}
		}
		//location.hash = next_image.attr("id");
		var image_attributes = jQuery.grep(this.settings.imagearray, function(image, index){
			return (image["id"]) == next_image.attr("id");
		})[0];
		
		jQuery("#vimmel-controls img").removeClass("current");
		next_image.addClass("current");
		jQuery("#vimmel-wrapper .vimmelImage img").attr({ src: image_attributes["image"], alt: image_attributes["desc"]});
		jQuery("#vimmel-wrapper .vimmelImage p").html(image_attributes["desc"]);
		this.reset();
	};
	
	this.getHTML = function(){
		var html = '';
		html += '<div class="vimmelImage">';
		html += '<img src="'+this.settings.imagearray[0]["image"]+'" width="565" />';
		html += '<p>' + this.settings.imagearray[0]["desc"] + '</p>'
		html += '</div>';
		return html;
	};
	
	this.getControls = function(){
		var html = "";
		jQuery.each(this.settings.imagearray, function(index, images){
			html += "<img src=\"" + images["thumb"] + "\" alt=\"" + images["desc"] + "\"/ id=\"" + images["id"] + "\"></a>";
		});
		return html;
	};

	jQuery(document).ready(function(){

		var wrapper = jQuery("#vimmel-wrapper");
		var controls = jQuery("#vimmel-controls");

		var html = self.getHTML();
		var control = self.getControls();
		
		jQuery("#vimmel-head h2").html(title);
		jQuery("#vimmel-head h3").html(summary);
		
		wrapper.addClass('vimmelEngine');
		wrapper.html(html);
		controls.html(control);

		jQuery("#vimmel-wrapper .vimmelImage .vimmelNavigation").css({width:wrapper.find('img').width()+'px'});
		jQuery("#vimmel-wrapper .vimmelImage .vimmelNavigation").css({width:wrapper.find('img').width()+'px'});
		jQuery("#vimmel-controls img:first-child").addClass("current");
		
		self.navigate();
	});

}


