(function(A){EYE.extend({zoomimage:{libs:{},types:/\.jpg|\.jpeg|\.png|\.gif|\.bmp/g,current:null,moved:false,pointer:{x:0,y:0},diff:{x:0,y:0},trackKey:false,defaults:{opacity:0.3,border:0,shadow:6,duration:300,prevent:14,controls:true,caption:true,hideSource:false,centered:false,className:false,onLoad:function(){return false},beforeZoomIn:function(){return false},onZoomIn:function(){return false},beforeZoomOut:function(){return false},onZoomOut:function(){return false},onFocus:function(){return false},controlsTrigger:"focus",easing:"linear",preload:"click"},template:['<div class="zoomimage">','<div class="zoomimage_s">','<div class="zoomimage_st">','<div class="zoomimage_stl"></div>','<div class="zoomimage_stc"></div>','<div class="zoomimage_str"></div>',"</div>",'<div class="zoomimage_sc">','<div class="zoomimage_scl"></div>','<div class="zoomimage_scc"></div>','<div class="zoomimage_scr"></div>',"</div>",'<div class="zoomimage_sb">','<div class="zoomimage_sbl"></div>','<div class="zoomimage_sbc"></div>','<div class="zoomimage_sbr"></div>',"</div>","</div>",'<img src="" />','<div class="zoomimage_controls">','<a href="#" class="zoomimage_prev"></a>','<a href="#" class="zoomimage_next"></a>',"</div>",'<div class="zoomimage_caption"></div>','<div class="zoomimage_loading"></div>',"</div>"],click:function(C){var B=this;B.blur();if(B.zoomimageCfg.loading===true){return false}if(B.zoomimageCfg.zoomed==false){EYE.zoomimage.zoomIn(B)}else{EYE.zoomimage.zoomOut(B,false)}return false},zoomIn:function(C){if(C.zoomimageCfg.loaded===false){if(C.zoomimageCfg.loading!=true){C.zoomimageCfg.loading=true;EYE.zoomimage.preload(C)}return }if(C.zoomimageCfg.zoomed==true){EYE.zoomimage.focus(C);return }C.zoomimageCfg.beforeZoomIn.apply(C,[C.zoomimageCfg.box]);var M=EYE.getPosition(C,true);var G=C.offsetHeight;var N=C.offsetWidth;var L=EYE.getScroll();var D=C.zoomimageCfg.border+C.zoomimageCfg.shadow;var B=C.zoomimageCfg.width+D*2;var O=C.zoomimageCfg.height+D*2;var H=L.iw/L.ih;var E=C.zoomimageCfg.width/C.zoomimageCfg.height;if(H>E){if(O>L.ih){O=L.ih;B=parseInt(O*E,10)}}else{if(B>L.iw){B=L.iw-50;O=parseInt(B/E,10)}}var K=C.zoomimageCfg.centered?L.t+parseInt((L.ih-O)/2,10):Math.min(Math.max(L.t,M.y+(G-O)/2-D),L.t+L.ih-O);var F=C.zoomimageCfg.centered?L.l+parseInt((L.iw-B)/2,10):Math.min(Math.max(L.l,M.x+(N-B)/2-D),L.l+L.iw-B);var J=B-D*2;var I=O-D*2;if(C.zoomimageCfg.hideSource===true){C.style.visibility="hidden"}A("#"+C.zoomimageCfg.box).css({top:M.y+"px",left:M.x+"px",width:N+"px",height:G+"px"}).find(">div").hide().end().find("img").attr("src",C.zoomimageCfg.src).css({top:0,left:0,width:"100%",height:"100%",display:"block",borderWidth:"0px"}).end().animate({width:J,height:I,top:K+D,left:F+D},C.zoomimageCfg.duration,C.zoomimageCfg.easing,function(){A(this).css({top:K+"px",left:F+"px",width:B+"px",height:O+"px"}).find("img").css({top:C.zoomimageCfg.shadow+"px",left:C.zoomimageCfg.shadow+"px",width:J+"px",height:I+"px",borderWidth:C.zoomimageCfg.border+"px"}).end().find(">div:first").find("div.zoomimage_sc").css("height",O-C.zoomimageCfg.shadow*2+"px").end().show();C.zoomimageCfg.zoomed=true;EYE.zoomimage.focus(C);C.zoomimageCfg.onZoomIn.apply(C,[C.zoomimageCfg.box])})},showControls:function(E){if(E==undefined){return }if(E.zoomimageCfg==undefined){E=A("#"+A(E).attr("zoomimage")).get(0)}var B,D,C=E.zoomimageCfg.border+E.zoomimageCfg.shadow;A("#"+E.zoomimageCfg.box).find("img").each(function(){D=parseInt(A.curCSS(this,"width"),10)}).end().get(0).zoomimageControls=true;if(E.zoomimageCfg.caption){A("#"+E.zoomimageCfg.box).find(">div:eq(2)").stop().css({bottom:C+"px",left:C+"px",width:D+"px"}).show().each(function(){this.style.height="auto";B=this.offsetHeight;this.style.height="0"}).animate({height:B},E.zoomimageCfg.duration)}if(E.zoomimageCfg.controls){if(EYE.zoomimage.libs[E.zoomimageCfg.lib]>1){A("#"+E.zoomimageCfg.box).find(">div:eq(1)").show().each(function(){if(!E.zoomimageCfg.controlsHeight){E.zoomimageCfg.controlsHeight=this.offsetHeight}this.style.height="0"}).css({top:C+"px",left:C+"px",width:D+"px"}).animate({height:E.zoomimageCfg.controlsHeight},E.zoomimageCfg.duration)}}},zoomOut:function(G,F){var E,D,C,B;if(G.zoomimageCfg){if(G.zoomimageCfg.zoomed===false){return }G.zoomimageCfg.beforeZoomOut.apply(G,[G.zoomimageCfg.box]);E=document.getElementById(G.zoomimageCfg.box)}else{E=G;G=A("a[href="+A("img",E).attr("src")+"]").get(0)}if(G){D=EYE.getPosition(G,true);G.zoomimageCfg.zoomed=false;C=G.zoomimageCfg.border+G.zoomimageCfg.shadow;B={width:G.offsetWidth,height:G.offsetHeight}}else{C=EYE.zoomimage.defaults.border+EYE.zoomimage.defaults.shadow;B={width:0,height:0};D=EYE.getPosition(E,true);D.y+=parseInt(E.offsetHeight/2,10);D.x+=parseInt(E.offsetWidth/2,10)}A(E).css({top:E.offsetTop+C+"px",left:E.offsetLeft+C+"px",width:E.offsetWidth-C*2+"px",height:E.offsetHeight-C*2+"px"}).find(">div").stop().hide().end().find("img").css({top:0,left:0,width:"100%",height:"100%",borderWidth:"0px"}).end().animate({top:D.y+"px",left:D.x+"px",width:B.width+"px",height:B.height+"px"},G?G.zoomimageCfg.duration:EYE.zoomimage.defaults.duration,G.zoomimageCfg.easing,function(){EYE.zoomimage.blur();A(this).hide();if(G){if(G.zoomimageCfg.hideSource===true){G.style.visibility="visible"}G.zoomimageCfg.onZoomOut.apply(G,[G.zoomimageCfg.box]);if(!F){EYE.zoomimage.focus(A("div.zoomimage:visible:last").not(":animated").get(0))}}else{A(E).stop().remove()}})},mouseOver:function(C){var B=document.getElementById(A(this).attr("zoomimage"));if(B.zoomimageCfg.zoomed===true&&this.zoomimageControls==false){EYE.zoomimage.showControls(B)}return false},mouseOut:function(B){if(!EYE.isChildOf(this,B.relatedTarget,this)){A(this).find(">div:not(:first)").stop().hide();this.zoomimageControls=false}return false},mouseDown:function(C){var B=document.getElementById(A(this).attr("zoomimage"));if(B){A.extend(EYE.zoomimage,{current:this,prevent:B.zoomimageCfg.prevent,moved:false,diff:{x:C.pageX-this.offsetLeft,y:C.pageY-this.offsetTop},pointer:{x:C.pageX,y:C.pageY}});A(document).bind("mousemove",EYE.zoomimage.mouseMove).bind("mouseup",EYE.zoomimage.mouseUp)}else{A(this).zoomimageClear()}return false},mouseMove:function(D){var C=Math.abs(EYE.zoomimage.pointer.x-D.pageX);var B=Math.abs(EYE.zoomimage.pointer.y-D.pageY);if(EYE.zoomimage.moved===false){if(C>EYE.zoomimage.prevent||B>EYE.zoomimage.prevent){EYE.zoomimage.moved=true;A(EYE.zoomimage.current).addClass("zoomimage_move");if(!A(EYE.zoomimage.current).is(".zoomimage_focused")){EYE.zoomimage.focus(EYE.zoomimage.current)}}}else{EYE.zoomimage.current.style.top=D.pageY-EYE.zoomimage.diff.y+"px";EYE.zoomimage.current.style.left=D.pageX-EYE.zoomimage.diff.x+"px"}return false},mouseUp:function(B){A(EYE.zoomimage.current).removeClass("zoomimage_move");EYE.zoomimage.current=null;A(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);return false},imageClick:function(D){A(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);var C=document.getElementById(A(this).attr("zoomimage"));if(C){if(EYE.zoomimage.moved===false&&A(this).is(".zoomimage_focused")){if(A(D.target).is("a")){EYE.zoomimage.zoomNext(C,D.target.className=="zoomimage_next"?1:-1);var B=true}else{EYE.zoomimage.zoomOut(C,B||false)}}else{if(!A(this).is(".zoomimage_focused")){EYE.zoomimage.focus(this)}}}else{A(this).zoomimageClear()}return false},clear:function(){var B=this;if(B.size()==0){B=A("div.zoomimage")}return B.each(function(){var C=document.getElementById(A(this).attr("zoomimage"));if(C){EYE.zoomimage.zoomOut(C,false)}else{EYE.zoomimage.zoomOut(this,false)}})},zoomNext:function(D,C){if(D.zoomimageCfg.zoomed===false){return }EYE.zoomimage.zoomOut(D,true);var F=D.zoomimageCfg.iteration+C;var E=A(D).attr("zoomimage");var B=EYE.zoomimage.libs[E];if(F<0){F=B-1}else{if(F>=B){F=0}}EYE.zoomimage.zoomIn(A('a[zoomimage="'+E+'"]').get(F))},keyPressed:function(C){var B=A("div.zoomimage_focused");if(B.size()==1){var E=C.charCode||C.keyCode||-1;B=A("#"+A(B).attr("zoomimage")).get(0);var D=A(B).attr("zoomimage");switch(E){case 35:if(EYE.zoomimage.libs[D]>1&&EYE.zoomimage.libs[D]-1!=B.zoomimageCfg.iteration){EYE.zoomimage.zoomNext(B,EYE.zoomimage.libs[D]-B.zoomimageCfg.iteration-1);return false}break;case 36:if(EYE.zoomimage.libs[D]>1&&B.zoomimageCfg.iteration!=0){EYE.zoomimage.zoomNext(B,-B.zoomimageCfg.iteration);return false}break;case 40:case 37:case 8:case 33:case 80:case 112:if(EYE.zoomimage.libs[D]>1){EYE.zoomimage.zoomNext(B,-1);return false}break;case 38:case 39:case 34:case 32:case 110:case 78:if(EYE.zoomimage.libs[D]>1){EYE.zoomimage.zoomNext(B,1);return false}break;case 27:EYE.zoomimage.zoomOut(B,false);return false;break}}},focus:function(B){if(B==undefined){return }if(B.zoomimageCfg==undefined){B=A("#"+A(B).attr("zoomimage")).get(0)}else{var C=true}EYE.zoomimage.blur(B);A("#"+B.zoomimageCfg.box).not(".zoomimage_focused").addClass("zoomimage_focused");B.zoomimageCfg.onFocus.apply(B,[B.zoomimageCfg.box]);if(B.zoomimageCfg.controlsTrigger=="focus"||C){EYE.zoomimage.showControls(B)}},blur:function(B){A("div.zoomimage_focused").not("#"+(B==undefined?"fakezoomimage":B.zoomimageCfg.box)).removeClass("zoomimage_focused").each(function(){this.zoomimageControls=false}).find(">div:not(:first)").stop().hide()},preload:function(D){var C=A("#"+D.zoomimageCfg.box).show();C.find(">div, img").hide();var B=EYE.getPosition(D,true);C.find(">div:last").show().end().css({top:B.y+"px",left:B.x+"px",width:D.offsetWidth+"px",height:D.offsetHeight+"px"});var E=new Image();E.src=D.href;if(E.complete){EYE.zoomimage.markPreloaded(E,D)}else{E.onload=function(){EYE.zoomimage.markPreloaded(E,D)}}},markPreloaded:function(C,B){A.extend(B.zoomimageCfg,{loaded:true,width:C.width,height:C.height,src:C.src});A("#"+B.zoomimageCfg.box).find("div.zoomimage_loading").hide();if(B.zoomimageCfg.loading){B.zoomimageCfg.loading=false;EYE.zoomimage.zoomIn(B)}B.zoomimageCfg.onLoad.apply(B,[B.zoomimageCfg.box])},init:function(B){var C=parseInt(Math.random()*2000,10);EYE.zoomimage.libs[C]=0;B=A.extend({lib:C},EYE.zoomimage.defaults,B||{});return this.each(function(){var E=A(this);var F=this;if(F.href&&F.href.toLowerCase().match(EYE.zoomimage.types)!=null){F.zoomimageCfg=A.extend({},B,{zoomed:false,loading:false,loaded:false,animated:false,src:F.href,iteration:EYE.zoomimage.libs[C],box:"zoomimage_"+parseInt(Math.random()*2000,10)+""});EYE.zoomimage.libs[C]++;E.bind("click",EYE.zoomimage.click).attr("zoomimage",C).attr("zoomimageBox",F.zoomimageCfg.box);var G=E.attr("id");if(!G){G=F.zoomimageCfg.box+"_trigger";E.attr("id",G)}var D=A(F).attr("title");if(D==""||D==false){F.zoomimageCfg.caption=false}A(EYE.zoomimage.template.join("")).attr("id",F.zoomimageCfg.box).attr("zoomimage",G).addClass(F.zoomimageCfg.className).appendTo(document.body).bind("mousedown",EYE.zoomimage.mouseDown).bind("click",EYE.zoomimage.imageClick).each(function(){this.zoomimageControls=false;if(F.zoomimageCfg.controlsTrigger!="focus"){A(this).bind("mouseover",EYE.zoomimage.mouseOver).bind("mouseout",EYE.zoomimage.mouseOut)}}).find(">div").not(":first").css("opacity",F.zoomimageCfg.opacity).end().filter("div:eq(2)").html("<p>"+D+"</p>");if(F.zoomimageCfg.preload=="load"){EYE.zoomimage.preload(F)}if(EYE.zoomimage.trackKey===false){EYE.zoomimage.trackKey=true;A(document).bind("keydown",EYE.zoomimage.keyPressed)}}})}}});A.fn.extend({zoomimage:EYE.zoomimage.init,zoomimageClear:EYE.zoomimage.clear})})(jQuery);
