(function($){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(e){var el=this;el.blur();if(el.zoomimageCfg.loading===true){return false;}if(el.zoomimageCfg.zoomed==false){EYE.zoomimage.zoomIn(el);}else{EYE.zoomimage.zoomOut(el,false);}return false;},zoomIn:function(el){if(el.zoomimageCfg.loaded===false){if(el.zoomimageCfg.loading!=true){el.zoomimageCfg.loading=true;EYE.zoomimage.preload(el);}return;}if(el.zoomimageCfg.zoomed==true){EYE.zoomimage.focus(el);return;}el.zoomimageCfg.beforeZoomIn.apply(el,[el.zoomimageCfg.box]);var _1=EYE.getPosition(el,true);var _2=el.offsetHeight;var _3=el.offsetWidth;var _4=EYE.getScroll();var _5=el.zoomimageCfg.border+el.zoomimageCfg.shadow;var _6=el.zoomimageCfg.width+_5*2;var _7=el.zoomimageCfg.height+_5*2;var _8=_4.iw/_4.ih;var _9=el.zoomimageCfg.width/el.zoomimageCfg.height;if(_8>_9){if(_7>_4.ih){_7=_4.ih;_6=parseInt(_7*_9,10);}}else{if(_6>_4.iw){_6=_4.iw;_7=parseInt(_6/_9,10);}}var _a=el.zoomimageCfg.centered?_4.t+parseInt((_4.ih-_7)/2,10):Math.min(Math.max(_4.t,_1.y+(_2-_7)/2-_5),_4.t+_4.ih-_7);var _b=el.zoomimageCfg.centered?_4.l+parseInt((_4.iw-_6)/2,10):Math.min(Math.max(_4.l,_1.x+(_3-_6)/2-_5),_4.l+_4.iw-_6);var _c=_6-_5*2;var _d=_7-_5*2;if(el.zoomimageCfg.hideSource===true){el.style.visibility="hidden";}$("#"+el.zoomimageCfg.box).css({top:_1.y+"px",left:_1.x+"px",width:_3+"px",height:_2+"px"}).find(">div").hide().end().find("img").attr("src",el.zoomimageCfg.src).css({top:0,left:0,width:"100%",height:"100%",display:"block",borderWidth:"0px"}).end().animate({width:_c,height:_d,top:_a+_5,left:_b+_5},el.zoomimageCfg.duration,el.zoomimageCfg.easing,function(){$(this).css({top:_a+"px",left:_b+"px",width:_6+"px",height:_7+"px"}).find("img").css({top:el.zoomimageCfg.shadow+"px",left:el.zoomimageCfg.shadow+"px",width:_c+"px",height:_d+"px",borderWidth:el.zoomimageCfg.border+"px"}).end().find(">div:first").find("div.zoomimage_sc").css("height",_7-el.zoomimageCfg.shadow*2+"px").end().show();el.zoomimageCfg.zoomed=true;EYE.zoomimage.focus(el);el.zoomimageCfg.onZoomIn.apply(el,[el.zoomimageCfg.box]);});},showControls:function(el){if(el==undefined){return;}if(el.zoomimageCfg==undefined){el=$("#"+$(el).attr("zoomimage")).get(0);}var _e,_f,_10=el.zoomimageCfg.border+el.zoomimageCfg.shadow;$("#"+el.zoomimageCfg.box).find("img").each(function(){_f=parseInt($.curCSS(this,"width"),10);}).end().get(0).zoomimageControls=true;if(el.zoomimageCfg.caption){$("#"+el.zoomimageCfg.box).find(">div:eq(2)").stop().css({bottom:_10+"px",left:_10+"px",width:_f+"px"}).show().each(function(){this.style.height="auto";_e=this.offsetHeight;this.style.height="0";}).animate({height:_e},el.zoomimageCfg.duration);}if(el.zoomimageCfg.controls){if(EYE.zoomimage.libs[el.zoomimageCfg.lib]>1){$("#"+el.zoomimageCfg.box).find(">div:eq(1)").show().each(function(){if(!el.zoomimageCfg.controlsHeight){el.zoomimageCfg.controlsHeight=this.offsetHeight;}this.style.height="0";}).css({top:_10+"px",left:_10+"px",width:_f+"px"}).animate({height:el.zoomimageCfg.controlsHeight},el.zoomimageCfg.duration);}}},zoomOut:function(el,_11){var _12,_13,_14,_15;if(el.zoomimageCfg){if(el.zoomimageCfg.zoomed===false){return;}el.zoomimageCfg.beforeZoomOut.apply(el,[el.zoomimageCfg.box]);_12=document.getElementById(el.zoomimageCfg.box);}else{_12=el;el=$("a[href="+$("img",_12).attr("src")+"]").get(0);}if(el){_13=EYE.getPosition(el,true);el.zoomimageCfg.zoomed=false;_14=el.zoomimageCfg.border+el.zoomimageCfg.shadow;_15={width:el.offsetWidth,height:el.offsetHeight};}else{_14=EYE.zoomimage.defaults.border+EYE.zoomimage.defaults.shadow;_15={width:0,height:0};_13=EYE.getPosition(_12,true);_13.y+=parseInt(_12.offsetHeight/2,10);_13.x+=parseInt(_12.offsetWidth/2,10);}$(_12).css({top:_12.offsetTop+_14+"px",left:_12.offsetLeft+_14+"px",width:_12.offsetWidth-_14*2+"px",height:_12.offsetHeight-_14*2+"px"}).find(">div").stop().hide().end().find("img").css({top:0,left:0,width:"100%",height:"100%",borderWidth:"0px"}).end().animate({top:_13.y+"px",left:_13.x+"px",width:_15.width+"px",height:_15.height+"px"},el?el.zoomimageCfg.duration:EYE.zoomimage.defaults.duration,el.zoomimageCfg.easing,function(){EYE.zoomimage.blur();$(this).hide();if(el){if(el.zoomimageCfg.hideSource===true){el.style.visibility="visible";}el.zoomimageCfg.onZoomOut.apply(el,[el.zoomimageCfg.box]);if(!_11){EYE.zoomimage.focus($("div.zoomimage:visible:last").not(":animated").get(0));}}else{$(_12).stop().remove();}});},mouseOver:function(e){var _16=document.getElementById($(this).attr("zoomimage"));if(_16.zoomimageCfg.zoomed===true&&this.zoomimageControls==false){EYE.zoomimage.showControls(_16);}return false;},mouseOut:function(e){if(!EYE.isChildOf(this,e.relatedTarget,this)){$(this).find(">div:not(:first)").stop().hide();this.zoomimageControls=false;}return false;},mouseDown:function(e){var _17=document.getElementById($(this).attr("zoomimage"));if(_17){$.extend(EYE.zoomimage,{current:this,prevent:_17.zoomimageCfg.prevent,moved:false,diff:{x:e.pageX-this.offsetLeft,y:e.pageY-this.offsetTop},pointer:{x:e.pageX,y:e.pageY}});$(document).bind("mousemove",EYE.zoomimage.mouseMove).bind("mouseup",EYE.zoomimage.mouseUp);}else{$(this).zoomimageClear();}return false;},mouseMove:function(e){var _18=Math.abs(EYE.zoomimage.pointer.x-e.pageX);var _19=Math.abs(EYE.zoomimage.pointer.y-e.pageY);if(EYE.zoomimage.moved===false){if(_18>EYE.zoomimage.prevent||_19>EYE.zoomimage.prevent){EYE.zoomimage.moved=true;$(EYE.zoomimage.current).addClass("zoomimage_move");if(!$(EYE.zoomimage.current).is(".zoomimage_focused")){EYE.zoomimage.focus(EYE.zoomimage.current);}}}else{EYE.zoomimage.current.style.top=e.pageY-EYE.zoomimage.diff.y+"px";EYE.zoomimage.current.style.left=e.pageX-EYE.zoomimage.diff.x+"px";}return false;},mouseUp:function(e){$(EYE.zoomimage.current).removeClass("zoomimage_move");EYE.zoomimage.current=null;$(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);return false;},imageClick:function(e){$(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);var el=document.getElementById($(this).attr("zoomimage"));if(el){if(EYE.zoomimage.moved===false&&$(this).is(".zoomimage_focused")){if($(e.target).is("a")){EYE.zoomimage.zoomNext(el,e.target.className=="zoomimage_next"?1:-1);var _1a=true;}else{EYE.zoomimage.zoomOut(el,_1a||false);}}else{if(!$(this).is(".zoomimage_focused")){EYE.zoomimage.focus(this);}}}else{$(this).zoomimageClear();}return false;},clear:function(){var _1b=this;if(_1b.size()==0){_1b=$("div.zoomimage");}return _1b.each(function(){var _1c=document.getElementById($(this).attr("zoomimage"));if(_1c){EYE.zoomimage.zoomOut(_1c,false);}else{EYE.zoomimage.zoomOut(this,false);}});},zoomNext:function(el,dir){if(el.zoomimageCfg.zoomed===false){return;}EYE.zoomimage.zoomOut(el,true);var _1d=el.zoomimageCfg.iteration+dir;var lib=$(el).attr("zoomimage");var _1e=EYE.zoomimage.libs[lib];if(_1d<0){_1d=_1e-1;}else{if(_1d>=_1e){_1d=0;}}EYE.zoomimage.zoomIn($("a[zoomimage=\""+lib+"\"]").get(_1d));},keyPressed:function(e){var el=$("div.zoomimage_focused");if(el.size()==1){var _1f=e.charCode||e.keyCode||-1;el=$("#"+$(el).attr("zoomimage")).get(0);var lib=$(el).attr("zoomimage");switch(_1f){case 35:if(EYE.zoomimage.libs[lib]>1&&EYE.zoomimage.libs[lib]-1!=el.zoomimageCfg.iteration){EYE.zoomimage.zoomNext(el,EYE.zoomimage.libs[lib]-el.zoomimageCfg.iteration-1);return false;}break;case 36:if(EYE.zoomimage.libs[lib]>1&&el.zoomimageCfg.iteration!=0){EYE.zoomimage.zoomNext(el,-el.zoomimageCfg.iteration);return false;}break;case 40:case 37:case 8:case 33:case 80:case 112:if(EYE.zoomimage.libs[lib]>1){EYE.zoomimage.zoomNext(el,-1);return false;}break;case 38:case 39:case 34:case 32:case 110:case 78:if(EYE.zoomimage.libs[lib]>1){EYE.zoomimage.zoomNext(el,1);return false;}break;case 27:EYE.zoomimage.zoomOut(el,false);return false;break;}}},focus:function(el){if(el==undefined){return;}if(el.zoomimageCfg==undefined){el=$("#"+$(el).attr("zoomimage")).get(0);}else{var _20=true;}EYE.zoomimage.blur(el);$("#"+el.zoomimageCfg.box).not(".zoomimage_focused").addClass("zoomimage_focused");el.zoomimageCfg.onFocus.apply(el,[el.zoomimageCfg.box]);if(el.zoomimageCfg.controlsTrigger=="focus"||_20){EYE.zoomimage.showControls(el);}},blur:function(el){$("div.zoomimage_focused").not("#"+(el==undefined?"fakezoomimage":el.zoomimageCfg.box)).removeClass("zoomimage_focused").each(function(){this.zoomimageControls=false;}).find(">div:not(:first)").stop().hide();},preload:function(el){var _21=$("#"+el.zoomimageCfg.box).show();_21.find(">div, img").hide();var _22=EYE.getPosition(el,true);_21.find(">div:last").show().end().css({top:_22.y+"px",left:_22.x+"px",width:el.offsetWidth+"px",height:el.offsetHeight+"px"});var _23=new Image();_23.src=el.href;if(_23.complete){EYE.zoomimage.markPreloaded(_23,el);}else{_23.onload=function(){EYE.zoomimage.markPreloaded(_23,el);};}},markPreloaded:function(_24,el){$.extend(el.zoomimageCfg,{loaded:true,width:_24.width,height:_24.height,src:_24.src});$("#"+el.zoomimageCfg.box).find("div.zoomimage_loading").hide();if(el.zoomimageCfg.loading){el.zoomimageCfg.loading=false;EYE.zoomimage.zoomIn(el);}el.zoomimageCfg.onLoad.apply(el,[el.zoomimageCfg.box]);},init:function(opt){var _25=parseInt(Math.random()*2000,10);EYE.zoomimage.libs[_25]=0;opt=$.extend({lib:_25},EYE.zoomimage.defaults,opt||{});return this.each(function(){var _26=$(this);var el=this;if(el.href&&el.href.toLowerCase().match(EYE.zoomimage.types)!=null){el.zoomimageCfg=$.extend({},opt,{zoomed:false,loading:false,loaded:false,animated:false,src:el.href,iteration:EYE.zoomimage.libs[_25],box:"zoomimage_"+parseInt(Math.random()*2000,10)+""});EYE.zoomimage.libs[_25]++;_26.bind("click",EYE.zoomimage.click).attr("zoomimage",_25).attr("zoomimageBox",el.zoomimageCfg.box);var _27=_26.attr("id");if(!_27){_27=el.zoomimageCfg.box+"_trigger";_26.attr("id",_27);}var _28=$(el).attr("title");if(_28==""||_28==false){el.zoomimageCfg.caption=false;}$(EYE.zoomimage.template.join("")).attr("id",el.zoomimageCfg.box).attr("zoomimage",_27).addClass(el.zoomimageCfg.className).appendTo(document.body).bind("mousedown",EYE.zoomimage.mouseDown).bind("click",EYE.zoomimage.imageClick).each(function(){this.zoomimageControls=false;if(el.zoomimageCfg.controlsTrigger!="focus"){$(this).bind("mouseover",EYE.zoomimage.mouseOver).bind("mouseout",EYE.zoomimage.mouseOut);}}).find(">div").not(":first").css("opacity",el.zoomimageCfg.opacity).end().filter("div:eq(2)").html("<p>"+_28+"</p>");if(el.zoomimageCfg.preload=="load"){EYE.zoomimage.preload(el);}if(EYE.zoomimage.trackKey===false){EYE.zoomimage.trackKey=true;$(document).bind("keydown",EYE.zoomimage.keyPressed);}}});}}});$.fn.extend({zoomimage:EYE.zoomimage.init,zoomimageClear:EYE.zoomimage.clear});})(jQuery);