// (c)2010 Jakub Stilec

(function($){var methods={init:function(options){var largeImg=false;return this.each(function(){var original=$(this);var temporary=original.clone();temporary.css('display','none');temporary.insertAfter(original);original.isZoomed=false;original.isZooming=false;original.isLoaded=false;original.customWidth=original.width();original.customHeight=original.height();var newImg=new Image();newImg.src=original.attr('src');$(newImg).load(function(){original.originalWidth=newImg.width;original.originalHeight=newImg.height;original.isLoaded=true;});if(newImg.complete){original.isLoaded=true;original.originalWidth=newImg.width;original.originalHeight=newImg.height;}
original.mousemove(function(e){if(original.isZoomed||original.isZooming||!original.isLoaded){return;}
globalZoomingZIndex++;globalZooming=true;original.isZoomed=false;original.isZooming=true;original.customTop=$(this).position().top;original.customLeft=$(this).position().left;var viewport=$.fn.hoverZoom('getViewport');var w=original.originalWidth+'px';var h=original.originalHeight+'px';var t=(original.customTop-(original.originalHeight-original.height())/2)+'px';var l=(original.customLeft-(original.originalWidth-original.width())/2)+'px';$(this).css({'z-index':globalZoomingZIndex});$(this).css({'position':'absolute'});$(this).css({'left':original.customLeft+'px'});$(this).css({'top':original.customTop+'px'});temporary.css('display','');$(this).animate({width:w,height:h,top:t,left:l},function(){original.isZoomed=true;original.isZooming=false;globalZooming=false;});});original.mouseleave(function(e){if(!(original.isZoomed||original.isZooming))
return;var w=original.customWidth+'px';var h=original.customHeight+'px';var l=original.customLeft+'px';var t=original.customTop+'px';globalZooming=true;$(this).animate({width:w,height:h,top:t,left:l},50,function(){temporary.css('display','none');$(this).css({'z-index':'0'});$(this).css({'position':''});original.isZoomed=false;original.isZooming=false;globalZooming=false;});})});},getViewport:function(){$('body').data('viewport',[$(window).width(),$(window).height(),$(document).scrollLeft(),$(document).scrollTop()]);return[$(window).width(),$(window).height(),$(document).scrollLeft(),$(document).scrollTop()];}};$.fn.hoverZoom2=function(method){if(methods[method]){return methods[method].apply(this,Array.prototype.slice.call(arguments,1));}else if(typeof method==='object'||!method){return methods.init.apply(this,arguments);}else{$.error('Method '+method+' does not exist on jQuery.zoomer');}}})(jQuery);
