/*@license
Fullscreen Image Zoom and Pan with Jquery
version @VERSION@
Original version by Samil Hazir (https://github.com/saplumbaga)
V.2.0 by JM Alarcon (https://github.com/jmalarcon/)
https://github.com/saplumbaga/jquery.pan
https://github.com/jmalarcon/jquery.pan
*/
jQuery.fn.extend({pan:function(){var lastScale=null
var originalWidth;var marge=20;var firtInit=0;var panWrapper=document.createElement('div');$(panWrapper).addClass("panWrapper");var panImg=document.createElement('img');$(panImg).addClass("i").css("position","absolute");var zi=document.createElement('a');$(zi).addClass("controls in");$(panWrapper).append(zi);var zo=document.createElement('a');$(zo).addClass("controls out");$(panWrapper).append(zo);var close=document.createElement('a');$(close).addClass("controls close");$(panWrapper).append(close);var zoneNext=document.createElement('div');$(zoneNext).addClass("zoneNext");$(panWrapper).append(zoneNext);var zonePrevious=document.createElement('div');$(zonePrevious).addClass("zonePrevious");$(panWrapper).append(zonePrevious);var zoomInfo=document.createElement('span');$(zoomInfo).addClass("zoomInfo");$(panWrapper).append(zoomInfo);var pageInfo=document.createElement('span');$(pageInfo).addClass("pageInfo");$(panWrapper).append(pageInfo);var titleInfo=document.createElement('span');$(titleInfo).addClass("titleInfo");$(panWrapper).append(titleInfo);$(panWrapper).append(panImg);$("body").append(panWrapper);var finalSet=$(this).filter(function(){var nbPan=(typeof $("body").attr('nbPan')==='undefined'?0:$("body").attr('nbPan'));nbPan++;$("body").attr('nbPan',nbPan);$(this).attr("pos",nbPan);var isZoomed=$(this).attr("panZoom")?$(this).attr("panZoom"):1;if(this.tagName=="IMG"){var nW=this.naturalWidth||0,nH=this.naturalHeight||0,w=$(this).outerWidth(),h=$(this).outerHeight();if(nW>w||nH>h){return!0}else{if(isZoomed>0)return!0}}else{return!0}});finalSet.css('cursor','zoom-in');finalSet.addClass('panned');finalSet.click(function(e){$(".zone_contener").addClass('blur');var t=$(this);var big=t.attr("data-big");if(big==undefined)big=t.attr("src");var tmpImg=$('
');tmpImg.attr("src",big);var isZoomed=t.attr("panZoom")?t.attr("panZoom"):1;$(tmpImg).on('load',function(){var nW=tmpImg[0].naturalWidth||0;var nH=tmpImg[0].naturalHeight||0;originalWidth=nW;originalHeight=nH;var tmp2=new Image();tmp2.src=big;var tmpCanvas=document.createElement('canvas');tmpCanvas.width=originalWidth+marge*2;tmpCanvas.height=originalHeight+marge*2;var ctx=tmpCanvas.getContext("2d");ctx.beginPath();ctx.rect(0,0,tmpCanvas.width,tmpCanvas.height);ctx.fillStyle='rgba(0,0,0,0.2)';ctx.fill();ctx.drawImage(tmp2,marge,marge);dataUrl=tmpCanvas.toDataURL(),tmpImg.src=dataUrl;if(t.attr("panPixelated"))$(".panWrapper img.i").css("image-rendering","pixelated");$(".panWrapper img.i").css("width",(isZoomed>0?nW*isZoomed:"auto")).css("height",(isZoomed>0?nH*isZoomed:"auto")).attr("src",dataUrl).attr("pos",t.attr("pos")).attr("description",(typeof t.attr("title")!=='undefined'?t.attr("title"):"-"));firtInit=1;panInit(e);$(".panWrapper img.i").addClass("anim").animate({nop:0,},1000,function(){$(this).removeClass("anim")});$(".panWrapper").fadeIn("fast",function(){})});return!1});$(zi).click(function(e){var panImg=$(".panWrapper img.i");panImg.css("width",parseInt(parseInt(panImg.css("width"))*1.2));panImg.css("height","auto");panInit(e)});$(zo).click(function(e){var panImg=$(".panWrapper img.i");panImg.css("width",parseInt(parseInt(panImg.css("width"))/1.2)+1);panImg.css("height","auto");panInit(e)});$(close).click(function(e){$(".zone_contener").removeClass('blur');$(".panWrapper").fadeOut("slow")});$(zoneNext).click(function(e){nbPan=$("body").attr('nbPan');currentPos=$(panImg).attr("pos");currentPos++;if(currentPos>nbPan)currentPos=1;$(".panned[pos="+currentPos+"]").trigger("click")});$(zonePrevious).click(function(e){nbPan=$("body").attr('nbPan');currentPos=$(panImg).attr("pos");currentPos--;if(currentPos<1)currentPos=nbPan;$(".panned[pos="+currentPos+"]").trigger("click")});$(panImg).click(function(e){nbPan=parseInt($("body").attr('nbPan'));currentPos=$(this).attr("pos");if(nbPan>1){var mid_vpW=$(panWrapper).width()/2;if(__getPointerPosX(e)>mid_vpW){currentPos++;if(currentPos>nbPan)currentPos=1}else{currentPos--;if(currentPos<1)currentPos=nbPan}
$(".panned[pos="+currentPos+"]").trigger("click")}else{$(close).click()}});$(panWrapper).on('touchstart mousedown',function(event){lastScale=null})
$(panWrapper).on('touchmove',function(e){myevent=e.originalEvent;e.preventDefault();var targetTouches=myevent.targetTouches.length;if(targetTouches==2){var p1=myevent.targetTouches[0];var p2=myevent.targetTouches[1];var zoomSpeed=3;var zoomScale=zoomSpeed*Math.sqrt(Math.pow(p2.pageX-p1.pageX,2)+Math.pow(p2.pageY-p1.pageY,2));if(lastScale){zoom=Math.round(zoomScale-lastScale)}
lastScale=zoomScale;if(zoom<0){var panImg=$(".panWrapper img.i");panImg.css("width",parseInt(parseInt(panImg.css("width"))+zoom));panImg.css("height","auto");panInit(e)}
if(zoom>0){var panImg=$(".panWrapper img.i");panImg.css("width",parseInt(parseInt(panImg.css("width"))+zoom));panImg.css("height","auto");panInit(e)}}else{panInit(e)}});$(panWrapper).on('mousemove',function(e){panInit(e)});$("body").keydown(function(e){if(e.keyCode==27){$(close).click()}});$(panWrapper).mousewheel(function(wheelEvent){if(wheelEvent.deltaY>0)
$(zo).click();else $(zi).click();panInit(wheelEvent)});function __getPointerPos(event,prop){var pos=event[prop];if(pos==undefined){pos=0;if(event.touches)
pos=event.touches[0][prop];else if(event.originalEvent){if(event.originalEvent.touches)
pos=event.originalEvent.touches[0][prop]}}
return pos}
function __getPointerPosX(event){return __getPointerPos(event,'pageX')}
function __getPointerPosY(event){return __getPointerPos(event,'pageY')}
$(panWrapper).on('mousemove touchmove',function(event){if($("IMG.i").is(event.target)||$("DIV.zonePrevious").is(event.target)||$("DIV.zoneNext").is(event.target)){var vpW=$(panWrapper).width();var mid_vpW=vpW/2;if(__getPointerPosX(event)>mid_vpW){$(zoneNext).css("opacity",1);$(zonePrevious).css("opacity",0)}else{$(zoneNext).css("opacity",0);$(zonePrevious).css("opacity",1)}}else{$(zoneNext).css("opacity",0);$(zonePrevious).css("opacity",0)}});function panInit(event){event.preventDefault();var panImg=$(".panWrapper img.i");var panWrapper=$(".panWrapper");var w=parseInt(panImg.css("width"));var h=parseInt(panImg.css("height"));var vpW=$(panWrapper).width();var vpH=$(panWrapper).height();var ml=-(w-vpW);var mt=-(h-vpH);var scrollHOffset=window.pageXOffset||document.documentElement.scrollLeft,scrollVOffset=window.pageYOffset||document.documentElement.scrollTop;var posOfPointerInPageX=__getPointerPosX(event),posOfPointerInViewportX=posOfPointerInPageX-scrollHOffset,vpW=$(panWrapper).width();if(posOfPointerInViewportX<0)posOfPointerInViewportX=0;if(posOfPointerInViewportX>vpW)posOfPointerInViewportX=vpW;var posOfPointerInPageY=__getPointerPosY(event),posOfPointerInViewportY=posOfPointerInPageY-scrollVOffset,vpH=$(panWrapper).height();if(posOfPointerInViewportY<0)posOfPointerInViewportY=0;if(posOfPointerInViewportY>vpH)posOfPointerInViewportY=vpH;var nl=Math.floor((ml*posOfPointerInViewportX)/vpW);var nt=Math.floor(mt*posOfPointerInViewportY/vpH);if(vpW>w&&vpH>h){nl=(vpW-w)/2;nt=(vpH-h)/2}else if(vpW>w){nl=(vpW-w)/2}else if(vpH>h){nt=(vpH-h)/2}
nbPan=parseInt($("body").attr('nbPan'));currentPos=$(panImg).attr("pos");var description=$(panImg).attr("description")!=="-"?$(panImg).attr("description"):"";var zoomRatio=Math.round(w/originalWidth*10)/10;$(".zoomInfo").html("zoom: "+zoomRatio+"x");if(nbPan>1)$(".pageInfo").html("Image "+currentPos+" of "+nbPan);$(".titleInfo").html(description);if(firtInit){nl=(vpW-w)/2;nt=(vpH-h)/2;if(nbPan==1){$(zoneNext).remove();$(zonePrevious).remove()}}
panImg.css("left",nl+'px');panImg.css("top",nt+'px');firtInit=0}
return finalSet}});(function(){var prefix="",_addEventListener,onwheel,support;if(window.addEventListener){_addEventListener="addEventListener"}else{_addEventListener="attachEvent";prefix="on"}
if(document.onmousewheel!==undefined){support="mousewheel"}
try{WheelEvent("wheel");support="wheel"}catch(e){}
if(!support){support="DOMMouseScroll"}
window.addWheelListener=function(elem,callback,useCapture){_addWheelListener(elem,support,callback,useCapture);if(support=="DOMMouseScroll"){_addWheelListener(elem,"MozMousePixelScroll",callback,useCapture)}};function _addWheelListener(elem,eventName,callback,useCapture){elem[_addEventListener](prefix+eventName,support=="wheel"?callback:function(originalEvent){!originalEvent&&(originalEvent=window.event);var event={originalEvent:originalEvent,target:originalEvent.target||originalEvent.srcElement,type:"wheel",deltaMode:originalEvent.type=="MozMousePixelScroll"?0:1,deltaX:0,delatZ:0,pageX:originalEvent.pageX,pageY:originalEvent.pageY,preventDefault:function(){originalEvent.preventDefault?originalEvent.preventDefault():originalEvent.returnValue=!1}};if(support=="mousewheel"){event.deltaY=-1/40*originalEvent.wheelDelta;originalEvent.wheelDeltaX&&(event.deltaX=-1/40*originalEvent.wheelDeltaX)}else{event.deltaY=originalEvent.detail}
return callback(event)},useCapture||!1)}
$.fn.mousewheel=function(handler){return this.each(function(){window.addWheelListener(this,handler,!0)})}})(jQuery)