var ZoomObj=(function(){var $=function(id){return document.getElementById(id);};var dc=function(tag){return document.createElement(tag);};var defaultWidth=256;var defaultHeight=256;function addEvent(element,ev,handler)
{var doHandler=function(e){return handler(e||window.event);}
if(element.addEventListener){element.addEventListener(ev,doHandler,false);}else if(element.attachEvent){element.attachEvent("on"+ev,doHandler);}}
function getElementPos(element)
{var x=element.offsetLeft;var y=element.offsetTop;var parent=element.offsetParent;while(parent){x+=parent.offsetLeft;y+=parent.offsetTop;parent=parent.offsetParent;}
return{x:x,y:y}}
function getEventMousePos(element,e){var scrollX=document.body.scrollLeft||document.documentElement.scrollLeft;var scrollY=document.body.scrollTop||document.documentElement.scrollTop;if(e.currentTarget){var pos=getElementPos(element);return{x:e.clientX-pos.x+scrollX,y:e.clientY-pos.y+scrollY}}
return{x:e.offsetX,y:e.offsetY}}
function makeZoomable(img,zoomSrc,zoomImgCtr,zoomWidth,zoomHeight,alwaysShow){if(!img.complete&&!img.__mojoZoomQueued){addEvent(img,"load",function(){img.__mojoZoomQueued=true;setTimeout(function(){makeZoomable(img,zoomSrc,zoomImgCtr,zoomWidth,zoomHeight,alwaysShow);},1);});return;}
img.__mojoZoomQueued=false;setTimeout(function(){var isIE=!!document.all&&!!window.attachEvent&&!window.opera;var w=img.offsetWidth;var h=img.offsetHeight;var oldParent=img.parentNode;if(oldParent.nodeName!="A"){var linkParent=dc("a");linkParent.setAttribute("href",zoomSrc);oldParent.replaceChild(linkParent,img);linkParent.appendChild(img);}else{var linkParent=oldParent;}
linkParent.style.position="relative";linkParent.style.display="block";linkParent.style.width=w+"px";linkParent.style.height=h+"px";var imgLeft=img.offsetLeft;var imgTop=img.offsetTop;var zoom=dc("div");zoom.className="mojozoom_marker";var zoomImg=dc("img");zoomImg.className="mojozoom_img";zoomImg.style.position="absolute";zoomImg.style.left="-9999px";zoomImg.style.top="-9999px";document.body.appendChild(zoomImg);var parent=img.parentNode;var ctr=dc("div");with(ctr.style){position="absolute";left=imgLeft+"px";top=imgTop+"px";width=w+"px";height=h+"px";overflow="hidden";display="none";}
ctr.appendChild(zoom);parent.appendChild(ctr);var zoomInput=parent;if(img.__mojoZoomOverlay)
parent.removeChild(img.__mojoZoomOverlay);img.__mojoZoomOverlay=ctr;if(img.__mojoZoomImage&&img.__mojoZoomImage.parentNode)
img.__mojoZoomImage.parentNode.removeChild(img.__mojoZoomImage);img.__mojoZoomImage=zoomImg;var useDefaultCtr=false;if(!zoomImgCtr){zoomImgCtr=dc("div");zoomImgCtr.className="mojozoom_imgctr";var imgPos=getElementPos(img);zoomImgCtr.style.left=w+imgPos.x+"px";zoomImgCtr.style.top=imgPos.y+"px";zoomImgCtr.style.width=(zoomWidth?zoomWidth:defaultWidth)+"px";zoomImgCtr.style.height=(zoomHeight?zoomHeight:defaultHeight)+"px";document.body.appendChild(zoomImgCtr);useDefaultCtr=true;}
zoomImgCtr.style.overflow="hidden";if(!alwaysShow){zoomImgCtr.style.visibility="hidden";}
addEvent(zoomImg,"load",function(){if(!zoomImg.parentNode)return;var zoomWidth=zoomImg.offsetWidth;var zoomHeight=zoomImg.offsetHeight;var ctrWidth=zoomImgCtr.offsetWidth;var ctrHeight=zoomImgCtr.offsetHeight;var ratioW=zoomWidth/w;var ratioH=zoomHeight/h;var markerWidth=Math.round(ctrWidth/ratioW);var markerHeight=Math.round(ctrHeight/ratioH);document.body.removeChild(zoomImg);zoomImgCtr.appendChild(zoomImg);var zoomFill=dc("div");zoomFill.className="mojozoom_fill";zoom.appendChild(zoomFill);var zoomBorder=dc("div");zoomBorder.className="mojozoom_border";zoom.appendChild(zoomBorder);zoom.style.width=markerWidth+"px";zoom.style.height=markerHeight+"px";if(alwaysShow){zoom.style.left="0px";zoom.style.top="0px";zoomImg.style.left="0px";zoomImg.style.top="0px";}
var isInImage=false;if(!alwaysShow){addEvent(zoomInput,"mouseout",function(e){var target=e.target||e.srcElement;if(!target)return;if(target.nodeName!="DIV")return;var relTarget=e.relatedTarget||e.toElement;if(!relTarget)return;while(relTarget!=target&&relTarget.nodeName!="BODY"&&relTarget.parentNode){relTarget=relTarget.parentNode;}
if(relTarget!=target){isInImage=false;ctr.style.display="none";zoomImgCtr.style.visibility="hidden";}});addEvent(document.body,"mouseover",function(e){if(isInImage&&!(e.toElement==zoomBorder||e.target==zoomBorder)){ctr.style.display="none";zoomImgCtr.style.visibility="hidden";isInImage=false;}});}
addEvent(zoomInput,"mousemove",function(e){isInImage=true;var imgPos=getElementPos(img);if(useDefaultCtr){zoomImgCtr.style.left=w+imgPos.x+"px";zoomImgCtr.style.top=imgPos.y+"px";}
ctr.style.display="block";zoomImgCtr.style.visibility="visible";var pos=getEventMousePos(zoomInput,e);if(e.srcElement&&isIE){if(e.srcElement==zoom)return;if(e.srcElement!=zoomInput){var zoomImgPos=getElementPos(e.srcElement);pos.x-=(imgPos.x-zoomImgPos.x);pos.y-=(imgPos.y-zoomImgPos.y);}}
var x=markerWidth/2;var y=markerHeight/2;if(!isIE){pos.x-=imgLeft;pos.y-=imgTop;}
if(pos.x<x)pos.x=x;if(pos.x>w-x)pos.x=w-x;if(pos.y<y)pos.y=y;if(pos.y>h-y)pos.y=h-y;var left=((pos.x-x)|0);var top=((pos.y-y)|0);zoom.style.left=left+"px";zoom.style.top=top+"px";zoomImg.style.left=-((pos.x*ratioW-ctrWidth/2)|0)+"px";zoomImg.style.top=-((pos.y*ratioH-ctrHeight/2)|0)+"px";});});setTimeout(function(){zoomImg.src=zoomSrc;},1);},1);}
function init(){var images=document.getElementsByTagName("img");for(var i=0;i<images.length;i++){var img=images[i];var zoomSrc=img.getAttribute("data-zoomsrc");if(zoomSrc){makeZoomable(img,zoomSrc,document.getElementById(img.getAttribute("id")+"_zoom"),null,null,img.getAttribute("data-zoomalwaysshow")=="true");}}}
return{addEvent:addEvent,init:init,makeZoomable:makeZoomable};})();
