UNPKG

universalviewer

Version:

The Universal Viewer is an open source project to enable cultural heritage institutions to present their digital artifacts in an IIIF-compliant and highly customisable user interface.

9 lines (7 loc) 207 kB
//! openseadragon 2.2.1 //! Built on 2016-07-01 //! Git commit: v2.2.1-0-babdefd //! http://openseadragon.github.io //! License: http://openseadragon.github.io/license/ window.OpenSeadragon=window.OpenSeadragon||function(a){return new OpenSeadragon.Viewer(a)};"function"==typeof define&&define.amd&&define(function(){return window.OpenSeadragon});!function(a){a.version={versionStr:"<%= osdVersion.versionStr %>",major:parseInt("<%= osdVersion.major %>",10),minor:parseInt("<%= osdVersion.minor %>",10),revision:parseInt("<%= osdVersion.revision %>",10)};var b={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object"},c=Object.prototype.toString,d=Object.prototype.hasOwnProperty;a.isFunction=function(b){return"function"===a.type(b)};a.isArray=Array.isArray||function(b){return"array"===a.type(b)};a.isWindow=function(a){return a&&"object"==typeof a&&"setInterval"in a};a.type=function(a){return null===a||void 0===a?String(a):b[c.call(a)]||"object"};a.isPlainObject=function(b){if(!b||"object"!==OpenSeadragon.type(b)||b.nodeType||a.isWindow(b))return!1;if(b.constructor&&!d.call(b,"constructor")&&!d.call(b.constructor.prototype,"isPrototypeOf"))return!1;var c;for(var e in b)c=e;return void 0===c||d.call(b,c)};a.isEmptyObject=function(a){for(var b in a)return!1;return!0};a.freezeObject=function(b){Object.freeze?a.freezeObject=Object.freeze:a.freezeObject=function(a){return a};return a.freezeObject(b)};a.supportsCanvas=function(){var b=document.createElement("canvas");return!(!a.isFunction(b.getContext)||!b.getContext("2d"))}();a.isCanvasTainted=function(a){var b=!1;try{a.getContext("2d").getImageData(0,0,1,1)}catch(c){b=!0}return b};a.pixelDensityRatio=function(){if(a.supportsCanvas){var b=document.createElement("canvas").getContext("2d");var c=window.devicePixelRatio||1;var d=b.webkitBackingStorePixelRatio||b.mozBackingStorePixelRatio||b.msBackingStorePixelRatio||b.oBackingStorePixelRatio||b.backingStorePixelRatio||1;return c/d}return 1}()}(OpenSeadragon);!function($){function getOffsetParent(a,b){return b&&a!=document.body?document.body:a.offsetParent}$.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=arguments.length,i=!1,j=1;if("boolean"==typeof g){i=g;g=arguments[1]||{};j=2}"object"==typeof g||OpenSeadragon.isFunction(g)||(g={});if(h===j){g=this;--j}for(;h>j;j++){a=arguments[j];if(null!==a||void 0!==a)for(b in a){c=g[b];d=a[b];if(g!==d)if(i&&d&&(OpenSeadragon.isPlainObject(d)||(e=OpenSeadragon.isArray(d)))){if(e){e=!1;f=c&&OpenSeadragon.isArray(c)?c:[]}else f=c&&OpenSeadragon.isPlainObject(c)?c:{};g[b]=OpenSeadragon.extend(i,f,d)}else void 0!==d&&(g[b]=d)}}return g};var isIOSDevice=function(){if("object"!=typeof navigator)return!1;var a=navigator.userAgent;return"string"!=typeof a?!1:-1!==a.indexOf("iPhone")||-1!==a.indexOf("iPad")||-1!==a.indexOf("iPod")};$.extend($,{DEFAULT_SETTINGS:{xmlPath:null,tileSources:null,tileHost:null,initialPage:0,crossOriginPolicy:!1,ajaxWithCredentials:!1,panHorizontal:!0,panVertical:!0,constrainDuringPan:!1,wrapHorizontal:!1,wrapVertical:!1,visibilityRatio:.5,minPixelRatio:.5,defaultZoomLevel:0,minZoomLevel:null,maxZoomLevel:null,homeFillsViewer:!1,clickTimeThreshold:300,clickDistThreshold:5,dblClickTimeThreshold:300,dblClickDistThreshold:20,springStiffness:6.5,animationTime:1.2,gestureSettingsMouse:{scrollToZoom:!0,clickToZoom:!0,dblClickToZoom:!1,pinchToZoom:!1,flickEnabled:!1,flickMinSpeed:120,flickMomentum:.25,pinchRotate:!1},gestureSettingsTouch:{scrollToZoom:!1,clickToZoom:!1,dblClickToZoom:!0,pinchToZoom:!0,flickEnabled:!0,flickMinSpeed:120,flickMomentum:.25,pinchRotate:!1},gestureSettingsPen:{scrollToZoom:!1,clickToZoom:!0,dblClickToZoom:!1,pinchToZoom:!1,flickEnabled:!1,flickMinSpeed:120,flickMomentum:.25,pinchRotate:!1},gestureSettingsUnknown:{scrollToZoom:!1,clickToZoom:!1,dblClickToZoom:!0,pinchToZoom:!0,flickEnabled:!0,flickMinSpeed:120,flickMomentum:.25,pinchRotate:!1},zoomPerClick:2,zoomPerScroll:1.2,zoomPerSecond:1,blendTime:0,alwaysBlend:!1,autoHideControls:!0,immediateRender:!1,minZoomImageRatio:.9,maxZoomPixelRatio:1.1,smoothTileEdgesMinZoom:1.1,iOSDevice:isIOSDevice(),pixelsPerWheelLine:40,autoResize:!0,preserveImageSizeOnResize:!1,minScrollDeltaTime:50,showSequenceControl:!0,sequenceControlAnchor:null,preserveViewport:!1,preserveOverlays:!1,navPrevNextWrap:!1,showNavigationControl:!0,navigationControlAnchor:null,showZoomControl:!0,showHomeControl:!0,showFullPageControl:!0,showRotationControl:!1,controlsFadeDelay:2e3,controlsFadeLength:1500,mouseNavEnabled:!0,showNavigator:!1,navigatorId:null,navigatorPosition:null,navigatorSizeRatio:.2,navigatorMaintainSizeRatio:!1,navigatorTop:null,navigatorLeft:null,navigatorHeight:null,navigatorWidth:null,navigatorAutoResize:!0,navigatorAutoFade:!0,navigatorRotate:!0,degrees:0,opacity:1,compositeOperation:null,placeholderFillStyle:null,showReferenceStrip:!1,referenceStripScroll:"horizontal",referenceStripElement:null,referenceStripHeight:null,referenceStripWidth:null,referenceStripPosition:"BOTTOM_LEFT",referenceStripSizeRatio:.2,collectionRows:3,collectionColumns:0,collectionLayout:"horizontal",collectionMode:!1,collectionTileSize:800,collectionTileMargin:80,imageLoaderLimit:0,maxImageCacheCount:200,timeout:3e4,useCanvas:!0,prefixUrl:"/images/",navImages:{zoomIn:{REST:"zoomin_rest.png",GROUP:"zoomin_grouphover.png",HOVER:"zoomin_hover.png",DOWN:"zoomin_pressed.png"},zoomOut:{REST:"zoomout_rest.png",GROUP:"zoomout_grouphover.png",HOVER:"zoomout_hover.png",DOWN:"zoomout_pressed.png"},home:{REST:"home_rest.png",GROUP:"home_grouphover.png",HOVER:"home_hover.png",DOWN:"home_pressed.png"},fullpage:{REST:"fullpage_rest.png",GROUP:"fullpage_grouphover.png",HOVER:"fullpage_hover.png",DOWN:"fullpage_pressed.png"},rotateleft:{REST:"rotateleft_rest.png",GROUP:"rotateleft_grouphover.png",HOVER:"rotateleft_hover.png",DOWN:"rotateleft_pressed.png"},rotateright:{REST:"rotateright_rest.png",GROUP:"rotateright_grouphover.png",HOVER:"rotateright_hover.png",DOWN:"rotateright_pressed.png"},previous:{REST:"previous_rest.png",GROUP:"previous_grouphover.png",HOVER:"previous_hover.png",DOWN:"previous_pressed.png"},next:{REST:"next_rest.png",GROUP:"next_grouphover.png",HOVER:"next_hover.png",DOWN:"next_pressed.png"}},debugMode:!1,debugGridColor:"#437AB2"},SIGNAL:"----seadragon----",delegate:function(a,b){return function(){var c=arguments;void 0===c&&(c=[]);return b.apply(a,c)}},BROWSERS:{UNKNOWN:0,IE:1,FIREFOX:2,SAFARI:3,CHROME:4,OPERA:5},getElement:function(a){"string"==typeof a&&(a=document.getElementById(a));return a},getElementPosition:function(a){var b,c,d=new $.Point;a=$.getElement(a);b="fixed"==$.getElementStyle(a).position;c=getOffsetParent(a,b);for(;c;){d.x+=a.offsetLeft;d.y+=a.offsetTop;b&&(d=d.plus($.getPageScroll()));a=c;b="fixed"==$.getElementStyle(a).position;c=getOffsetParent(a,b)}return d},getElementOffset:function(a){a=$.getElement(a);var b,c,d=a&&a.ownerDocument,e={top:0,left:0};if(!d)return new $.Point;b=d.documentElement;"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect());c=d==d.window?d:9===d.nodeType?d.defaultView||d.parentWindow:!1;return new $.Point(e.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0),e.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0))},getElementSize:function(a){a=$.getElement(a);return new $.Point(a.clientWidth,a.clientHeight)},getElementStyle:document.documentElement.currentStyle?function(a){a=$.getElement(a);return a.currentStyle}:function(a){a=$.getElement(a);return window.getComputedStyle(a,"")},getCssPropertyWithVendorPrefix:function(a){var b={};$.getCssPropertyWithVendorPrefix=function(a){if(void 0!==b[a])return b[a];var c=document.createElement("div").style;var d=null;if(void 0!==c[a])d=a;else{var e=["Webkit","Moz","MS","O","webkit","moz","ms","o"];var f=$.capitalizeFirstLetter(a);for(var g=0;g<e.length;g++){var h=e[g]+f;if(void 0!==c[h]){d=h;break}}}b[a]=d;return d};return $.getCssPropertyWithVendorPrefix(a)},capitalizeFirstLetter:function(a){return a.charAt(0).toUpperCase()+a.slice(1)},pointInElement:function(a,b){a=$.getElement(a);var c=$.getElementOffset(a),d=$.getElementSize(a);return b.x>=c.x&&b.x<c.x+d.x&&b.y<c.y+d.y&&b.y>=c.y},getEvent:function(a){a?$.getEvent=function(a){return a}:$.getEvent=function(){return window.event};return $.getEvent(a)},getMousePosition:function(a){if("number"==typeof a.pageX)$.getMousePosition=function(a){var b=new $.Point;a=$.getEvent(a);b.x=a.pageX;b.y=a.pageY;return b};else{if("number"!=typeof a.clientX)throw new Error("Unknown event mouse position, no known technique.");$.getMousePosition=function(a){var b=new $.Point;a=$.getEvent(a);b.x=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;b.y=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return b}}return $.getMousePosition(a)},getPageScroll:function(){var a=document.documentElement||{},b=document.body||{};if("number"==typeof window.pageXOffset)$.getPageScroll=function(){return new $.Point(window.pageXOffset,window.pageYOffset)};else if(b.scrollLeft||b.scrollTop)$.getPageScroll=function(){return new $.Point(document.body.scrollLeft,document.body.scrollTop)};else{if(!a.scrollLeft&&!a.scrollTop)return new $.Point(0,0);$.getPageScroll=function(){return new $.Point(document.documentElement.scrollLeft,document.documentElement.scrollTop)}}return $.getPageScroll()},setPageScroll:function(a){if("undefined"!=typeof window.scrollTo)$.setPageScroll=function(a){window.scrollTo(a.x,a.y)};else{var b=$.getPageScroll();if(b.x===a.x&&b.y===a.y)return;document.body.scrollLeft=a.x;document.body.scrollTop=a.y;var c=$.getPageScroll();if(c.x!==b.x&&c.y!==b.y){$.setPageScroll=function(a){document.body.scrollLeft=a.x;document.body.scrollTop=a.y};return}document.documentElement.scrollLeft=a.x;document.documentElement.scrollTop=a.y;c=$.getPageScroll();if(c.x!==b.x&&c.y!==b.y){$.setPageScroll=function(a){document.documentElement.scrollLeft=a.x;document.documentElement.scrollTop=a.y};return}$.setPageScroll=function(a){}}return $.setPageScroll(a)},getWindowSize:function(){var a=document.documentElement||{},b=document.body||{};if("number"==typeof window.innerWidth)$.getWindowSize=function(){return new $.Point(window.innerWidth,window.innerHeight)};else if(a.clientWidth||a.clientHeight)$.getWindowSize=function(){return new $.Point(document.documentElement.clientWidth,document.documentElement.clientHeight)};else{if(!b.clientWidth&&!b.clientHeight)throw new Error("Unknown window size, no known technique.");$.getWindowSize=function(){return new $.Point(document.body.clientWidth,document.body.clientHeight)}}return $.getWindowSize()},makeCenteredNode:function(a){a=$.getElement(a);var b=[$.makeNeutralElement("div"),$.makeNeutralElement("div"),$.makeNeutralElement("div")];$.extend(b[0].style,{display:"table",height:"100%",width:"100%"});$.extend(b[1].style,{display:"table-row"});$.extend(b[2].style,{display:"table-cell",verticalAlign:"middle",textAlign:"center"});b[0].appendChild(b[1]);b[1].appendChild(b[2]);b[2].appendChild(a);return b[0]},makeNeutralElement:function(a){var b=document.createElement(a),c=b.style;c.background="transparent none";c.border="none";c.margin="0px";c.padding="0px";c.position="static";return b},now:function(){Date.now?$.now=Date.now:$.now=function(){return(new Date).getTime()};return $.now()},makeTransparentImage:function(a){$.makeTransparentImage=function(a){var b=$.makeNeutralElement("img");b.src=a;return b};$.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<7&&($.makeTransparentImage=function(a){var b=$.makeNeutralElement("img"),c=null;c=$.makeNeutralElement("span");c.style.display="inline-block";b.onload=function(){c.style.width=c.style.width||b.width+"px";c.style.height=c.style.height||b.height+"px";b.onload=null;b=null};b.src=a;c.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a+"', sizingMethod='scale')";return c});return $.makeTransparentImage(a)},setElementOpacity:function(a,b,c){var d,e;a=$.getElement(a);c&&!$.Browser.alpha&&(b=Math.round(b));if($.Browser.opacity)a.style.opacity=1>b?b:"";else if(1>b){d=Math.round(100*b);e="alpha(opacity="+d+")";a.style.filter=e}else a.style.filter=""},setElementTouchActionNone:function(a){a=$.getElement(a);"undefined"!=typeof a.style.touchAction?a.style.touchAction="none":"undefined"!=typeof a.style.msTouchAction&&(a.style.msTouchAction="none")},addClass:function(a,b){a=$.getElement(a);a.className?-1===(" "+a.className+" ").indexOf(" "+b+" ")&&(a.className+=" "+b):a.className=b},indexOf:function(a,b,c){Array.prototype.indexOf?this.indexOf=function(a,b,c){return a.indexOf(b,c)}:this.indexOf=function(a,b,c){var d,e,f=c?c:0;if(!a)throw new TypeError;e=a.length;if(0===e||f>=e)return-1;0>f&&(f=e-Math.abs(f));for(d=f;e>d;d++)if(a[d]===b)return d;return-1};return this.indexOf(a,b,c)},removeClass:function(a,b){var c,d,e=[];a=$.getElement(a);c=a.className.split(/\s+/);for(d=0;d<c.length;d++)c[d]&&c[d]!==b&&e.push(c[d]);a.className=e.join(" ")},addEvent:function(){if(window.addEventListener)return function(a,b,c,d){a=$.getElement(a);a.addEventListener(b,c,d)};if(window.attachEvent)return function(a,b,c,d){a=$.getElement(a);a.attachEvent("on"+b,c)};throw new Error("No known event model.")}(),removeEvent:function(){if(window.removeEventListener)return function(a,b,c,d){a=$.getElement(a);a.removeEventListener(b,c,d)};if(window.detachEvent)return function(a,b,c,d){a=$.getElement(a);a.detachEvent("on"+b,c)};throw new Error("No known event model.")}(),cancelEvent:function(a){a=$.getEvent(a);a.preventDefault?$.cancelEvent=function(a){a.preventDefault()}:$.cancelEvent=function(a){a=$.getEvent(a);a.cancel=!0;a.returnValue=!1};$.cancelEvent(a)},stopEvent:function(a){a=$.getEvent(a);a.stopPropagation?$.stopEvent=function(a){a.stopPropagation()}:$.stopEvent=function(a){a=$.getEvent(a);a.cancelBubble=!0};$.stopEvent(a)},createCallback:function(a,b){var c,d=[];for(c=2;c<arguments.length;c++)d.push(arguments[c]);return function(){var c,e=d.concat([]);for(c=0;c<arguments.length;c++)e.push(arguments[c]);return b.apply(a,e)}},getUrlParameter:function(a){var b=URLPARAMS[a];return b?b:null},getUrlProtocol:function(a){var b=a.match(/^([a-z]+:)\/\//i);return null===b?window.location.protocol:b[1].toLowerCase()},createAjaxRequest:function(a){var b;try{b=!!new ActiveXObject("Microsoft.XMLHTTP")}catch(c){b=!1}if(b)window.XMLHttpRequest?$.createAjaxRequest=function(a){return a?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest}:$.createAjaxRequest=function(){return new ActiveXObject("Microsoft.XMLHTTP")};else{if(!window.XMLHttpRequest)throw new Error("Browser doesn't support XMLHttpRequest.");$.createAjaxRequest=function(){return new XMLHttpRequest}}return $.createAjaxRequest(a)},makeAjaxRequest:function(a,b,c){var d;if($.isPlainObject(a)){b=a.success;c=a.error;d=a.withCredentials;a=a.url}var e=$.getUrlProtocol(a);var f=$.createAjaxRequest("file:"===e);if(!$.isFunction(b))throw new Error("makeAjaxRequest requires a success callback");f.onreadystatechange=function(){if(4==f.readyState){f.onreadystatechange=function(){};if(200===f.status||0===f.status&&"http:"!==e&&"https:"!==e)b(f);else{$.console.log("AJAX request returned %d: %s",f.status,a);$.isFunction(c)&&c(f)}}};d&&(f.withCredentials=!0);try{f.open("GET",a,!0);f.send(null)}catch(g){var h=g.message;var i=$.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<10;i&&"undefined"!=typeof g.number&&-2147024891==g.number&&(h+="\nSee http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx#xdomain");$.console.log("%s while making AJAX request: %s",g.name,h);f.onreadystatechange=function(){};if(window.XDomainRequest){var j=new XDomainRequest;if(j){j.onload=function(a){$.isFunction(b)&&b({responseText:j.responseText,status:200,statusText:"OK"})};j.onerror=function(a){$.isFunction(c)&&c({responseText:j.responseText,status:444,statusText:"An error happened. Due to an XDomainRequest deficiency we can not extract any information about this error. Upgrade your browser."})};try{j.open("GET",a);j.send()}catch(k){$.isFunction(c)&&c(f,g)}}}else $.isFunction(c)&&c(f,g)}},jsonp:function(a){var b,c=a.url,d=document.head||document.getElementsByTagName("head")[0]||document.documentElement,e=a.callbackName||"openseadragon"+$.now(),f=window[e],g="$1"+e+"$2",h=a.param||"callback",i=a.callback;c=c.replace(/(\=)\?(&|$)|\?\?/i,g);c+=(/\?/.test(c)?"&":"?")+h+"="+e;window[e]=function(a){if(f)window[e]=f;else try{delete window[e]}catch(b){}i&&$.isFunction(i)&&i(a)};b=document.createElement("script");(void 0!==a.async||!1!==a.async)&&(b.async="async");a.scriptCharset&&(b.charset=a.scriptCharset);b.src=c;b.onload=b.onreadystatechange=function(a,c){if(c||!b.readyState||/loaded|complete/.test(b.readyState)){b.onload=b.onreadystatechange=null;d&&b.parentNode&&d.removeChild(b);b=void 0}};d.insertBefore(b,d.firstChild)},createFromDZI:function(){throw"OpenSeadragon.createFromDZI is deprecated, use Viewer.open."},parseXml:function(a){if(window.DOMParser)$.parseXml=function(a){var b,c=null;b=new DOMParser;c=b.parseFromString(a,"text/xml");return c};else{if(!window.ActiveXObject)throw new Error("Browser doesn't support XML DOM.");$.parseXml=function(a){var b=null;b=new ActiveXObject("Microsoft.XMLDOM");b.async=!1;b.loadXML(a);return b}}return $.parseXml(a)},parseJSON:function(string){window.JSON&&window.JSON.parse?$.parseJSON=window.JSON.parse:$.parseJSON=function(string){return eval("("+string+")")};return $.parseJSON(string)},imageFormatSupported:function(a){a=a?a:"";return!!FILEFORMATS[a.toLowerCase()]}});$.Browser={vendor:$.BROWSERS.UNKNOWN,version:0,alpha:!0};var FILEFORMATS={bmp:!1,jpeg:!0,jpg:!0,png:!0,tif:!1,wdp:!1},URLPARAMS={};!function(){var a,b=(navigator.appName,navigator.appVersion),c=navigator.userAgent;switch(navigator.appName){case"Microsoft Internet Explorer":if(window.attachEvent&&window.ActiveXObject){$.Browser.vendor=$.BROWSERS.IE;$.Browser.version=parseFloat(c.substring(c.indexOf("MSIE")+5,c.indexOf(";",c.indexOf("MSIE"))))}break;case"Netscape":if(window.addEventListener)if(c.indexOf("Firefox")>=0){$.Browser.vendor=$.BROWSERS.FIREFOX;$.Browser.version=parseFloat(c.substring(c.indexOf("Firefox")+8))}else if(c.indexOf("Safari")>=0){$.Browser.vendor=c.indexOf("Chrome")>=0?$.BROWSERS.CHROME:$.BROWSERS.SAFARI;$.Browser.version=parseFloat(c.substring(c.substring(0,c.indexOf("Safari")).lastIndexOf("/")+1,c.indexOf("Safari")))}else{a=new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})");if(null!==a.exec(c)){$.Browser.vendor=$.BROWSERS.IE;$.Browser.version=parseFloat(RegExp.$1)}}break;case"Opera":$.Browser.vendor=$.BROWSERS.OPERA;$.Browser.version=parseFloat(b)}var d,e,f,g=window.location.search.substring(1),h=g.split("&");for(f=0;f<h.length;f++){d=h[f];e=d.indexOf("=");e>0&&(URLPARAMS[d.substring(0,e)]=decodeURIComponent(d.substring(e+1)))}$.Browser.alpha=!($.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<9||$.Browser.vendor==$.BROWSERS.CHROME&&$.Browser.version<2);$.Browser.opacity=!($.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<9)}();var nullfunction=function(a){};$.console=window.console||{log:nullfunction,debug:nullfunction,info:nullfunction,warn:nullfunction,error:nullfunction,assert:nullfunction};!function(a){var b=a.requestAnimationFrame||a.mozRequestAnimationFrame||a.webkitRequestAnimationFrame||a.msRequestAnimationFrame;var c=a.cancelAnimationFrame||a.mozCancelAnimationFrame||a.webkitCancelAnimationFrame||a.msCancelAnimationFrame;if(b&&c){$.requestAnimationFrame=function(){return b.apply(a,arguments)};$.cancelAnimationFrame=function(){return c.apply(a,arguments)}}else{var d,e=[],f=[],g=0;$.requestAnimationFrame=function(a){e.push([++g,a]);d||(d=setInterval(function(){if(e.length){var a=$.now();var b=f;f=e;e=b;for(;f.length;)f.shift()[1](a)}else{clearInterval(d);d=void 0}},20));return g};$.cancelAnimationFrame=function(a){var b,c;for(b=0,c=e.length;c>b;b+=1)if(e[b][0]===a){e.splice(b,1);return}for(b=0,c=f.length;c>b;b+=1)if(f[b][0]===a){f.splice(b,1);return}}}}(window)}(OpenSeadragon);!function(a){var b={supportsFullScreen:!1,isFullScreen:function(){return!1},getFullScreenElement:function(){return null},requestFullScreen:function(){},exitFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",fullScreenErrorEventName:""};if(document.exitFullscreen){b.supportsFullScreen=!0;b.getFullScreenElement=function(){return document.fullscreenElement};b.requestFullScreen=function(a){return a.requestFullscreen()};b.exitFullScreen=function(){document.exitFullscreen()};b.fullScreenEventName="fullscreenchange";b.fullScreenErrorEventName="fullscreenerror"}else if(document.msExitFullscreen){b.supportsFullScreen=!0;b.getFullScreenElement=function(){return document.msFullscreenElement};b.requestFullScreen=function(a){return a.msRequestFullscreen()};b.exitFullScreen=function(){document.msExitFullscreen()};b.fullScreenEventName="MSFullscreenChange";b.fullScreenErrorEventName="MSFullscreenError"}else if(document.webkitExitFullscreen){b.supportsFullScreen=!0;b.getFullScreenElement=function(){return document.webkitFullscreenElement};b.requestFullScreen=function(a){return a.webkitRequestFullscreen()};b.exitFullScreen=function(){document.webkitExitFullscreen()};b.fullScreenEventName="webkitfullscreenchange";b.fullScreenErrorEventName="webkitfullscreenerror"}else if(document.webkitCancelFullScreen){b.supportsFullScreen=!0;b.getFullScreenElement=function(){return document.webkitCurrentFullScreenElement};b.requestFullScreen=function(a){return a.webkitRequestFullScreen()};b.exitFullScreen=function(){document.webkitCancelFullScreen()};b.fullScreenEventName="webkitfullscreenchange";b.fullScreenErrorEventName="webkitfullscreenerror"}else if(document.mozCancelFullScreen){b.supportsFullScreen=!0;b.getFullScreenElement=function(){return document.mozFullScreenElement};b.requestFullScreen=function(a){return a.mozRequestFullScreen()};b.exitFullScreen=function(){document.mozCancelFullScreen()};b.fullScreenEventName="mozfullscreenchange";b.fullScreenErrorEventName="mozfullscreenerror"}b.isFullScreen=function(){return null!==b.getFullScreenElement()};b.cancelFullScreen=function(){a.console.error("cancelFullScreen is deprecated. Use exitFullScreen instead.");b.exitFullScreen()};a.extend(a,b)}(OpenSeadragon);!function(a){a.EventSource=function(){this.events={}};a.EventSource.prototype={addOnceHandler:function(a,b,c,d){var e=this;d=d||1;var f=0;var g=function(c){f++;f===d&&e.removeHandler(a,g);b(c)};this.addHandler(a,g,c)},addHandler:function(b,c,d){var e=this.events[b];e||(this.events[b]=e=[]);c&&a.isFunction(c)&&(e[e.length]={handler:c,userData:d||null})},removeHandler:function(b,c){var d,e=this.events[b],f=[];if(e&&a.isArray(e)){for(d=0;d<e.length;d++)e[d].handler!==c&&f.push(e[d]);this.events[b]=f}},removeAllHandlers:function(a){if(a)this.events[a]=[];else for(var b in this.events)this.events[b]=[]},getHandler:function(a){var b=this.events[a];if(!b||!b.length)return null;b=1===b.length?[b[0]]:Array.apply(null,b);return function(a,c){var d,e=b.length;for(d=0;e>d;d++)if(b[d]){c.eventSource=a;c.userData=b[d].userData;b[d].handler(c)}}},raiseEvent:function(a,b){var c=this.getHandler(a);if(c){b||(b={});c(this,b)}}}}(OpenSeadragon);!function(a){function b(b){var c,d=pa[b.hash],e=d.activePointersLists.length;for(c=0;e>c;c++)if(d.activePointersLists[c].captureCount>0){a.removeEvent(a.MouseTracker.captureElement,"mousemove",d.mousemovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"mouseup",d.mouseupcaptured,!0);a.removeEvent(a.MouseTracker.captureElement,a.MouseTracker.unprefixedPointerEvents?"pointermove":"MSPointerMove",d.pointermovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,a.MouseTracker.unprefixedPointerEvents?"pointerup":"MSPointerUp",d.pointerupcaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"touchmove",d.touchmovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"touchend",d.touchendcaptured,!0);d.activePointersLists[c].captureCount=0}for(c=0;e>c;c++)d.activePointersLists.pop()}function c(c){var d,e,f=pa[c.hash];if(!f.tracking){for(e=0;e<a.MouseTracker.subscribeEvents.length;e++){d=a.MouseTracker.subscribeEvents[e];a.addEvent(c.element,d,f[d],!1)}b(c);f.tracking=!0}}function d(c){var d,e,f=pa[c.hash];if(f.tracking){for(e=0;e<a.MouseTracker.subscribeEvents.length;e++){d=a.MouseTracker.subscribeEvents[e];a.removeEvent(c.element,d,f[d],!1)}b(c);f.tracking=!1}}function e(b,c){var d=pa[b.hash];if("pointerevent"===c)return{upName:a.MouseTracker.unprefixedPointerEvents?"pointerup":"MSPointerUp",upHandler:d.pointerupcaptured,moveName:a.MouseTracker.unprefixedPointerEvents?"pointermove":"MSPointerMove",moveHandler:d.pointermovecaptured};if("mouse"===c)return{upName:"mouseup",upHandler:d.mouseupcaptured,moveName:"mousemove",moveHandler:d.mousemovecaptured};if("touch"===c)return{upName:"touchend",upHandler:d.touchendcaptured,moveName:"touchmove",moveHandler:d.touchmovecaptured};throw new Error("MouseTracker.getCaptureEventParams: Unknown pointer type.")}function f(b,c,d){var f,g=b.getActivePointersListByType(c);g.captureCount+=d||1;if(1===g.captureCount)if(a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9)b.element.setCapture(!0);else{f=e(b,a.MouseTracker.havePointerEvents?"pointerevent":c);qa&&na(window.top)&&a.addEvent(window.top,f.upName,f.upHandler,!0);a.addEvent(a.MouseTracker.captureElement,f.upName,f.upHandler,!0);a.addEvent(a.MouseTracker.captureElement,f.moveName,f.moveHandler,!0)}}function g(b,c,d){var f,g=b.getActivePointersListByType(c);g.captureCount-=d||1;if(0===g.captureCount)if(a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9)b.element.releaseCapture();else{f=e(b,a.MouseTracker.havePointerEvents?"pointerevent":c);qa&&na(window.top)&&a.removeEvent(window.top,f.upName,f.upHandler,!0);a.removeEvent(a.MouseTracker.captureElement,f.moveName,f.moveHandler,!0);a.removeEvent(a.MouseTracker.captureElement,f.upName,f.upHandler,!0)}}function h(b){var c;if(a.MouseTracker.unprefixedPointerEvents)c=b.pointerType;else switch(b.pointerType){case 2:c="touch";break;case 3:c="pen";break;case 4:c="mouse";break;default:c=""}return c}function i(b){return a.getMousePosition(b)}function j(a,b){return k(i(a),b)}function k(b,c){var d=a.getElementOffset(c);return b.minus(d)}function l(b,c){return new a.Point((b.x+c.x)/2,(b.y+c.y)/2)}function m(b,c){b.clickHandler&&a.cancelEvent(c)}function n(b,c){b.dblClickHandler&&a.cancelEvent(c)}function o(b,c){var d;if(b.keyDownHandler){c=a.getEvent(c);d=b.keyDownHandler({eventSource:b,keyCode:c.keyCode?c.keyCode:c.charCode,ctrl:c.ctrlKey,shift:c.shiftKey,alt:c.altKey,meta:c.metaKey,originalEvent:c,preventDefaultAction:!1,userData:b.userData});d||a.cancelEvent(c)}}function p(b,c){var d;if(b.keyUpHandler){c=a.getEvent(c);d=b.keyUpHandler({eventSource:b,keyCode:c.keyCode?c.keyCode:c.charCode,ctrl:c.ctrlKey,shift:c.shiftKey,alt:c.altKey,meta:c.metaKey,originalEvent:c,preventDefaultAction:!1,userData:b.userData});d||a.cancelEvent(c)}}function q(b,c){var d;if(b.keyHandler){c=a.getEvent(c);d=b.keyHandler({eventSource:b,keyCode:c.keyCode?c.keyCode:c.charCode,ctrl:c.ctrlKey,shift:c.shiftKey,alt:c.altKey,meta:c.metaKey,originalEvent:c,preventDefaultAction:!1,userData:b.userData});d||a.cancelEvent(c)}}function r(b,c){var d;if(b.focusHandler){c=a.getEvent(c);d=b.focusHandler({eventSource:b,originalEvent:c,preventDefaultAction:!1,userData:b.userData});d===!1&&a.cancelEvent(c)}}function s(b,c){var d;if(b.blurHandler){c=a.getEvent(c);d=b.blurHandler({eventSource:b,originalEvent:c,preventDefaultAction:!1,userData:b.userData});d===!1&&a.cancelEvent(c)}}function t(a,b){v(a,b,b)}function u(b,c){c=a.getEvent(c);var d={target:c.target||c.srcElement,type:"wheel",shiftKey:c.shiftKey||!1,clientX:c.clientX,clientY:c.clientY,pageX:c.pageX?c.pageX:c.clientX,pageY:c.pageY?c.pageY:c.clientY,deltaMode:"MozMousePixelScroll"==c.type?0:1,deltaX:0,deltaZ:0};"mousewheel"==a.MouseTracker.wheelEventName?d.deltaY=-1/a.DEFAULT_SETTINGS.pixelsPerWheelLine*c.wheelDelta:d.deltaY=c.detail;v(b,d,c)}function v(b,c,d){var e,f=0;f=c.deltaY<0?1:-1;if(b.scrollHandler){e=b.scrollHandler({eventSource:b,pointerType:"mouse",position:j(c,b.element),scroll:f,shift:c.shiftKey,isTouchEvent:!1,originalEvent:d,preventDefaultAction:!1,userData:b.userData});e===!1&&a.cancelEvent(d)}}function w(a,b){if(a===b)return!1;for(;b&&b!==a;)b=b.parentNode;return b===a}function x(b,c){c=a.getEvent(c);z(b,c)}function y(b,c){c=a.getEvent(c);c.currentTarget===c.relatedTarget||w(c.currentTarget,c.relatedTarget)||z(b,c)}function z(b,c){var d={id:a.MouseTracker.mousePointerId,type:"mouse",isPrimary:!0,currentPos:i(c),currentTime:a.now()};ga(b,c,[d])}function A(b,c){c=a.getEvent(c);C(b,c)}function B(b,c){c=a.getEvent(c);c.currentTarget===c.relatedTarget||w(c.currentTarget,c.relatedTarget)||C(b,c)}function C(b,c){var d={id:a.MouseTracker.mousePointerId,type:"mouse",isPrimary:!0,currentPos:i(c),currentTime:a.now()};ha(b,c,[d])}function D(b){return a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9?1===b?0:2===b?2:4===b?1:-1:b}function E(b,c){var d;c=a.getEvent(c);d={id:a.MouseTracker.mousePointerId,type:"mouse",isPrimary:!0,currentPos:i(c),currentTime:a.now()};if(ia(b,c,[d],D(c.button))){a.stopEvent(c);f(b,"mouse")}(b.clickHandler||b.dblClickHandler||b.pressHandler||b.dragHandler||b.dragEndHandler)&&a.cancelEvent(c)}function F(a,b){H(a,b)}function G(b,c){H(b,c);a.stopEvent(c)}function H(b,c){var d;c=a.getEvent(c);d={id:a.MouseTracker.mousePointerId,type:"mouse",isPrimary:!0,currentPos:i(c),currentTime:a.now()};ja(b,c,[d],D(c.button))&&g(b,"mouse")}function I(a,b){K(a,b)}function J(b,c){K(b,c);a.stopEvent(c)}function K(b,c){var d;c=a.getEvent(c);d={id:a.MouseTracker.mousePointerId,type:"mouse",isPrimary:!0,currentPos:i(c),currentTime:a.now()};ka(b,c,[d])}function L(a,b,c){var d,e=c.getLength(),f=[];for(d=0;e>d;d++)f.push(c.getByIndex(d));if(f.length>0){ja(a,b,f,0);c.captureCount=1;g(a,"touch");ha(a,b,f)}}function M(b,c){var d,e,g,h,j=c.changedTouches.length,k=[],l=b.getActivePointersListByType("touch");d=a.now();if(l.getLength()>c.touches.length-j){a.console.warn("Tracked touch contact count doesn't match event.touches.length. Removing all tracked touch pointers.");L(b,c,l)}for(e=0;j>e;e++)k.push({id:c.changedTouches[e].identifier,type:"touch",currentPos:i(c.changedTouches[e]),currentTime:d});ga(b,c,k);for(e=0;e<oa.length;e++)if(oa[e]!==b&&oa[e].isTracking()&&w(oa[e].element,b.element)){h=[];for(g=0;j>g;g++)h.push({id:c.changedTouches[g].identifier,type:"touch",currentPos:i(c.changedTouches[g]),currentTime:d});ga(oa[e],c,h)}if(ia(b,c,k,0)){a.stopEvent(c);f(b,"touch",j)}a.cancelEvent(c)}function N(a,b){P(a,b)}function O(b,c){P(b,c);a.stopEvent(c)}function P(b,c){var d,e,f,h,j=c.changedTouches.length,k=[];d=a.now();for(e=0;j>e;e++)k.push({id:c.changedTouches[e].identifier,type:"touch",currentPos:i(c.changedTouches[e]),currentTime:d});ja(b,c,k,0)&&g(b,"touch",j);ha(b,c,k);for(e=0;e<oa.length;e++)if(oa[e]!==b&&oa[e].isTracking()&&w(oa[e].element,b.element)){h=[];for(f=0;j>f;f++)h.push({id:c.changedTouches[f].identifier,type:"touch",currentPos:i(c.changedTouches[f]),currentTime:d});ha(oa[e],c,h)}a.cancelEvent(c)}function Q(a,b){S(a,b)}function R(b,c){S(b,c);a.stopEvent(c)}function S(b,c){var d,e=c.changedTouches.length,f=[];for(d=0;e>d;d++)f.push({id:c.changedTouches[d].identifier,type:"touch",currentPos:i(c.changedTouches[d]),currentTime:a.now()});ka(b,c,f);a.cancelEvent(c)}function T(a,b){var c=(b.changedTouches.length,a.getActivePointersListByType("touch"));L(a,b,c)}function U(a,b){b.stopPropagation();b.preventDefault();return!1}function V(a,b){b.stopPropagation();b.preventDefault();return!1}function W(b,c){var d;if(c.currentTarget!==c.relatedTarget&&!w(c.currentTarget,c.relatedTarget)){d={id:c.pointerId,type:h(c),isPrimary:c.isPrimary,currentPos:i(c),currentTime:a.now()};ga(b,c,[d])}}function X(b,c){var d;if(c.currentTarget!==c.relatedTarget&&!w(c.currentTarget,c.relatedTarget)){d={id:c.pointerId,type:h(c),isPrimary:c.isPrimary,currentPos:i(c),currentTime:a.now()};ha(b,c,[d])}}function Y(b,c){var d;d={id:c.pointerId,type:h(c),isPrimary:c.isPrimary,currentPos:i(c),currentTime:a.now()};if(ia(b,c,[d],c.button)){ a.stopEvent(c);f(b,d.type)}(b.clickHandler||b.dblClickHandler||b.pressHandler||b.dragHandler||b.dragEndHandler||b.pinchHandler)&&a.cancelEvent(c)}function Z(a,b){_(a,b)}function $(b,c){var d=b.getActivePointersListByType(h(c));d.getById(c.pointerId)&&_(b,c);a.stopEvent(c)}function _(b,c){var d;d={id:c.pointerId,type:h(c),isPrimary:c.isPrimary,currentPos:i(c),currentTime:a.now()};ja(b,c,[d],c.button)&&g(b,d.type)}function aa(a,b){ca(a,b)}function ba(b,c){var d=b.getActivePointersListByType(h(c));d.getById(c.pointerId)&&ca(b,c);a.stopEvent(c)}function ca(b,c){var d;d={id:c.pointerId,type:h(c),isPrimary:c.isPrimary,currentPos:i(c),currentTime:a.now()};ka(b,c,[d])}function da(a,b){var c;c={id:b.pointerId,type:h(b)};la(a,b,[c])}function ea(a,b){b.hasOwnProperty("isPrimary")||(0===a.getLength()?b.isPrimary=!0:b.isPrimary=!1);b.speed=0;b.direction=0;b.contactPos=b.currentPos;b.contactTime=b.currentTime;b.lastPos=b.currentPos;b.lastTime=b.currentTime;return a.add(b)}function fa(a,b){var c,d;if(a.getById(b.id)){c=a.removeById(b.id);if(!b.hasOwnProperty("isPrimary")){d=a.getPrimary();if(!d){d=a.getByIndex(0);d&&(d.isPrimary=!0)}}}else c=a.getLength();return c}function ga(b,c,d){var e,f,g,h,i=b.getActivePointersListByType(d[0].type),j=d.length;for(e=0;j>e;e++){f=d[e];g=i.getById(f.id);if(g){g.insideElement=!0;g.lastPos=g.currentPos;g.lastTime=g.currentTime;g.currentPos=f.currentPos;g.currentTime=f.currentTime;f=g}else{f.captured=!1;f.insideElementPressed=!1;f.insideElement=!0;ea(i,f)}if(b.enterHandler){h=b.enterHandler({eventSource:b,pointerType:f.type,position:k(f.currentPos,b.element),buttons:i.buttons,pointers:b.getActivePointerCount(),insideElementPressed:f.insideElementPressed,buttonDownAny:0!==i.buttons,isTouchEvent:"touch"===f.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});h===!1&&a.cancelEvent(c)}}}function ha(b,c,d){var e,f,g,h,i=(pa[b.hash],b.getActivePointersListByType(d[0].type)),j=d.length;for(e=0;j>e;e++){f=d[e];g=i.getById(f.id);if(g){if(g.captured){g.insideElement=!1;g.lastPos=g.currentPos;g.lastTime=g.currentTime;g.currentPos=f.currentPos;g.currentTime=f.currentTime}else fa(i,g);f=g}if(b.exitHandler){h=b.exitHandler({eventSource:b,pointerType:f.type,position:k(f.currentPos,b.element),buttons:i.buttons,pointers:b.getActivePointerCount(),insideElementPressed:g?g.insideElementPressed:!1,buttonDownAny:0!==i.buttons,isTouchEvent:"touch"===f.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});h===!1&&a.cancelEvent(c)}}}function ia(b,c,d,e){var f,g,h,i,j=pa[b.hash],m=b.getActivePointersListByType(d[0].type),n=d.length;"undefined"!=typeof c.buttons?m.buttons=c.buttons:a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9?0===e?m.buttons+=1:1===e?m.buttons+=4:2===e?m.buttons+=2:3===e?m.buttons+=8:4===e?m.buttons+=16:5===e&&(m.buttons+=32):0===e?m.buttons|=1:1===e?m.buttons|=4:2===e?m.buttons|=2:3===e?m.buttons|=8:4===e?m.buttons|=16:5===e&&(m.buttons|=32);if(0!==e){if(b.nonPrimaryPressHandler){f=b.nonPrimaryPressHandler({eventSource:b,pointerType:d[0].type,position:k(d[0].currentPos,b.element),button:e,buttons:m.buttons,isTouchEvent:"touch"===d[0].type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}return!1}for(g=0;n>g;g++){h=d[g];i=m.getById(h.id);if(i){i.captured=!0;i.insideElementPressed=!0;i.insideElement=!0;i.contactPos=h.currentPos;i.contactTime=h.currentTime;i.lastPos=i.currentPos;i.lastTime=i.currentTime;i.currentPos=h.currentPos;i.currentTime=h.currentTime;h=i}else{h.captured=!0;h.insideElementPressed=!0;h.insideElement=!0;ea(m,h)}m.contacts++;(b.dragHandler||b.dragEndHandler||b.pinchHandler)&&a.MouseTracker.gesturePointVelocityTracker.addPoint(b,h);if(1===m.contacts){if(b.pressHandler){f=b.pressHandler({eventSource:b,pointerType:h.type,position:k(h.contactPos,b.element),buttons:m.buttons,isTouchEvent:"touch"===h.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}}else if(2===m.contacts&&b.pinchHandler&&"touch"===h.type){j.pinchGPoints=m.asArray();j.lastPinchDist=j.currentPinchDist=j.pinchGPoints[0].currentPos.distanceTo(j.pinchGPoints[1].currentPos);j.lastPinchCenter=j.currentPinchCenter=l(j.pinchGPoints[0].currentPos,j.pinchGPoints[1].currentPos)}}return!0}function ja(b,c,d,e){var f,g,h,i,j,m,n,o=pa[b.hash],p=b.getActivePointersListByType(d[0].type),q=d.length,r=!1,s=!1;"undefined"!=typeof c.buttons?p.buttons=c.buttons:a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9?0===e?p.buttons-=1:1===e?p.buttons-=4:2===e?p.buttons-=2:3===e?p.buttons-=8:4===e?p.buttons-=16:5===e&&(p.buttons-=32):0===e?p.buttons^=-2:1===e?p.buttons^=-5:2===e?p.buttons^=-3:3===e?p.buttons^=-9:4===e?p.buttons^=-17:5===e&&(p.buttons^=-33);if(0!==e){if(b.nonPrimaryReleaseHandler){f=b.nonPrimaryReleaseHandler({eventSource:b,pointerType:d[0].type,position:k(d[0].currentPos,b.element),button:e,buttons:p.buttons,isTouchEvent:"touch"===d[0].type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}return!1}for(i=0;q>i;i++){j=d[i];m=p.getById(j.id);if(m){if(m.captured){m.captured=!1;r=!0;s=!0}m.lastPos=m.currentPos;m.lastTime=m.currentTime;m.currentPos=j.currentPos;m.currentTime=j.currentTime;m.insideElement||fa(p,m);g=m.currentPos;h=m.currentTime;if(s){p.contacts--;(b.dragHandler||b.dragEndHandler||b.pinchHandler)&&a.MouseTracker.gesturePointVelocityTracker.removePoint(b,m);if(0===p.contacts){if(b.releaseHandler){f=b.releaseHandler({eventSource:b,pointerType:m.type,position:k(g,b.element),buttons:p.buttons,insideElementPressed:m.insideElementPressed,insideElementReleased:m.insideElement,isTouchEvent:"touch"===m.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}if(b.dragEndHandler&&!m.currentPos.equals(m.contactPos)){f=b.dragEndHandler({eventSource:b,pointerType:m.type,position:k(m.currentPos,b.element),speed:m.speed,direction:m.direction,shift:c.shiftKey,isTouchEvent:"touch"===m.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}if((b.clickHandler||b.dblClickHandler)&&m.insideElement){n=h-m.contactTime<=b.clickTimeThreshold&&m.contactPos.distanceTo(g)<=b.clickDistThreshold;if(b.clickHandler){f=b.clickHandler({eventSource:b,pointerType:m.type,position:k(m.currentPos,b.element),quick:n,shift:c.shiftKey,isTouchEvent:"touch"===m.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}if(b.dblClickHandler&&n){p.clicks++;if(1===p.clicks){o.lastClickPos=g;o.dblClickTimeOut=setTimeout(function(){p.clicks=0},b.dblClickTimeThreshold)}else if(2===p.clicks){clearTimeout(o.dblClickTimeOut);p.clicks=0;if(o.lastClickPos.distanceTo(g)<=b.dblClickDistThreshold){f=b.dblClickHandler({eventSource:b,pointerType:m.type,position:k(m.currentPos,b.element),shift:c.shiftKey,isTouchEvent:"touch"===m.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}o.lastClickPos=null}}}}else if(2===p.contacts&&b.pinchHandler&&"touch"===m.type){o.pinchGPoints=p.asArray();o.lastPinchDist=o.currentPinchDist=o.pinchGPoints[0].currentPos.distanceTo(o.pinchGPoints[1].currentPos);o.lastPinchCenter=o.currentPinchCenter=l(o.pinchGPoints[0].currentPos,o.pinchGPoints[1].currentPos)}}else if(b.releaseHandler){f=b.releaseHandler({eventSource:b,pointerType:m.type,position:k(g,b.element),buttons:p.buttons,insideElementPressed:m.insideElementPressed,insideElementReleased:m.insideElement,isTouchEvent:"touch"===m.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});f===!1&&a.cancelEvent(c)}}}return r}function ka(b,c,d){var e,f,g,h,i,j,m=pa[b.hash],n=b.getActivePointersListByType(d[0].type),o=d.length;"undefined"!=typeof c.buttons&&(n.buttons=c.buttons);for(e=0;o>e;e++){f=d[e];g=n.getById(f.id);if(g){f.hasOwnProperty("isPrimary")&&(g.isPrimary=f.isPrimary);g.lastPos=g.currentPos;g.lastTime=g.currentTime;g.currentPos=f.currentPos;g.currentTime=f.currentTime}else{f.captured=!1;f.insideElementPressed=!1;f.insideElement=!0;ea(n,f)}}if(b.stopHandler&&"mouse"===d[0].type){clearTimeout(b.stopTimeOut);b.stopTimeOut=setTimeout(function(){ma(b,c,d[0].type)},b.stopDelay)}if(0===n.contacts){if(b.moveHandler){j=b.moveHandler({eventSource:b,pointerType:d[0].type,position:k(d[0].currentPos,b.element),buttons:n.buttons,isTouchEvent:"touch"===d[0].type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});j===!1&&a.cancelEvent(c)}}else if(1===n.contacts){if(b.moveHandler){g=n.asArray()[0];j=b.moveHandler({eventSource:b,pointerType:g.type,position:k(g.currentPos,b.element),buttons:n.buttons,isTouchEvent:"touch"===g.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});j===!1&&a.cancelEvent(c)}if(b.dragHandler){g=n.asArray()[0];i=g.currentPos.minus(g.lastPos);j=b.dragHandler({eventSource:b,pointerType:g.type,position:k(g.currentPos,b.element),buttons:n.buttons,delta:i,speed:g.speed,direction:g.direction,shift:c.shiftKey,isTouchEvent:"touch"===g.type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});j===!1&&a.cancelEvent(c)}}else if(2===n.contacts){if(b.moveHandler){h=n.asArray();j=b.moveHandler({eventSource:b,pointerType:h[0].type,position:k(l(h[0].currentPos,h[1].currentPos),b.element),buttons:n.buttons,isTouchEvent:"touch"===h[0].type,originalEvent:c,preventDefaultAction:!1,userData:b.userData});j===!1&&a.cancelEvent(c)}if(b.pinchHandler&&"touch"===d[0].type){i=m.pinchGPoints[0].currentPos.distanceTo(m.pinchGPoints[1].currentPos);if(i!=m.currentPinchDist){m.lastPinchDist=m.currentPinchDist;m.currentPinchDist=i;m.lastPinchCenter=m.currentPinchCenter;m.currentPinchCenter=l(m.pinchGPoints[0].currentPos,m.pinchGPoints[1].currentPos);j=b.pinchHandler({eventSource:b,pointerType:"touch",gesturePoints:m.pinchGPoints,lastCenter:k(m.lastPinchCenter,b.element),center:k(m.currentPinchCenter,b.element),lastDistance:m.lastPinchDist,distance:m.currentPinchDist,shift:c.shiftKey,originalEvent:c,preventDefaultAction:!1,userData:b.userData});j===!1&&a.cancelEvent(c)}}}}function la(a,b,c){ja(a,b,c,0);ha(a,b,c)}function ma(a,b,c){a.stopHandler&&a.stopHandler({eventSource:a,pointerType:c,position:j(b,a.element),buttons:a.getActivePointersListByType(c).buttons,isTouchEvent:"touch"===c,originalEvent:b,preventDefaultAction:!1,userData:a.userData})}function na(a){try{return a.addEventListener&&a.removeEventListener}catch(b){return!1}}var oa=[];var pa={};a.MouseTracker=function(b){oa.push(this);var c=arguments;a.isPlainObject(b)||(b={element:c[0],clickTimeThreshold:c[1],clickDistThreshold:c[2]});this.hash=Math.random();this.element=a.getElement(b.element);this.clickTimeThreshold=b.clickTimeThreshold||a.DEFAULT_SETTINGS.clickTimeThreshold;this.clickDistThreshold=b.clickDistThreshold||a.DEFAULT_SETTINGS.clickDistThreshold;this.dblClickTimeThreshold=b.dblClickTimeThreshold||a.DEFAULT_SETTINGS.dblClickTimeThreshold;this.dblClickDistThreshold=b.dblClickDistThreshold||a.DEFAULT_SETTINGS.dblClickDistThreshold;this.userData=b.userData||null;this.stopDelay=b.stopDelay||50;this.enterHandler=b.enterHandler||null;this.exitHandler=b.exitHandler||null;this.pressHandler=b.pressHandler||null;this.nonPrimaryPressHandler=b.nonPrimaryPressHandler||null;this.releaseHandler=b.releaseHandler||null;this.nonPrimaryReleaseHandler=b.nonPrimaryReleaseHandler||null;this.moveHandler=b.moveHandler||null;this.scrollHandler=b.scrollHandler||null;this.clickHandler=b.clickHandler||null;this.dblClickHandler=b.dblClickHandler||null;this.dragHandler=b.dragHandler||null;this.dragEndHandler=b.dragEndHandler||null;this.pinchHandler=b.pinchHandler||null;this.stopHandler=b.stopHandler||null;this.keyDownHandler=b.keyDownHandler||null;this.keyUpHandler=b.keyUpHandler||null;this.keyHandler=b.keyHandler||null;this.focusHandler=b.focusHandler||null;this.blurHandler=b.blurHandler||null;var d=this;pa[this.hash]={click:function(a){m(d,a)},dblclick:function(a){n(d,a)},keydown:function(a){o(d,a)},keyup:function(a){p(d,a)},keypress:function(a){q(d,a)},focus:function(a){r(d,a)},blur:function(a){s(d,a)},wheel:function(a){t(d,a)},mousewheel:function(a){u(d,a)},DOMMouseScroll:function(a){u(d,a)},MozMousePixelScroll:function(a){u(d,a)},mouseenter:function(a){x(d,a)},mouseleave:function(a){A(d,a)},mouseover:function(a){y(d,a)},mouseout:function(a){B(d,a)},mousedown:function(a){E(d,a)},mouseup:function(a){F(d,a)},mouseupcaptured:function(a){G(d,a)},mousemove:function(a){I(d,a)},mousemovecaptured:function(a){J(d,a)},touchstart:function(a){M(d,a)},touchend:function(a){N(d,a)},touchendcaptured:function(a){O(d,a)},touchmove:function(a){Q(d,a)},touchmovecaptured:function(a){R(d,a)},touchcancel:function(a){T(d,a)},gesturestart:function(a){U(d,a)},gesturechange:function(a){V(d,a)},pointerover:function(a){W(d,a)},MSPointerOver:function(a){W(d,a)},pointerout:function(a){X(d,a)},MSPointerOut:function(a){X(d,a)},pointerdown:function(a){Y(d,a)},MSPointerDown:function(a){Y(d,a)},pointerup:function(a){Z(d,a)},MSPointerUp:function(a){Z(d,a)},pointermove:function(a){aa(d,a)},MSPointerMove:function(a){aa(d,a)},pointercancel:function(a){da(d,a)},MSPointerCancel:function(a){da(d,a)},pointerupcaptured:function(a){$(d,a)},pointermovecaptured:function(a){ba(d,a)},tracking:!1,activePointersLists:[],lastClickPos:null,dblClickTimeOut:null,pinchGPoints:[],lastPinchDist:0,currentPinchDist:0,lastPinchCenter:null,currentPinchCenter:null};b.startDisabled||this.setTracking(!0)};a.MouseTracker.prototype={destroy:function(){var a;d(this);this.element=null;for(a=0;a<oa.length;a++)if(oa[a]===this){oa.splice(a,1);break}pa[this.hash]=null;delete pa[this.hash]},isTracking:function(){return pa[this.hash].tracking},setTracking:function(a){a?c(this):d(this);return this},getActivePointersListByType:function(b){var c,d,e=pa[this.hash],f=e.activePointersLists.length;for(c=0;f>c;c++)if(e.activePointersLists[c].type===b)return e.activePointersLists[c];d=new a.MouseTracker.GesturePointList(b);e.activePointersLists.push(d);return d},getActivePointerCount:function(){var a,b=pa[this.hash],c=b.activePointersLists.length,d=0;for(a=0;c>a;a++)d+=b.activePointersLists[a].getLength();return d},enterHandler:function(){},exitHandler:function(){},pressHandler:function(){},nonPrimaryPressHandler:function(){},releaseHandler:function(){},nonPrimaryReleaseHandler:function(){},moveHandler:function(){},scrollHandler:function(){},clickHandler:function(){},dblClickHandler:function(){},dragHandler:function(){},dragEndHandler:function(){},pinchHandler:function(){},stopHandler:function(){},keyDownHandler:function(){},keyUpHandler:function(){},keyHandler:function(){},focusHandler:function(){},blurHandler:function(){}};a.MouseTracker.gesturePointVelocityTracker=function(){var b=[],c=0,d=0;var e=function(a,b){return a.hash.toString()+b.type+b.id.toString()};var f=function(){var c,e,f,g,h,i,j=b.length,k=a.now();g=k-d;d=k;for(c=0;j>c;c++){e=b[c];f=e.gPoint;f.direction=Math.atan2(f.currentPos.y-e.lastPos.y,f.currentPos.x-e.lastPos.x);h=e.lastPos.distanceTo(f.currentPos);e.lastPos=f.currentPos;i=1e3*h/(g+1);f.speed=.75*i+.25*f.speed}};var g=function(g,h){var i=e(g,h);b.push({guid:i,gPoint:h,lastPos:h.currentPos});if(1===b.length){d=a.now();c=window.setInterval(f,50)}};var h=function(a,d){var f,g=e(a,d),h=b.length;for(f=0;h>f;f++)if(b[f].guid===g){b.splice(f,1);h--;0===h&&window.clearInterval(c);break}};return{addPoint:g,removePoint:h}}();a.MouseTracker.captureElement=document;a.MouseTracker.wheelEventName=a.Browser.vendor==a.BROWSERS.IE&&a.Browser.version>8||"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll";a.MouseTracker.supportsMouseCapture=function(){var b=document.createElement("div");return a.isFunction(b.setCapture)&&a.isFunction(b.releaseCapture)}();a.MouseTracker.subscribeEvents=["click","dblclick","keydown","keyup","keypress","focus","blur",a.MouseTracker.wheelEventName];"DOMMouseScroll"==a.MouseTracker.wheelEventName&&a.MouseTracker.subscribeEvents.push("MozMousePixelScroll");if(window.PointerEvent&&(window.navigator.pointerEnabled||a.Browser.vendor!==a.BROWSERS.IE)){a.MouseTracker.havePointerEvents=!0;a.MouseTracker.subscribeEvents.push("pointerover","pointerout","pointerdown","pointerup","pointermove","pointercancel");a.MouseTracker.unprefixedPointerEvents=!0;navigator.maxTouchPoints?a.MouseTracker.maxTouchPoints=navigator.maxTouchPoints:a.MouseTracker.maxTouchPoints=0;a.MouseTracker.haveMouseEnter=!1}else if(window.MSPointerEvent&&window.navigator.msPointerEnabled){a.MouseTracker.havePointerEvents=!0;a.MouseTracker.subscribeEvents.push("MSPointerOver","MSPointerOut","MSPointerDown","MSPointerUp","MSPointerMove","MSPointerCancel");a.MouseTracker.unprefixedPointerEvents=!1;navigator.msMaxTouchPoints?a.MouseTracker.maxTouchPoints=navigator.msMaxTouchPoints:a.MouseTracker.maxTouchPoints=0;a.MouseTracker.haveMouseEnter=!1}else{a.MouseTracker.havePointerEvents=!1;if(a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9){a.MouseTracker.subscribeEvents.push("mouseenter","mouseleave");a.MouseTracker.haveMouseEnter=!0}else{a.MouseTracker.subscribeEvents.push("mouseover","mouseout");a.MouseTracker.haveMouseEnter=!1}a.MouseTracker.subscribeEvents.push("mousedown","mouseup","mousemove");"ontouchstart"in window&&a.MouseTracker.subscribeEvents.push("touchstart","touchend","touchmove","touchcancel");"ongesturestart"in window&&a.MouseTracker.subscribeEvents.push("gesturestart","gesturechange");a.MouseTracker.mousePointerId="legacy-mouse";a.MouseTracker.maxTouchPoints=10}a.MouseTracker.GesturePointList=function(a){this._gPoints=[];this.type=a;this.buttons=0;this.contacts=0;this.clicks=0;this.captureCount=0};a.MouseTracker.GesturePointList.prototype={getLength:function(){return this._gPoints.length},asArray:function(){return this._gPoints},add:function(a){return this._gPoints.push(a)},removeById:function(a){var b,c=this._gPoints