;(function($){var css,titles;css={a:{'position':'relative','overflow':'hidden','display':'inline-block','width':undefined,'height':undefined},img:{'position':'absolute','top':'0px','left':'0px'}};titles={small:'Click to zoom in',large:'Click to zoom out'};function proportions_(size1,size2,xy){return[Math.round(xy[0]/(size1[0]/size2[0])),Math.round(xy[1]/(size1[1]/size2[1]))];}
function isLarge_(a,img){return(img.width()>a.width());}
function getPoint_(el,evt){var offset;offset=$(el).offset();return[evt.pageX-offset.left,evt.pageY-offset.top];}
function getCoords_(a,img,evt){var pt,xy,top,left;pt=getPoint_(a,evt);xy=proportions_(img.dimensions.small,img.dimensions.large,pt);top=(0-(xy[1]-pt[1]))+'px';left=(0-(xy[0]-pt[0]))+'px';return[left,top];}
function applyCSS_(a,img){if(true!==img.applied_){css.a.width=img.dimensions.small[0]+'px';css.a.height=img.dimensions.small[1]+'px';a.css(css.a);img.css(css.img);img.applied_=true;}}
function move_(evt){var a,img,coords;a=evt.data.a;img=evt.data.img;coords=getCoords_(a,img,evt);img.css({top:coords[1],left:coords[0]});evt.preventDefault();}
function scaleUp_(a,img,evt){var coords;coords=getCoords_(a,img,evt);img.animate({top:coords[1],left:coords[0],width:img.dimensions.large[0],height:img.dimensions.large[1]},'fast',function(){a.bind('mousemove',{a:a,img:img},move_).attr('title',titles.large);});img.attr('src',img.srcs.large);}
function scaleDown_(a,img){img.animate({top:'0px',left:'0px',width:img.dimensions.small[0],height:img.dimensions.small[1]},'fast',function(){a.unbind('mousemove',move_).attr('title',titles.small);img.attr('src',img.srcs.small);});}
function panzoom(selector){selector=selector||'.panzoom a';$.each($(selector),function(i,val){var a,img,lrg;a=$(this);img=$('img',a);lrg=new Image();lrg.onload=function(evt){img.srcs={small:img.attr('src'),large:this.src};img.dimensions={small:[img.width(),img.height()],large:[lrg.width,lrg.height]};a.click(function(evt){applyCSS_(a,img);if(isLarge_(a,img)){scaleDown_(a,img);}
else{scaleUp_(a,img,evt);}
evt.preventDefault();}).attr('title',titles.small).mouseout(function(evt){if(isLarge_(a,img)){scaleDown_(a,img);}
evt.preventDefault();});};lrg.src=a[0].href;});}
$.extend({panzoom:panzoom});})(jQuery);
