/*
 * 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);
