(function($){var methods="destroy,enable,disable,reset".split(",");for(var i=0;i<methods.length;i++){var cur=methods[i],f;eval('f = function() { var a = arguments; return this.each(function() { if(jQuery(this).is(".fx-magnifier")) jQuery.data(this, "fx-magnifier")["'+cur+'"](a); }); }');$.fn["magnifier"+cur.substr(0,1).toUpperCase()+cur.substr(1)]=f;}$.fn.magnifier=function(options){return this.each(function(){new $.fx.magnifier(this,options);});};$.fx.magnifier=function(el,options){var self=this;this.items=[];this.element=el;this.options=options||{};var o=this.options;$.data(el,"fx-magnifier",this);$(el).addClass("fx-magnifier");o.distance=o.distance||150;o.magnification=o.magnification||2;o.baseline=o.baseline||0;o.verticalLine=o.verticalLine!=undefined?o.verticalLine:-0.5;o.items=o.items||"> *";this.pp=$(el).offset({border:false});$(o.items,el).each(function(){var co=$(this).offset({border:false});if(self.options.overlap){var cp=$(this).position();}self.items.push([this,co,[$(this).width(),$(this).height()],(cp||null)]);if(o.opacity){$(this).css("opacity",o.opacity.min);}});if(o.overlap){for(var i=0;i<this.items.length;i++){$(this.items[i][0]).css({position:"absolute",top:this.items[i][3].top,left:this.items[i][3].left});}}this.moveEvent=function(e){if(!self.disabled){self.magnify.apply(self,[e]);}};$(document).bind("mousemove",this.moveEvent);if(o.click){this.clickEvent=function(e){if(!self.disabled){o.click.apply(this,[e,{options:self.options,current:self.current[0],currentOffset:self.current[1]}]);}};$(el).bind("click",this.clickEvent);}};$.extend($.fx.magnifier.prototype,{destroy:function(){$(this.element).removeClass("fx-magnifier").removeClass("fx-magnifier-disabled");$(document).unbind("mousemove",this.moveEvent);if(this.clickEvent){$(this.element).unbind("click",this.clickEvent);}},enable:function(){$(this.element).removeClass("fx-magnifier-disabled");this.disabled=false;},disable:function(){$(this.element).addClass("fx-magnifier-disabled");this.reset();this.disabled=true;},reset:function(e){var o=this.options;var c;var distance=1;for(var i=0;i<this.items.length;i++){c=this.items[i];$(c[0]).css({width:c[2][0],height:c[2][1],top:(c[3]?c[3].top:0),left:(c[3]?c[3].left:0)});if(o.opacity){$(c[0]).css("opacity",o.opacity.min);}if(o.zIndex){$(c[0]).css("z-index","");}}},magnify:function(e){var cpp=$(this.element).offset({border:false});var p=[e.pageX-cpp.left,e.pageY];var o=this.options;var c;this.current=this.items[0];var distance=1;var overlap=((p[0]>this.pp.left-o.distance&&p[0]<this.pp.left+this.element.offsetWidth+o.distance)&&(p[1]>this.pp.top-o.distance&&p[1]<this.pp.top+this.element.offsetHeight+o.distance));if(!overlap){return false;}for(var i=0;i<this.items.length;i++){c=this.items[i];var olddistance=distance;if(!o.axis){distance=Math.sqrt(Math.pow(p[0]-((c[3]?this.cpp.left:c[1].left)+parseInt(c[0].style.left))-(c[0].offsetWidth/2),2)+Math.pow(p[1]-((c[3]?this.cpp.top:c[1].top)+parseInt(c[0].style.top))-(c[0].offsetHeight/2),2));}else{if(o.axis=="y"){distance=Math.abs(p[1]-((c[3]?this.cpp.top:c[1].top)+parseInt(c[0].style.top))-(c[0].offsetHeight/2));}else{distance=Math.abs(p[0]-((c[3]?this.cpp.left:c[1].left)+parseInt(c[0].style.left))-(c[0].offsetWidth/2));}}if(distance<o.distance){this.current=distance<olddistance?this.items[i]:this.current;if(!o.axis||o.axis!="y"){$(c[0]).css({width:c[2][0]+(c[2][0]*(o.magnification-1))-(((distance/o.distance)*c[2][0])*(o.magnification-1)),left:(c[3]?(c[3].left+o.verticalLine*((c[2][1]*(o.magnification-1))-(((distance/o.distance)*c[2][1])*(o.magnification-1)))):0)});}if(!o.axis||o.axis!="x"){$(c[0]).css({height:c[2][1]+(c[2][1]*(o.magnification-1))-(((distance/o.distance)*c[2][1])*(o.magnification-1)),top:(c[3]?c[3].top:0)+(o.baseline-0.5)*((c[2][0]*(o.magnification-1))-(((distance/o.distance)*c[2][0])*(o.magnification-1)))});}if(o.opacity){$(c[0]).css("opacity",o.opacity.max-(distance/o.distance)<o.opacity.min?o.opacity.min:o.opacity.max-(distance/o.distance));}}else{$(c[0]).css({width:c[2][0],height:c[2][1],top:(c[3]?c[3].top:0),left:(c[3]?c[3].left:0)});if(o.opacity){$(c[0]).css("opacity",o.opacity.min);}}if(o.zIndex){$(c[0]).css("z-index","");}}if(this.options.zIndex){$(this.current[0]).css("z-index",this.options.zIndex);}}});})(jQuery);
