/*
 * 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.21
 */
(function(c){c.expr[':'].linkingToImage=function(b,f,a){return!!(c(b).attr(a[3])&&c(b).attr(a[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};c.fn.imgPreview=function(f){var a=c.extend({imgCSS:{},distanceFromCursor:{top:-125,left:-50},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:'imgPreviewContainer',containerLoadingClass:'loading',thumbPrefix:'',srcAttr:'href'},f),d=c('<div/>').attr('id',a.containerID).append('<img/>').hide().css('position','absolute').appendTo('body'),e=c('img',d).css(a.imgCSS),g=this.filter(':linkingToImage('+a.srcAttr+')');function h(b){return b.replace(/(\/?)([^\/]+)$/,'$1'+a.thumbPrefix+'$2')}if(a.preloadImages){g.each(function(){(new Image()).src=h(c(this).attr(a.srcAttr))})}g.mousemove(function(b){d.css({top:b.pageY+a.distanceFromCursor.top+'px',left:b.pageX+a.distanceFromCursor.left+'px'})}).hover(function(){var b=this;d.addClass(a.containerLoadingClass).show();e.load(function(){d.removeClass(a.containerLoadingClass);a.onLoad.call(e[0],b)}).attr('src',h(c(b).attr(a.srcAttr)));a.onShow.call(d[0],b)},function(){d.hide();e.unbind('load').attr('src','');a.onHide.call(d[0],this)});return this}})(jQuery);