/*
 *  Zoomy Zoom - jQuery plugin
 *	written by Jacob Lowe	
 *	http://redeyeops.com/plugins/zoomy
 *
 *	Copyright (c) 2010 Jacob Lowe (http://redeyeoperations.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	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(q){var m=[];jQuery.fn.zoomy=function(h){h=q.extend({zoomSize:200,round:true,glare:true,zoomText:"kliknutím <span>můžete zahrádku prozkoumat</span>"},h);var z=function(a,c){m.push(0);var d=a.attr("href"),b;a.css({position:"relative",cursor:"cell"}).append('<div class="zoomy" rel="'+c+'"><img/></div>');b=a.find(".zoomy[rel="+c+"]");x(a,b);a.hover(function(){if(m[c]===0)a.find(".zoomBar").length===0?a.append('<span class="zoomBar">'+h.zoomText+"</span>"):a.find(".zoomBar").slideDown(200);else s(a,b,d)},function(){m[c]===
0?a.find(".zoomBar").slideUp(200):y(a,b)}).click(function(){if(m[c]===0){b.css({opacity:1}).addClass("cursorHide").show();m[c]=1;a.find(".zoomBar").slideUp(200);t(a,d,b);setTimeout(function(){b.find("img").length||s(a,b,d)},150)}else{b.css({opacity:0}).removeClass("cursorHide");m[c]=0}u(a);return false})},s=function(a,c,d){if(c.attr("id")!=="brokeZoomy"){if(c.find("img").length){t(a,d,c);setTimeout(function(){c.find("img").length||r(a,c)},150)}else r(a,c);u(a)}},u=function(a){var c=a.find("img");
m[a.find(".zoomy").attr("rel")]===0?c.css({opacity:1}):c.css({opacity:0.9})},y=function(a,c){c.attr("id")!=="brokeZoomy"&&!c.find("img").length&&setTimeout(function(){c.hide()},100)},r=function(a,c){var d=a.offset();a.mousemove(function(b){if(m[c.attr("rel")]===1){var o=parseInt(a.attr("x"),10),g=parseInt(a.attr("y"),10),f=a.width(),k=a.height(),j=h.zoomSize,e=j/2,n=b.pageX-d.left-e,l=b.pageY-d.top-e,v=f/o,p=Math.round((b.pageX-d.left)/v)-e;b=Math.round((b.pageY-d.top)/(k/g))-e;e=Math.round(e-e*v);
f=f-j+e;k=k-j+e;o=[{backgroundPosition:"-"+p+"px -"+b+"px",left:n,top:l},{backgroundPosition:"0px -"+b+"px",left:-e,top:l},{backgroundPosition:"0px 0px",left:-e,top:-e},{backgroundPosition:"0px -"+(g-j)+"px",left:-e,top:k},{backgroundPosition:"-"+p+"px 0px",left:n,top:-e},{backgroundPosition:"-"+(o-j)+"px 0px",left:f,top:-e},{backgroundPosition:"-"+(o-j)+"px -"+b+"px",left:f,top:l},{backgroundPosition:"-"+(o-j)+"px -"+(g-j)+"px",left:f,top:k},{backgroundPosition:"-"+p+"px -"+(g-j)+"px",left:n,top:k}];
g=-e>n;j=-e<=l;p=-e>l;b=k>l;l=k<=l;k=f>n;f=f<=n;n=-e<=n&&j&&k&&b?0:g?j&&b?1:p?2:l?3:null:p?k?4:5:f?b?6:7:l?8:null;c.show().css(o[n]||{})}})},t=function(a,c,d){a.children("img").height();a.children("img").width();d.find("img").attr("src")!==c&&d.find("img").attr("src",c).load(function(){a.attr({x:d.find("img").width(),y:d.find("img").height()});if(h.glare){d.html("<span/>").css({"background-image":"url("+c+")"});setTimeout(function(){d.children("span").css({height:h.zoomSize-10,width:h.zoomSize-10}).css(w())},
100)}else d.html("").css({"background-image":"url("+c+")"});r(a,d)})},x=function(a,c){var d=a.children("img"),b=d.css("margin-left");c.css({height:h.zoomSize,width:h.zoomSize}).css(w());h.glare||c.children("span").css({height:h.zoomSize-10,width:h.zoomSize-10});if(b===undefined||b==="")b="5px";b={left:[{margin:b,"float":"left"}],right:[{margin:b,"float":"right"}],center:[{margin:b+" auto",display:"block"}],unknown:[{margin:b,display:"block"}],none:[{margin:b,display:"block"}]};var o=function(g){var f=
g.css("float");if(f)if(f==="none")if(g=g.attr("style")){f=g.split(";");for(i=0;i<=f.length;i++){g=f[i].split(":");if(g[0]==="float")return g[1]}}else return f;else return f;else return g.parent("*").css("text-align")==="center"?"center":"unknown"}(d);d.css("margin","0px");a.css(b[o][0]);d.one("load",function(){a.css({display:"block",height:d.height(),width:d.width(),cursor:"normal"})}).each(function(){if(this.complete||jQuery.browser.msie&&parseInt(jQuery.browser.version)===6)q(this).trigger("load")})},
w=function(){if(!h.round)return"";var a={};a["-webkit-border-radius"]=a["-moz-border-radius"]=a["border-radius"]=h.zoomSize/2+"px";return a};q(this).each(function(){z(q(this),m.length)})}})(jQuery);
