YAHOO.widget.ImageMagnifier=function(r,N){var B=YAHOO.util.Dom;var M=YAHOO.util.Event;var d=YAHOO.lang;var C;var y;var T;function p(){var U,l,i,Z,O,V,A,q;U=T.width/r.width;l=T.height/r.height;i=Math.floor(C.clientWidth/2)-1;if(YAHOO.env.ua.ie){Z=document.createElement("v:oval");Z.style.position="absolute";Z.style.left=Z.style.top="0px";Z.style.width=y.offsetWidth+"px";Z.style.height=y.offsetHeight+"px";O=document.createElement("v:fill");O.type="frame";O.src=T.src;O.size=(T.width/y.offsetWidth)+", "+(T.height/y.offsetHeight);Z.appendChild(O);y.appendChild(Z);A=function(){var S,b;S=(B.getX(C)+C.clientWidth/2)-(B.getX(r)+r.width/2);b=(B.getY(C)+C.clientHeight/2)-(B.getY(r)+r.height/2);O.position=(-U*(S/y.offsetWidth))+", "+(-l*(b/y.offsetHeight));};}else{V=y.getContext("2d");V.beginPath();V.arc(i,i,i,0,2*Math.PI,true);V.clip();A=function(){var h,Q,b,W,X,S,F,j;X=S=0;b=W=F=j=2*i;V.fillStyle="#FFFFFF";V.fillRect(0,0,F,j);h=Math.floor((B.getX(y)-B.getX(r)+C.offsetWidth/2)*U-i);Q=Math.floor((B.getY(y)-B.getY(r)+C.offsetHeight/2)*l-i);if(h<0){X=-h;h=0;}if(Q<0){S=-Q;Q=0;}if(h>T.width||Q>T.height||h+b<0||Q+W<0){return ;}if(h+b>T.width){b=T.width-h;F=b;}if(Q+W>T.height){W=T.height-Q;j=W;}V.drawImage(T,h,Q,b,W,X,S,F,j);};}B.setX(C,B.getX(r)+Math.floor((r.width-C.clientWidth)/2));B.setY(C,B.getY(r)+Math.floor((r.height-C.clientHeight)/2));C.style.visibility="visible";A();q=new YAHOO.util.DD(C);q.onDrag=function(b){A();};}(function(){var q,V,Z;r=B.get(r);if(!r||r.tagName!=="IMG"||typeof N!=="string"){throw new Error("Invalid argument");}C=document.createElement("DIV");C.className="magnifier";document.body.appendChild(C);q=document.createElement("DIV");q.className="lens";q.unselectable="on";C.appendChild(q);if(YAHOO.env.ua.ie){document.namespaces.add("v","urn:schemas-microsoft-com:vml");V=document.createStyleSheet();V.addRule("v\\:*","behavior:url(#default#VML);");y=document.createElement("DIV");y.style.width=(q.clientWidth-2)+"px";y.style.height=(q.clientHeight-2)+"px";}else{y=document.createElement("CANVAS");y.width=q.clientWidth-2;y.height=q.clientHeight-2;}y.style.position="absolute";y.style.left=y.style.top="1px";C.appendChild(y);T=new Image();T.src=N;Z=setInterval(function(){if(YAHOO.env.ua.webkit&&r.width!==0&&T.width!==0||!d.isUndefined(r.naturalWidth)&&r.naturalWidth!==0&&T.naturalWidth!==0||r.complete&&T.complete){clearInterval(Z);p();}},100);})();};