Вы находитесь на странице: 1из 3

/*

* Zoomy 2.0.0 - jQuery plugin


* http://zoomy.me
*
* Copyright (c) 2012 Jacob Lowe (http://redeyeoperations.com)
* Licensed under the MIT (MIT-LICENSE.txt)

*
* Built for jQuery library
* http://jquery.com
*
* Addition fixes and modifications done by Larry Battle ( blarry@bateru.com )
* Code has been refactored and the logic has been corrected.
*
*/

(function(e){var c={count:[],pos:null};e.fn.zoomy=function(g,d){var
j="ontouchstart"in window||window.DocumentTouch&&document instanceof
DocumentTouch?!0:!1,A=function(){var a=(document.body||
document.documentElement).style,b="transition",c;if("string"==typeof a[b])return!
0;c=["Moz","Webkit","Khtml","O","ms"];for(var b=b.charAt(0).toUpperCase()
+b.substr(1),f=0;f<c.length;f++)if("string"==typeof a[c[f]+b])return!0;return!1}
(),q=j?"touchstart":"click",k={pos:{stop:function(a,b,c,f){return a-b-c+f},
mouse:function(a,b,c){return a-b-c},zoom:function(a,b,c,f,d){return(a-b)/c-
f+d}},css:function(a){if("undefined"!==typeof a&&0<a.length){var
b="translate3d("+a[2]+"px, "+a[3]+"px, 0)";return
e.extend({backgroundPosition:"-"+a[0]+"px -"+a[1]+"px"},A?{"-webkit-transform":b,"-
moz-transform":b,"-ms-tranform":b,"-o-tranform":b,transform:b}:
{top:a[3]+"px",left:a[2]+"px"})}return{}},ratio:function(a,b){return
a/b},setParams:function(a)
{a=a.attr("rel");c[a].size={};c[a].size.full=d.zoomSize+2*c[a].zoom.border;
c[a].size.half=c[a].size.full/2;c[a].size.ratioX=k.ratio(c[a].css.width,c[a].zoom.x
);c[a].size.ratioY=k.ratio(c[a].css.height,c[a].zoom.y);c[a].size.zoomX=c[a].zoom.x
-c[a].size.full;c[a].size.zoomY=c[a].zoom.y-
c[a].size.full;c[a].stop={};c[a].stop.main=c[a].size.half-
c[a].size.half*c[a].size.ratioX-
c[a].zoom.border*c[a].size.ratioX+c[a].zoom.border;c[a].stop.right=k.pos.stop(c[a].
css.width,c[a].size.full,c[a].zoom.border,c[a].stop.main);c[a].stop.bottom=k.pos.st
op(c[a].css.height,c[a].size.full,c[a].zoom.border,
c[a].stop.main)}},l={collision:function(a,b,c){var f=-c.stop.main>a,d=-
c.stop.main<=b,e=-c.stop.main>b,h=c.stop.bottom>b;b=c.stop.bottom<=b;var
g=c.stop.right>a,j=c.stop.right<=a;return-c.stop.main<=a&&d&&g&&h?0:f?d&&h?1:e?2:b?
3:null:e?g?4:5:j?h?6:7:b?8:null},possibilities:function(a,b,c,f,d,e){return{"0":
[c,f,d,e],1:[0,f,-b.stop.main,e],2:[0,0,-b.stop.main,-b.stop.main],3:
[0,b.size.zoomY,-b.stop.main,b.stop.bottom],4:[c,0,d,-b.stop.main],5:
[b.size.zoomX,0,b.stop.right,-b.stop.main],6:[b.size.zoomX,
f,b.stop.right,e],7:[b.size.zoomX,b.size.zoomY,b.stop.right,b.stop.bottom],8:
[c,b.size.zoomY,d,b.stop.bottom]}[a]},move:function(a,b,d){var
f=b.attr("rel"),e=a.offset();a=c[f];var g=j?-
70:0,h=k.pos.mouse(d.pageX,e.left,a.size.half),r=k.pos.mouse(d.pageY+g,e.top,a.size
.half),n=k.pos.zoom(d.pageX,e.left,a.size.ratioX,a.size.half,c[f].zoom.border);d=k.
pos.zoom(d.pageY+g,e.top,a.size.ratioY,a.size.half,c[f].zoom.border);f=l.collision(
h,r,a);a=k.css(l.possibilities(f,a,n,d,h,r));b.css(a)},classes:function(a){var b=
a.find(".zoomy").attr("rel");0===c[b].state||null===c[b].state?
a.removeClass("inactive"):a.addClass("inactive")},enter:function(a,b){var
d=b.attr("rel");c[d].state=1;b.css("visibility","visible");l.classes(a)},leave:func
tion(a,b,d){var f=b.attr("rel");c[f].state=null!==d?
null:0;b.css("visibility","hidden");l.classes(a)},callback:function(a,b){var
d=b.attr("rel");null!==a&&"function"===typeof
a&&a(e.extend({},c[d],c.pos))}},n={round:function(a){return!d.round?0:void
0===a?"100%":d.zoomSize/2+"px "+
d.zoomSize/2+"px 0px 0px"},glare:function(a)
{a.children("span").css({height:d.zoomSize/2,width:d.zoomSize-
10,margin:e.browser.msie&&9===parseInt(e.browser.version,10)?0:"5px auto","border-
radius":n.round(0)})},border:function(){var
a=d.border.replace(/^\s*|\s*$/g,""),b=a.split("
"),c=parseFloat(b[0]);return[a,2<b.length&&1*c===c?c:0]},params:function(a,b){var
g=a.children("img"),f=n.border(b),j={marginTop:g.css("margin-
top"),marginRight:g.css("margin-right"),marginBottom:g.css("margin-
bottom"),marginLeft:g.css("margin-left")},
m={"float":g.css("float")},h={display:"block",height:g.height(),width:g.width(),pos
ition:"relative"},k=b.attr("rel"),l={};"none"===m["float"]&&"center"===a.parent("*:
first").css("text-
align")&&(j.marginRight="auto",j.marginLeft="auto");e.extend(l,j,m,h);c[k].css=l;d.
glare||b.children("span").css({height:d.zoomSize-10,width:d.zoomSize-
10});b.css({height:d.zoomSize,width:d.zoomSize,top:0,left:0,"border-
radius":n.round(void
0,f[1]),border:f[0]});g.css("margin","0px");g.one("load",function()
{a.css(c[k].css);
a.parent(".zoomy-wrap").length&&a.parent(".zoomy-
wrap").css(c[k].css)}).each(function(){(this.complete||
e.browser.msie&&6===parseInt(e.browser.version,10))&&e(this).trigger("load")})}},u=
{image:function(a,b){var g=b.attr("rel");b.show().css({top:"-9999px",left:"-
9999px"});b.find("img").attr("src")!
==a&&b.find("img").attr("src",a).load(function(){var
f=d.glare?"<span/>":"",e=n.border(b);c[g].zoom={x:b.find("img").width(),y:b.find("i
mg").height(),border:e[1]};b.append(f).css({"background-image":"url("+
a+")",top:"0px",left:"0px",visibility:"hidden"}).find("img").remove();n.glare(b);k.
setParams(b)}).each(function(){(this.complete||
e.browser.msie&&6===parseInt(e.browser.version,10))&&e(this).trigger("load")})},zoo
m:function(a,b){c[b]={state:null,index:b};c.count.push(0);var k="string"===typeof
a.attr(d.attr)&&"href"!==d.attr?
a.attr(d.attr):a.attr("href"),f=null,t=d.zoomInit,m=j?['<div class="zoomy-wrap"
/>','<div class=" zoomy-btn zoomy-btn-'+b+'"><svg version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="40px" height="40px" viewBox="0 0 50 50" overflow="inherit"
xml:space="preserve"> <defs> <filter id="drop-
shadow"> <feGaussianBlur in="SourceAlpha" result="blur-out"
stdDeviation="1" /> <feOffset in="blur-out" result="the-shadow"
dx="0" dy="1"/> <feBlend in="SourceGraphic" in2="the-shadow"
mode="normal"/> </filter> </defs>
<path filter="url(#drop-shadow)" fill="#efefef" d="M23.265,30.324l-9.887,9.887l-
3.64-3.641l9.942-9.941c-2.687-4.42-2.134-10.246,1.668-14.049 c4.469-4.469,11.732-
4.451,16.224,0.04c4.491,4.491,4.509,11.754,0.04,16.224C33.723,32.732,27.718,33.223,
23.265,30.324z M24.601,15.833c-2.681,2.681-
2.67,7.039,0.024,9.733s7.053,2.705,9.733,0.025c2.682-2.681,2.671-7.04-0.023-9.734
C31.641,13.162,27.282,13.152,24.601,15.833z"/> </svg></div>']:
["",""];a.addClass("parent-zoom").wrap(m[0]).append('<div class="zoomy zoom-
obj-'+b+'" rel="'+b+'"><img id="tmp"/></div>').after(m[1]);var f=e(".zoom-
obj-"+b),h=[],r=j?"touchmove":"mousemove",m=j?"touchstart":"mouseover",q=j?"touchen
d":"mouseleave",v=function(b,c){b=j?c?c.touches[0]||
c.changedTouches[0]:b.originalEvent.touches[0]||
b.originalEvent.changedTouches[0]:b;l.move(a,f,b)},w=function()
{l.enter(a,f);a.bind(r,v);l.callback(d.zoomStart,f)},x=function(b)
{l.leave(a,f,b);a.unbind(r,v);l.callback(d.zoomStop,
f)},p=function(a,d){a=j?d?d.touches[0]||
d.changedTouches[0]:a.originalEvent.touches[0]||
a.originalEvent.changedTouches[0]:a;c.pos=a;0===c[b].state&&w()},y=function(a)
{c.pos=a;1===c[b].state&&x(null)},p={event:function(e){c.pos=e;d.clickable||
e.preventDefault();0===c[b].state||null===c[b].state?(w(),e=j&&"object"===typeof
e.originalEvent?e.originalEvent.changedTouches[0]||
e.originalEvent.touches[0]:e,l.move(a,f,e)):1===c[b].state&&("mouseover"!
==g&&"mouseenter"!==g)&&x(0)},mouseover:p,mouseleave:y,
touchstart:p,touchend:y,click:function(a)
{a.preventDefault();a.stopPropagation()}};"mouseover"===g||"touchstart"===g?
h[g]=p.event:(h[g]=p.event,h[m]=p[m]);!d.clickable&&"click"!
==g&&(h.click=p.click);h[q]=p[q];if(j){var s=0,m=e(".zoomy-
btn-"+b),z=m.parent("div");m.bind({touchstart:function(b)
{s=0;a.bind(h);a.trigger("touchstart",b.originalEvent);a.trigger("touchmove",b.orig
inalEvent);z.addClass("active")},touchmove:function(b){var
c=e(this);s+=1;a.trigger("touchmove",b.originalEvent);b.preventDefault();
setTimeout(function(){1===s&&c.trigger("touchend")},200)},touchend:function()
{z.removeClass("active");a.trigger("touchend");a.unbind(h)}});document.oncontextmen
u=function(){return!1};e(document).mousedown(function(a){return 2===a.button?!1:!
0})}else a.bind(h);e(window).resize(function(){a.attr("style","").parent(".zoomy-
wrap").attr("style","");window.setTimeout(function(){n.params(a,f)},100)});null!
==t&&"function"===typeof t&&t(a);n.params(a,f);u.image(k,f)},init:function(a,b)
{e("<img />").attr("src",
b.attr("src")).one("load",function(){u.zoom(a,c.count.length)}).each(function()
{(this.complete||
e.browser.msie&&6===parseInt(e.browser.version,10))&&e(this).trigger("load")})}};"o
bject"===typeof g&&void 0===d?(d=g,g=q):void
0===g&&(g=q);d=e.extend({zoomSize:200,round:!0,glare:!0,clickable:!
1,attr:"href",border:"5px solid
#999",zoomInit:null,zoomStart:null,zoomStop:null},d);e(this).each(function(){var
a=e(this),b=a.find("img");u.init(a,b)})}})(jQuery);

Вам также может понравиться