(function($){
	$.fn.thumb=function(src, options) {
		var defaults={position:'absolute','z-index':10,border:'1px solid #000',side:'left'};
		var options=$.extend(defaults,options);
        var side = options.side;
        delete options.side;
        var img = new Image();
        img.src = src;
		return this.each(function(){
			$(this)
				.mouseover(function(e){
                    var newOpts = $.extend(options,{top:e.clientY});
                    if (side == 'right') {
                        e.clientX = $(window).width()-e.clientX;
                    }
                    newOpts[side] = e.clientX;
					$('body').prepend('<img id="zoom" alt=""/>');
					$('img#zoom')
						.hide()
						.attr('src',src+($.browser.msie?'?r='+new Date().getTime():''))
						.css(newOpts)
						.load(function(){
							$(this).show();
							if ($(this).position().top-$(window).scrollTop()+$(this).outerHeight(true)>$(window).height()-10)
								$(this).css({top:$(window).height()-$(this).outerHeight(true)+$(window).scrollTop()});
						});
				})
				.mouseout(function(){$('img#zoom').remove();})
				.mousemove(function(e){
					var $zoom = $('img#zoom');
                    var cssOpts = {top:$(window).scrollTop()+(e.clientY+$zoom.outerHeight(true)>$(window).height()-10?$(window).height()-$zoom.outerHeight(true):e.clientY+10)};
                    if (side == 'right') {
                        e.clientX = $(window).width()-e.clientX;
                    } else {
                        e.clientX = e.clientX+10
                    }
                    cssOpts[side] = e.clientX;
					$zoom.css(cssOpts);
				});
		});
	};
})(jQuery);
