(function($){
	$.fn.imgprev = function(options) {
	
	var defaults = {
		over_layer: 'imgprev_over',
		img_container: 'imgprev_prev',
		imgprev_img: 'imgprev_img',
		loading_text: 'Trwa ładowanie ...',
		speed: 'slow',
		opacity: 0.8
	};
  
  var options = $.extend(defaults, options);

		$('body').prepend('<div id="'+options.over_layer+'"></div><div id="'+options.img_container+'"></div>');
		
		return this.each(function() {
			
			var link = $(this).attr('href');
			var title = $(this).attr('title');
			
			$(this).click(function()
			{
				
				$('#'+options.over_layer).show().fadeTo(50, options.opacity, function()
				{
					
					$('#'+options.imgprev_img).remove();
					$('#'+options.img_container).text(options.loading_text);
					
					$('#'+options.img_container).fadeIn(options.speed).click(function(){
						$('#'+options.imgprev_img).fadeOut(options.speed, function(){
							$('#'+options.imgprev_img).remove();
							$('#'+options.over_layer).fadeOut(50)
							$('#'+options.img_container).fadeOut(50)	
						});
					});
					
					$("<img>").attr("src", link).attr("alt", title).attr('id', options.imgprev_img)
					.bind('load', function(){
						
						$('#'+options.img_container).text('');
						$(this).appendTo($('#'+options.img_container));
						var top = ($(window).height() - $('#'+options.imgprev_img).height())/2;
						$(this).css('margin-top', top);
						$(this).hide().fadeIn(options.speed, function()
						{
							
							var height = ($('html').height() > $(window).height()) ? $('html').height() : $(window).height();							
							var new_height = ($('#'+options.imgprev_img).height() > height) ? $('#'+options.imgprev_img).height() : height;
							
							var width = ($('html').width() > $(window).width()) ? $('html').width() : $(window).width();							
							var new_width = ($('#'+options.imgprev_img).width() > width) ? $('#'+options.imgprev_img).width() : width;
							
							$('#'+options.over_layer).width(new_width).height(new_height).click(function(){								
								$('#'+options.imgprev_img).fadeOut(options.speed, function(){
									$('#'+options.imgprev_img).remove();
									$('#'+options.over_layer).fadeOut(50);
									$('#'+options.img_container).fadeOut(50);	
								});
							});
						});
						
					});
				});
				return false;	
			});			
		});
	};
})(jQuery);
