/*
 * imgPreview jQuery plugin
 * Copyright (c) 2009 James Padolsey
 * j@qd9.co.uk | http://james.padolsey.com
 * Dual licensed under MIT and GPL.
 * Updated: 09/02/09
 * @author James Padolsey
 * @version 0.22
 */
(function(c)
	{c.expr[':'].linkingToImage=function(a,g,e){
		return!!(c(a).attr(e[3])&&c(a).attr(e[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};
		c.fn.imgPreview=function(j){
				var b=c.extend(
						{imgCSS:{},
							distanceFromCursor:{top:10,left:10},
							preloadImages:true,
							onShow:function(){},
							onHide:function(){},
							onLoad:function(){},
							containerID:'imgPreviewContainer',
							containerLoadingClass:'loading',
							thumbPrefix:'',
							srcAttr:'href'},j),
					d=c('<div/>').attr('id',b.containerID).append('<img/>').hide().css('position','absolute').appendTo('body'),
					f=c('img',d).css(b.imgCSS),
					h=this.filter(':linkingToImage('+b.srcAttr+')');
				function i(a){
					return a.replace(/(\/?)([^\/]+)$/,'$1'+b.thumbPrefix+'$2')
					}
				if(b.preloadImages){
					(function(a){
						var g=new Image(),
							e=arguments.callee;
							g.src=i(c(h[a]).attr(b.srcAttr));
							g.onload=function(){
												h[a+1]&&e(a+1)
												}
							})(0)
					}
				h.mousemove(function(a){d.css(
										{top:a.pageY+b.distanceFromCursor.top+'px',
										 left:a.pageX-b.distanceFromCursor.left+'px'
										 })
									 }).hover(
											 function(){
												 var a=this;
												 d.addClass(b.containerLoadingClass).show();
												 f.load(function(){
													 d.removeClass(b.containerLoadingClass);
													 f.show();
													 b.onLoad.call(f[0],a)}).attr('src',i(c(a).attr(b.srcAttr)));
												 b.onShow.call(d[0],a)},
												 function(){
													 d.hide();
													 f.unbind('load').attr('src','').hide();
													 b.onHide.call(d[0],this)});
				return this}
		}
)(jQuery);