Array.prototype.add=function(a,b){a[a.length]=b};Array.prototype.clear=function(a){a.length=0};Array.prototype.clone=function(a){return a.length===1?[a[0]]:Array.apply(null,a)};SArray=[];if(!window.Function)window.Function={};Function.prototype.createDelegate=function(a,b){return function(){arguments===void 0&&(arguments=[]);return b.apply(a,arguments)}};function String(){}String.format=function(){return String._toFormattedString(!1,arguments)};
String._toFormattedString=function(a,b){for(var c="",d=b[0],f=0;;){var e=d.indexOf("{",f),g=d.indexOf("}",f);if(e<0&&g<0){c+=d.slice(f);break}if(g>0&&(g<e||e<0)){if(d.charAt(g+1)!=="}")throw Error.argument("format",Sys.Res.stringFormatBraceMismatch);c+=d.slice(f,g+1);f=g+2}else if(c+=d.slice(f,e),f=e+1,d.charAt(f)==="{")c+="{",f++;else{if(g<0)throw Error.argument("format",Sys.Res.stringFormatBraceMismatch);e=d.substring(f,g);var h=e.indexOf(":");f=parseInt(h<0?e:e.substring(0,h),10)+1;if(isNaN(f))throw Error.argument("format",
Sys.Res.stringFormatInvalid);e=h<0?"":e.substring(h+1);f=b[f];if(typeof f==="undefined"||f===null)f="";c+=f.toFormattedString?f.toFormattedString(e):a&&f.localeFormat?f.localeFormat(e):f.format?f.format(e):f.toString();f=g+1}}return c};function Observer(){}Observer.prototype={_getContext:function(a,b){var c=a._observerContext;if(c)return c();if(b)return(a._observerContext=this._createContext())();return null},_createContext:function(){var a={events:new EventHandlerList};return function(){return a}}};
var EventHandlerList=function(){this._list={}};
EventHandlerList.prototype={_addHandler:function(a,b){SArray.add(this._getEvent(a,!0),b)},addHandler:function(a,b){this._addHandler(a,b)},_removeHandler:function(a,b){var c=this._getEvent(a);c&&SArray.remove(c,b)},_removeHandlers:function(a){if(a){if(a=this._getEvent(a))a.length=0}else this._list={}},removeHandler:function(a,b){this._removeHandler(a,b)},getHandler:function(a){var b=this._getEvent(a);if(!b||!b.length)return null;b=SArray.clone(b);return function(a,d){for(var f=0,e=b.length;f<e;f++)b[f](a,
d)}},_getEvent:function(a,b){var c=this._list[a];if(!c){if(!b)return null;this._list[a]=c=[]}return c}};var Seadragon=new function(){};hasConsole=typeof console!="undefined"&&console.log&&console.log.apply&&console.error;Seadragon.Debug={error:hasConsole?function(){console.error.apply(console,arguments)}:function(){},log:hasConsole?function(){console.log.apply(console,arguments)}:function(){},fail:hasConsole?function(){console.log.apply(console,arguments)}:function(){}};
Seadragon.Utils=function(){var a={UNKNOWN:0,IE:1,FIREFOX:2,SAFARI:3,CHROME:4,OPERA:5};Seadragon.Browser=a;var b=this,c=["Msxml2.XMLHTTP","Msxml3.XMLHTTP","Microsoft.XMLHTTP"],d={bmp:!1,jpeg:!0,jpg:!0,png:!0,tif:!1,wdp:!1},f=a.UNKNOWN,e=0,g=!1,h={};(function(){var b=navigator.appName,c=navigator.appVersion,d=navigator.userAgent;if(b=="Microsoft Internet Explorer"&&window.attachEvent&&window.ActiveXObject)b=d.indexOf("MSIE"),f=a.IE,e=parseFloat(d.substring(b+5,d.indexOf(";",b)));else if(b=="Netscape"&&
window.addEventListener){var j=d.indexOf("Firefox");b=d.indexOf("Safari");c=d.indexOf("Chrome");j>=0?(f=a.FIREFOX,e=parseFloat(d.substring(j+8))):b>=0&&(j=d.substring(0,b).lastIndexOf("/"),f=c>=0?a.CHROME:a.SAFARI,e=parseFloat(d.substring(j+1,b)))}else if(b=="Opera"&&window.opera&&window.attachEvent)f=a.OPERA,e=parseFloat(c);d=window.location.search.substring(1).split("&");for(b=0;b<d.length;b++)c=d[b],j=c.indexOf("="),j>0&&(h[c.substring(0,j)]=decodeURIComponent(c.substring(j+1)));g=f==a.IE||f==
a.CHROME&&e<2})();this.getBrowser=function(){return f};this.getBrowserVersion=function(){return e};this.getElement=function(a){typeof a=="string"&&(a=document.getElementById(a));return a};this.getElementPosition=function(a){a=b.getElement(a);for(var c=new Seadragon.Point,d=b.getElementStyle(a).position=="fixed",e=d&&a!=document.body?document.body:a.offsetParent;e;)c.x+=a.offsetLeft,c.y+=a.offsetTop,d&&(c=c.plus(b.getPageScroll())),a=e,e=(d=b.getElementStyle(a).position=="fixed")&&a!=document.body?
document.body:a.offsetParent;return c};this.getElementSize=function(a){a=b.getElement(a);return new Seadragon.Point(a.clientWidth,a.clientHeight)};this.getElementStyle=function(a){a=b.getElement(a);if(a.currentStyle)return a.currentStyle;else if(window.getComputedStyle)return window.getComputedStyle(a,"");else Seadragon.Debug.fail("Unknown element style, no known technique.")};this.getEvent=function(a){return a?a:window.event};this.getMousePosition=function(a){a=b.getEvent(a);var c=new Seadragon.Point;
typeof a.pageX=="number"?(c.x=a.pageX,c.y=a.pageY):typeof a.clientX=="number"?(c.x=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,c.y=a.clientY+document.body.scrollTop+document.documentElement.scrollTop):Seadragon.Debug.fail("Unknown event mouse position, no known technique.");return c};this.getPageScroll=function(){var a=new Seadragon.Point,b=document.documentElement||{},c=document.body||{};if(typeof window.pageXOffset=="number")a.x=window.pageXOffset,a.y=window.pageYOffset;
else if(c.scrollLeft||c.scrollTop)a.x=c.scrollLeft,a.y=c.scrollTop;else if(b.scrollLeft||b.scrollTop)a.x=b.scrollLeft,a.y=b.scrollTop;return a};this.getWindowSize=function(){var a=new Seadragon.Point,b=document.documentElement||{},c=document.body||{};typeof window.innerWidth=="number"?(a.x=window.innerWidth,a.y=window.innerHeight):b.clientWidth||b.clientHeight?(a.x=b.clientWidth,a.y=b.clientHeight):c.clientWidth||c.clientHeight?(a.x=c.clientWidth,a.y=c.clientHeight):Seadragon.Debug.fail("Unknown window size, no known technique.");
return a};this.imageFormatSupported=function(a){return!!d[(a?a:"").toLowerCase()]};this.makeCenteredNode=function(a){a=Seadragon.Utils.getElement(a);var c=b.makeNeutralElement("div"),d=[];d.push('<div style="display:table; height:100%; width:100%;');d.push("border:none; margin:0px; padding:0px;");d.push('#position:relative; overflow:hidden; text-align:left;">');d.push('<div style="#position:absolute; #top:50%; width:100%; ');d.push("border:none; margin:0px; padding:0px;");d.push('display:table-cell; vertical-align:middle;">');
d.push('<div style="#position:relative; #top:-50%; width:100%; ');d.push("border:none; margin:0px; padding:0px;");d.push('text-align:center;"></div></div></div>');c.innerHTML=d.join("");d=c=c.firstChild;for(var e=c.getElementsByTagName("div");e.length>0;)d=e[0],e=d.getElementsByTagName("div");d.appendChild(a);return c};this.makeNeutralElement=function(a){return document.createElement(a)};this.makeTransparentImage=function(c){var d=b.makeNeutralElement("img"),g=null;f==a.IE&&e<7?(g=b.makeNeutralElement("span"),
g.style.display="inline-block",d.onload=function(){g.style.width=g.style.width||d.width+"px";g.style.height=g.style.height||d.height+"px";d=d.onload=null},d.src=c,g.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+c+"', sizingMethod='scale')"):(g=d,g.src=c);return g};this.setElementOpacity=function(a,c,d){a=b.getElement(a);d&&g&&(c=Math.round(c));a.style.opacity=c<1?c:"";if(c==1)a.style.filter=(a.style.filter||"").replace(/alpha\(.*?\)/g,"");else{c=Math.round(100*c);d=" alpha(opacity="+
c+") ";try{a.filters&&a.filters.alpha?a.filters.alpha.opacity=c:a.style.filter+=d}catch(e){a.style.filter+=d}}};this.addEvent=function(a,c,d,e){a=b.getElement(a);a.addEventListener?a.addEventListener(c,d,e):a.attachEvent?(a.attachEvent("on"+c,d),e&&a.setCapture&&a.setCapture()):Seadragon.Debug.fail("Unable to attach event handler, no known technique.")};this.removeEvent=function(a,c,d,e){a=b.getElement(a);a.removeEventListener?a.removeEventListener(c,d,e):a.detachEvent?(a.detachEvent("on"+c,d),e&&
a.releaseCapture&&a.releaseCapture()):Seadragon.Debug.fail("Unable to detach event handler, no known technique.")};this.cancelEvent=function(a){a=b.getEvent(a);a.preventDefault&&a.preventDefault();a.cancel=!0;a.returnValue=!1};this.stopEvent=function(a){a=b.getEvent(a);a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0};this.createCallback=function(a,b){for(var c=[],d=2;d<arguments.length;d++)c.push(arguments[d]);return function(){for(var d=c.concat([]),e=0;e<arguments.length;e++)d.push(arguments[e]);
return b.apply(a,d)}};this.getUrlParameter=function(a){return(a=h[a])?a:null};this.makeAjaxRequest=function(a,b){var d=typeof b=="function",e=null;if(d){var f=b;b=function(){window.setTimeout(Seadragon.Utils.createCallback(null,f,e),1)}}if(window.ActiveXObject)for(var g=0;g<c.length;g++)try{e=new ActiveXObject(c[g]);break}catch(h){}else window.XMLHttpRequest&&(e=new XMLHttpRequest);e||Seadragon.Debug.fail("Browser doesn't support XMLHttpRequest.");if(d)e.onreadystatechange=function(){if(e.readyState==
4)e.onreadystatechange=new function(){},b()};try{e.open("GET",a,d),e.send(null)}catch(o){Seadragon.Debug.log(o.name+" while making AJAX request: "+o.message),e=e.onreadystatechange=null,d&&b()}return d?null:e};this.parseXml=function(a){var b=null;if(window.ActiveXObject)try{b=new ActiveXObject("Microsoft.XMLDOM"),b.async=!1,b.loadXML(a)}catch(c){Seadragon.Debug.log(c.name+" while parsing XML (ActiveX): "+c.message)}else if(window.DOMParser)try{b=(new DOMParser).parseFromString(a,"text/xml")}catch(d){Seadragon.Debug.log(d.name+
" while parsing XML (DOMParser): "+d.message)}else Seadragon.Debug.fail("Browser doesn't support XML DOM.");return b}};Seadragon.Utils=new Seadragon.Utils;
(function(){function a(a,b){var c=Seadragon.Utils.getMousePosition(a),d=Seadragon.Utils.getElementPosition(b);return c.minus(d)}function b(a,b){for(var c=document.body;b&&a!=b&&c!=b;)try{b=b.parentNode}catch(d){return!1}return a==b}function c(){e=!0}function d(){e=!1}if(!Seadragon.MouseTracker){var f=Seadragon.Utils.getBrowser()==Seadragon.Browser.IE,e=!1,g=!1,h={},i=[];f?(Seadragon.Utils.addEvent(document,"mousedown",c,!1),Seadragon.Utils.addEvent(document,"mouseup",d,!1)):(Seadragon.Utils.addEvent(window,
"mousedown",c,!0),Seadragon.Utils.addEvent(window,"mouseup",d,!0));Seadragon.MouseTracker=function(c,d,j){function n(a,c){c=c||{};for(var b=0;b<a.touches.length;b++)c[a.touches[b].identifier]=Seadragon.Utils.getMousePosition(a.touches[b]);return c}function v(a){a=n(a);a.length>=2&&(N="pinch");D=a}function y(b){for(var d=n(b),e=[],f=[],g=0;g<b.touches.length;g++)e[g]=b.touches[g].identifier,f[g]=d[e[g]].minus(D[e[g]]);if(typeof m.dragHandler=="function"){try{m.dragHandler(m,a(b.touches[0],c),f[0],
b.shiftKey)}catch(i){Seadragon.Debug.error(i.name+" while executing drag handler: "+i.message,i)}Seadragon.Utils.cancelEvent(b)}D=d}function o(a){D=n(a);D.size<2&&N=="pinch"&&(N="")}function E(){}function F(){}function z(){}function A(){}function G(){B&&(f?(Seadragon.Utils.removeEvent(c,"mousemove",r,!0),Seadragon.Utils.removeEvent(c,"mouseup",s,!0),Seadragon.Utils.addEvent(c,"mouseup",w,!1)):(Seadragon.Utils.removeEvent(window,"mousemove",p,!0),Seadragon.Utils.removeEvent(window,"mouseup",t,!0)),
B=!1)}function L(a,c){var b=h,d;for(d in b)if(b.hasOwnProperty(d)&&O!=d)b[d][a](c)}function C(d){d=Seadragon.Utils.getEvent(d);f&&B&&!b(d.srcElement,c)&&L("onMouseOver",d);var g=d.relatedTarget?d.relatedTarget:d.fromElement;if(b(c,d.target?d.target:d.srcElement)&&!b(c,g))if(H=!0,typeof m.enterHandler=="function")try{m.enterHandler(m,a(d,c),I,e)}catch(i){Seadragon.Debug.error(i.name+" while executing enter handler: "+i.message,i)}}function u(d){d=Seadragon.Utils.getEvent(d);f&&B&&!b(d.srcElement,c)&&
L("onMouseOut",d);var g=d.relatedTarget?d.relatedTarget:d.toElement;if(b(c,d.target?d.target:d.srcElement)&&!b(c,g))if(H=!1,typeof m.exitHandler=="function")try{m.exitHandler(m,a(d,c),I,e)}catch(i){Seadragon.Debug.error(i.name+" while executing exit handler: "+i.message,i)}}function J(b){b=Seadragon.Utils.getEvent(b);if(b.button!=2){I=!0;Q=P=Seadragon.Utils.getMousePosition(b);R=(new Date).getTime();if(typeof m.pressHandler=="function")try{m.pressHandler(m,a(b,c))}catch(d){Seadragon.Debug.error(d.name+
" while executing press handler: "+d.message,d)}(m.pressHandler||m.dragHandler)&&Seadragon.Utils.cancelEvent(b);!f||!g?(B||(f?(Seadragon.Utils.removeEvent(c,"mouseup",w,!1),Seadragon.Utils.addEvent(c,"mouseup",s,!0),Seadragon.Utils.addEvent(c,"mousemove",r,!0)):(Seadragon.Utils.addEvent(window,"mouseup",t,!0),Seadragon.Utils.addEvent(window,"mousemove",p,!0)),B=!0),g=!0,i=[M]):f&&i.push(M)}}function w(b){b=Seadragon.Utils.getEvent(b);var e=I,f=H;if(b.button!=2){I=!1;if(typeof m.releaseHandler=="function")try{m.releaseHandler(m,
a(b,c),e,f)}catch(g){Seadragon.Debug.error(g.name+" while executing release handler: "+g.message,g)}if(e&&f&&(b=Seadragon.Utils.getEvent(b),b.button!=2&&(e=(new Date).getTime()-R,f=Seadragon.Utils.getMousePosition(b),f=Q.distanceTo(f),e=e<=d&&f<=j,typeof m.clickHandler=="function")))try{m.clickHandler(m,a(b,c),e,b.shiftKey)}catch(i){Seadragon.Debug.error(i.name+" while executing click handler: "+i.message,i)}}}function s(a){a=Seadragon.Utils.getEvent(a);if(a.button!=2){for(var b=0;b<i.length;b++){var c=
i[b];if(!c.hasMouse())c.onMouseUp(a)}G();g=!1;a.srcElement.fireEvent("on"+a.type,document.createEventObject(a));Seadragon.Utils.stopEvent(a)}}function t(a){H||w(a);G()}function q(a){m.clickHandler&&Seadragon.Utils.cancelEvent(a)}function x(b){var d=0;if(!b)b=window.event;b.wheelDelta?(d=b.wheelDelta,window.opera&&(d=-d)):b.detail&&(d=-b.detail);if(typeof m.scrollHandler=="function"){try{m.scrollHandler(m,a(b,c),d>0?1:-1,b.shiftKey)}catch(e){Seadragon.Debug.error(e.name+" while executing scroll handler: "+
e.message,e)}Seadragon.Utils.cancelEvent(b)}}function p(b){b=Seadragon.Utils.getEvent(b);var d=Seadragon.Utils.getMousePosition(b),e=d.minus(P);P=d;if(typeof m.dragHandler=="function"){try{m.dragHandler(m,a(b,c),e,b.shiftKey)}catch(f){Seadragon.Debug.error(f.name+" while executing drag handler: "+f.message,f)}Seadragon.Utils.cancelEvent(b)}}function r(a){for(var b=0;b<i.length;b++)i[b].onMouseMove(a);Seadragon.Utils.stopEvent(a)}var m=this,M=null,O=Math.random();c=Seadragon.Utils.getElement(c);var K=
!1,B=!1,I=!1,H=!1,P=null,R=null,Q=null;this.target=c;this.pinchZoomHandler=this.dragHandler=this.clickHandler=this.scrollHandler=this.releaseHandler=this.pressHandler=this.exitHandler=this.enterHandler=null;var D,N="";M={hasMouse:function(){return H},onMouseOver:C,onMouseOut:u,onMouseUp:w,onMouseMove:p};this.isTracking=function(){return K};this.setTracking=function(a){a?K||(Seadragon.Utils.addEvent(c,"mouseover",C,!1),Seadragon.Utils.addEvent(c,"mouseout",u,!1),Seadragon.Utils.addEvent(c,"mousedown",
J,!1),Seadragon.Utils.addEvent(c,"mouseup",w,!1),Seadragon.Utils.addEvent(c,"click",q,!1),Seadragon.Utils.addEvent(c,"DOMMouseScroll",x,!1),Seadragon.Utils.addEvent(c,"mousewheel",x,!1),Seadragon.Utils.addEvent(c,"touchstart",v,!1),Seadragon.Utils.addEvent(c,"touchmove",y,!1),Seadragon.Utils.addEvent(c,"touchend",o,!1),Seadragon.Utils.addEvent(c,"touchcancel",E,!1),Seadragon.Utils.addEvent(c,"gesturestart",F,!1),Seadragon.Utils.addEvent(c,"gesturechange",z,!1),Seadragon.Utils.addEvent(c,"gestureend",
A,!1),K=!0,h[O]=M):K&&(Seadragon.Utils.removeEvent(c,"mouseover",C,!1),Seadragon.Utils.removeEvent(c,"mouseout",u,!1),Seadragon.Utils.removeEvent(c,"mousedown",J,!1),Seadragon.Utils.removeEvent(c,"mouseup",w,!1),Seadragon.Utils.removeEvent(c,"click",q,!1),Seadragon.Utils.removeEvent(c,"DOMMouseScroll",x,!1),Seadragon.Utils.removeEvent(c,"mousewheel",x,!1),Seadragon.Utils.removeEvent(c,"touchstart",v,!1),Seadragon.Utils.removeEvent(c,"touchmove",y,!1),Seadragon.Utils.removeEvent(c,"touchend",o,!1),
Seadragon.Utils.removeEvent(c,"touchcancel",E,!1),Seadragon.Utils.removeEvent(c,"gesturestart",F,!1),Seadragon.Utils.removeEvent(c,"gesturechange",z,!1),Seadragon.Utils.removeEvent(c,"gestureend",A,!1),G(),K=!1,delete h[O])}}}})();if(!window.SIGNAL)window.SIGNAL="----seadragon----";Seadragon.ControlAnchor=function(){throw Error.invalidOperation();};Seadragon.ControlAnchor={NONE:0,TOP_LEFT:1,TOP_RIGHT:2,BOTTOM_RIGHT:3,BOTTOM_LEFT:4};Seadragon.ControlAnchor=Seadragon.ControlAnchor;
Seadragon.OverlayPlacement=function(){throw Error.invalidOperation();};Seadragon.OverlayPlacement={CENTER:0,TOP_LEFT:1,TOP:2,TOP_RIGHT:3,RIGHT:4,BOTTOM_RIGHT:5,BOTTOM:6,BOTTOM_LEFT:7,LEFT:8};Seadragon.OverlayPlacement=Seadragon.OverlayPlacement;Seadragon.NavControl=function(a){this._group=null;this._zooming=!1;this._lastZoomTime=this._zoomFactor=null;this._viewer=a;this.config=this._viewer.config;this.elmt=null;this.initialize()};
Seadragon.NavControl.prototype={initialize:function(){var a=Function.createDelegate(this,this._beginZoomingIn),b=Function.createDelegate(this,this._endZooming),c=Function.createDelegate(this,this._doSingleZoomIn),d=Function.createDelegate(this,this._beginZoomingOut),f=Function.createDelegate(this,this._doSingleZoomOut),e=Function.createDelegate(this,this._onHome),g=Function.createDelegate(this,this._onFullPage),h=this._viewer.config.navImages;a=new Seadragon.Button({config:this._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.ZoomIn"),
srcRest:this._resolveUrl(h.zoomIn.REST),srcGroup:this._resolveUrl(h.zoomIn.GROUP),srcHover:this._resolveUrl(h.zoomIn.HOVER),srcDown:this._resolveUrl(h.zoomIn.DOWN)},{onPress:a,onRelease:b,onClick:c,onEnter:a,onExit:b});b=new Seadragon.Button({config:this._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.ZoomOut"),srcRest:this._resolveUrl(h.zoomOut.REST),srcGroup:this._resolveUrl(h.zoomOut.GROUP),srcHover:this._resolveUrl(h.zoomOut.HOVER),srcDown:this._resolveUrl(h.zoomOut.DOWN)},{onPress:d,
onRelease:b,onClick:f,onEnter:d,onExit:b});e=new Seadragon.Button({config:this._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.Home"),srcRest:this._resolveUrl(h.home.REST),srcGroup:this._resolveUrl(h.home.GROUP),srcHover:this._resolveUrl(h.home.HOVER),srcDown:this._resolveUrl(h.home.DOWN)},{onRelease:e});g=new Seadragon.Button({config:this._viewer.config,tooltip:Seadragon.Strings.getString("Tooltips.FullPage"),srcRest:this._resolveUrl(h.fullpage.REST),srcGroup:this._resolveUrl(h.fullpage.GROUP),
srcHover:this._resolveUrl(h.fullpage.HOVER),srcDown:this._resolveUrl(h.fullpage.DOWN)},{onRelease:g});this._group=new Seadragon.ButtonGroup({config:this._viewer.config,buttons:[a,b,e,g]});this.elmt=this._group.get_element();this.elmt[SIGNAL]=!0;this._viewer.add_open(Function.createDelegate(this,this._lightUp))},dispose:function(){},get_events:function(){return this._events},set_events:function(a){this._events=a},_resolveUrl:function(a){return String.format("{1}",this._viewer.get_prefixUrl(),a)},_beginZoomingIn:function(){this._lastZoomTime=
(new Date).getTime();this._zoomFactor=this.config.zoomPerSecond;this._zooming=!0;this._scheduleZoom()},_beginZoomingOut:function(){this._lastZoomTime=(new Date).getTime();this._zoomFactor=1/this.config.zoomPerSecond;this._zooming=!0;this._scheduleZoom()},_endZooming:function(){this._zooming=!1},_scheduleZoom:function(){window.setTimeout(Function.createDelegate(this,this._doZoom),10)},_doZoom:function(){if(this._zooming&&this._viewer.viewport){var a=(new Date).getTime();this._viewer.viewport.zoomBy(Math.pow(this._zoomFactor,
(a-this._lastZoomTime)/1E3));this._viewer.viewport.applyConstraints();this._lastZoomTime=a;this._scheduleZoom()}},_doSingleZoomIn:function(){if(this._viewer.viewport)this._zooming=!1,this._viewer.viewport.zoomBy(this.config.zoomPerClick/1),this._viewer.viewport.applyConstraints()},_doSingleZoomOut:function(){if(this._viewer.viewport)this._zooming=!1,this._viewer.viewport.zoomBy(1/this.config.zoomPerClick),this._viewer.viewport.applyConstraints()},_lightUp:function(){this._group.emulateEnter();this._group.emulateExit()},
_onHome:function(){this._viewer.viewport&&this._viewer.viewport.goHome()},_onFullPage:function(){this._viewer.setFullPage(!this._viewer.isFullPage());this._group.emulateExit();this._viewer.viewport&&this._viewer.viewport.applyConstraints()}};
Seadragon.Control=function(a,b,c){this.elmt=a;this.anchor=b;this.container=c;this.wrapper=Seadragon.Utils.makeNeutralElement("span");this.wrapper.style.display="inline-block";this.wrapper.appendChild(this.elmt);if(this.anchor==Seadragon.ControlAnchor.NONE)this.wrapper.style.width=this.wrapper.style.height="100%";this.anchor==Seadragon.ControlAnchor.TOP_RIGHT||this.anchor==Seadragon.ControlAnchor.BOTTOM_RIGHT?this.container.insertBefore(this.wrapper,this.container.firstChild):this.container.appendChild(this.wrapper)};
Seadragon.Control.prototype={destroy:function(){this.wrapper.removeChild(this.elmt);this.container.removeChild(this.wrapper)},isVisible:function(){return this.wrapper.style.display!="none"},setVisible:function(a){this.wrapper.style.display=a?"inline-block":"none"},setOpacity:function(a){this.elmt[SIGNAL]&&Seadragon.Utils.getBrowser()==Seadragon.Browser.IE?Seadragon.Utils.setElementOpacity(this.elmt,a,!0):Seadragon.Utils.setElementOpacity(this.wrapper,a,!0)}};
function SparseBitmap(a,b){var c=[];if(!SparseBitmap.bitsPerByte){SparseBitmap.bitsPerByte=[];for(var d=0;d<256;d++){for(var f=0,e=d;e!=0;)f++,e&=e-1;SparseBitmap.bitsPerByte[d]=f}}this.set=function(b,d){var e=b+d*a;c[e>>3]=c[e>>3]||0;c[e>>3]|=1<<(e&7)};this.clear=function(b,d){var e=b+d*a;c[e>>3]&=~(1<<(e&7))};this.setRange=function(a,b){var d=a>>3,e=a&7,f=Math.min(8-e,b);c[d]|=255>>8-f<<e;for(b-=f;b>=8;)c[++d]=255,b-=8;b>0&&(c[++d]|=255>>8-b)};this.intersect=function(){};this.isSet=function(b,d){var e=
b+d*a;return!!(c[e>>3]&1<<(e&7))};this.bitsNeeded=function(){for(var d=a*b,e=0;e<c.length;e++)c[e]&&(d-=SparseBitmap.bitsPerByte[c[e]]);return d};this.bits=function(){return c}}function sparseBitmapTest(){function a(a,b){a||Seadragon.Debug.error(b)}for(var b=new SparseBitmap(5,4),c=20,d=0;d<5;d++)for(var f=0;f<4;f++)a(b.bitsNeeded()==c--,b.bitsNeeded()+" != "+c),b.set(d,f),a(b.bitsNeeded()==c,b.bitsNeeded()+" != "+c)}
function Layer(a,b){var c=b.getNumTiles(a),d=new SparseBitmap(c.x,c.y),f=new SparseBitmap(c.x,c.y),e=[],g,h;this.pendingTiles=[];this.hasCoverage=function(){return!f.bitsNeeded()};this.clearLoading=function(a){a.loading=!1;d.clear(a.x,a.y)};this.setLoading=function(a){a.loading=!0;d.set(a.x,a.y)};this.setCoverage=function(a){f.set(a.x,a.y)};this.tilesNeeded=function(){return d.bitsNeeded()};this.getTiles=function(){return e};this.tilesForCoverage=function(){return f.bitsNeeded()};this.scoreTiles=
function(d){if(!g||!g.equals(d)){g=d;h=[];for(var f=0,k=0;k<c.y;k++)for(var j=0;j<c.x;j++){var n=e[f];if(n){if(n.loading)continue}else n=e[f]=new Seadragon.Tile(a,j,k,b.getTileBounds(a,j,k),b.tileExists(a,j,k),b.getTileUrl(a,j,k));var v=b.getTilePosition(a,j,k);n.position=v;n.distance=Math.pow(d.x-(v.x+b.tileSize/2),2)+Math.pow(d.y-(v.y+b.tileSize/2),2);h.push(n);f++}h.sort(function(a,b){return a.distance-b.distance})}};this.getNextBestTile=function(a){this.scoreTiles(a);return h.shift()};this.visible=
!1}
function LayerData(a){function b(){if(!g){b.lastCall=+new Date;a.viewport.update();var i=a.viewport.deltaPixelsFromPoints(c.getPixelRatio(0)).x,h=c.minLevel,k=65535,j;for(i=Math.min(c.maxLevel,Math.floor(Math.log(i/MIN_PIXEL_RATIO)/Math.log(2)));i>=h;i--){var n=f[i].tilesNeeded();if(n==0)break;n<k&&(j=i,k=n)}if(j!==void 0&&(h=f[j],j=a.viewport.getCenter().times(c.dimensions.x).divide(c.getLevelScaleInverse(j)),j=h.getNextBestTile(j)))h.setLoading(j),k=function(a){return function(c){a.image=c;c=f[a.level];
e.placeTile(a);var d=f[a.level-1];d&&d.hasCoverage()||c.tilesForCoverage()<=1?e.displayTile(a):c.pendingTiles.push(a);b()}}(j),d.loadImage(j.url,k)||h.clearLoading(j)}}for(var c=a.source,d=a.drawer._imageLoader,f=[],e,g,h=c.minLevel;h<=c.maxLevel;h++)f[h]=new Layer(h,c);this.onTileDisplayed=function(a){var b=f[a.level];b.setCoverage(a);if(b.hasCoverage()&&b.visible&&(f[a.level-1]&&e.setVisible(a.level-1,!1),(upperLayer=f[a.level+1])&&upperLayer.visible))if(a=upperLayer,a.pendingTiles.length>0)e.displayTiles(a.pendingTiles),
a.pendingTiles=[]};this.onViewportChanged=function(){b();if(!a.viewport)debugger;var d=a.viewport.deltaPixelsFromPoints(c.getPixelRatio(0)).x;d=Math.min(c.maxLevel,Math.floor(Math.log(d/MIN_PIXEL_RATIO)/Math.log(2)));for(var g=c.minLevel,h=!1,j=c.maxLevel;j>=g;j--){var n=f[j];j>d?visible=!1:h?visible=!1:(h=h||n.hasCoverage(),visible=!0);if(visible!=n.visible)n.visible=visible,e.setVisible(j,n.visible)}};this.setRenderer=function(a){e=a};this.getLayers=function(){return f};this.dispose=function(){g=
!0}}
function CompositingLayerRenderer(a,b){function c(b){b=!b;a.viewport.update();var c=a.viewport.getContainerSize().x*a.viewport.getZoom(),e=a.viewport.getBounds();l?(e.x=(e.x*-c).toFixed(10),e.y=(e.y*-c).toFixed(10),c=c.toFixed(10),g.style.webkitTransform="matrix3d("+c+",0,0,0,0,"+c+",0,0,0,0,"+c+",0,"+e.x+","+e.y+",0,1)"):g.style.MozTransform="translate("+-e.x+"px,"+-e.y+"px) scale("+c+","+c+")";c=1/d.dimensions.x;l?h.style.webkitTransform="scale3d("+c+","+c+", 1)":h.style.MozTransform="scale("+c+
","+c+")";l?g.style.webkitTransition=b?"-webkit-transform 0.5s ease":"":g.style.MozTransition=b?"-moz-transform 0.5s ease":""}var d=a.source,f=[],e=[],g,h,i,l=browser!=Seadragon.Browser.FIREFOX,k;this.displayTile=function(a){this.displayTiles([a])};this.displayTiles=function(a){k||(e=e.concat(a),i=i||setTimeout(function(){i=void 0;for(var a=0;a<e.length;a++){var c=e[a];c.image.addEventListener(l?"webkitTransitionEnd":"transitionend",function(a){return function(){b.onTileDisplayed(a)}}(c),!1);c.image.style.opacity=
1}e=[]},0))};this.placeTile=function(b){if(!k){var c=f[b.level].element,d=b.image.style;d.position="absolute";l?(d.webkitTransform="translate3d("+b.position.x+"px,"+b.position.y+"px,0px)",d.webkitTransition="opacity "+a.config.blendTime+"s linear",d.webkitTransitionDelay="0s"):(d.MozTransform="translate("+b.position.x+"px,"+b.position.y+"px)",d.MozTransition="opacity "+a.config.blendTime+"s linear",d.MozTransitionDelay="0s");d.opacity=0;c.appendChild(b.image)}};this.onViewportChanged=function(a){k||
(c(a),b.onViewportChanged())};this.setVisible=function(a,b){f[a].element.style.display=b?"block":"none"};this.dispose=function(){a._canvas.removeChild(g);k=!0};(function(){g=Seadragon.Utils.makeNeutralElement("div");g.id="root";g.style.position="absolute";h=Seadragon.Utils.makeNeutralElement("div");h.style.position="absolute";g.appendChild(h);for(var b=d.maxLevel,e=d.minLevel;e<=b;e++){var i=Seadragon.Utils.makeNeutralElement("div"),k=d.dimensions.divide(d.getLevelScaleInverse(e));k={x:d.dimensions.x/
Math.ceil(k.x),y:d.dimensions.y/Math.ceil(k.y)};var o=i.style;o.position="absolute";l?o.webkitTransform="scale3d("+k.x+","+k.y+",1.0)":o.MozTransform="scale("+k.x+","+k.y+")";o.display="none";h.appendChild(i);f[e]={element:i}}c(!0);a._canvas.appendChild(g)})();b.setRenderer(this)}
var histogram={},renderManager=new function(){function a(){d=!1;c=new Date;callbacks=f.slice(0);for(var a=0;a<callbacks.length;a++)try{callbacks[a](c)}catch(b){console.log("exception during render callback: ",b)}total=new Date-c;histogram[total]=(histogram[total]||0)+1}var b=1E3/60,c,d,f=[];this.addRenderCallback=function(a){f.push(a)};this.removeRenderCallback=function(a){for(var b=0;b<f.length;b++)if(a==f[b]){f.splice(b,1);break}};this.setNeedsRender=function(){if(!d){d=!0;var e=+new Date,f=c?f=
c+b:e;setTimeout(a,Math.max(f-e,0))}};this.renderNow=function(){a()}},animationManager=new function(){var a,b=[],c=[];this.addAnimation=function(a,b,e,g,h,i,l){c.push({object:a,property:b,update:i,targetValue:e,duration:g,tween:h,callback:l});renderManager.setNeedsRender()};this.linear=function(a,b,c){return(c-b)*a+b};renderManager.addRenderCallback(function(d){var f=c.slice(0),e;for(c=[];e=f.pop();){if(!e.startTime)e.startTime=d;var g=Math.max(0,Math.min((d-e.startTime)/e.duration,1)),h=e.object,
i=e.property;g<1?(h[i]=e.tween(g,h[i],e.targetValue),c.push(e)):(h[i]=e.targetValue,a=a||setTimeout(function(){a=void 0;for(var c=0;c<b.length;c++)try{b[c]()}catch(d){console.log("exception in animation callback",d)}b=[]},0),b.push(function(a){return function(){a.callback(a.object)}}(e)));try{e.update(h)}catch(l){console.log("exception in animation update",l)}}c.length>0&&renderManager.setNeedsRender()})};
function CanvasRenderer(a,b){function c(b){if(b.image){g.globalAlpha=b.opacity;var c=a.viewport.pixelFromPoint(b.bounds.getTopLeft(),!0),d=a.viewport.deltaPixelsFromPoints(b.bounds.getSize(),!0);g.drawImage(b.image,c.x,c.y,d.x,d.y);i&&g.strokeRect(c.x,c.y,d.x,d.y)}}function d(){if(!k){g.save();if(l){l=!1;for(var a=b.getLayers(),d=a.length;d-- >0;){var e=a[d];if(e.hasCoverage()&&e.visible){a=e.getTiles();for(d=0;d<a.length;d++)c(a[d]);break}}}for(d=0;d<h.length;d++)c(h[d]);h=[];g.restore()}}function f(){if(!a.viewport)debugger;
a.viewport.update();var b=a.viewport.getContainerSize();e.width=b.x;e.height=b.y;l=!0;renderManager.renderNow()}var e,g,h=[],i=!1,l,k;this.displayTile=function(a){this.displayTiles([a])};this.displayTiles=function(c){if(!k)for(var d=0;d<c.length;d++)animationManager.addAnimation(c[d],"opacity",1,a.config.blendTime*1E3,animationManager.linear,function(a){h.push(a)},function(a){b.onTileDisplayed(a)})};this.placeTile=function(a){a.opacity=0};this.onViewportChanged=function(a){k||(f(a),b.onViewportChanged())};
this.setVisible=function(){};this.dispose=function(){renderManager.removeRenderCallback(d);a._canvas.removeChild(e);k=!0;b.dispose()};renderManager.addRenderCallback(d);e=Seadragon.Utils.makeNeutralElement("canvas");e.style.position="absolute";g=e.getContext("2d");f(!0);a._canvas.appendChild(e);b.setRenderer(this)}
Seadragon.Viewer=function(a,b,c,d,f,e){this.config=new Seadragon.Config;this._prefixUrl=c?c:"";this._element=typeof a=="string"?document.getElementById(a):a;this._controls=d?d:[];this._customControls=[];this._overlays=f?f:[];this._overlayControls=e?e:[];this._prevContainerSize=this._fsBoundsDelta=this._docOverflow=this._bodyOverflow=this._bodyHeight=this._bodyWidth=this._controlsBL=this._controlsBR=this._controlsTR=this._controlsTL=this._canvas=this._container=null;this._lastOpenEndTime=this._lastOpenStartTime=
0;this._mouseInside=this._forceRedraw=this._animating=!1;this._xmlPath=b?b:void 0;this.profiler=this.viewport=this.drawer=this.source=null;this.initialize()};
Seadragon.Viewer.prototype={initialize:function(){this._observer=new Observer;this._container=Seadragon.Utils.makeNeutralElement("div");this._canvas=Seadragon.Utils.makeNeutralElement("div");this._controlsTL=Seadragon.Utils.makeNeutralElement("div");this._controlsTR=Seadragon.Utils.makeNeutralElement("div");this._controlsBR=Seadragon.Utils.makeNeutralElement("div");this._controlsBL=Seadragon.Utils.makeNeutralElement("div");var a=new Seadragon.MouseTracker(this._canvas,this.config.clickTimeThreshold,
this.config.clickDistThreshold),b=new Seadragon.MouseTracker(this._container,this.config.clickTimeThreshold,this.config.clickDistThreshold);this._bodyWidth=document.body.style.width;this._bodyHeight=document.body.style.height;this._bodyOverflow=document.body.style.overflow;this._docOverflow=document.documentElement.style.overflow;this._fsBoundsDelta=new Seadragon.Point(1,1);var c=this._canvas.style,d=this._container.style,f=this._controlsTL.style,e=this._controlsTR.style,g=this._controlsBR.style,
h=this._controlsBL.style;d.width="100%";d.height="100%";d.position="relative";d.left="0px";d.top="0px";d.textAlign="left";c.width="100%";c.height="100%";c.overflow="hidden";c.position="absolute";c.top="0px";c.left="0px";f.position=e.position=g.position=h.position="absolute";f.top=e.top="0px";f.left=h.left="0px";e.right=g.right="0px";h.bottom=g.bottom="0px";a.clickHandler=Function.createDelegate(this,this._onCanvasClick);a.dragHandler=Function.createDelegate(this,this._onCanvasDrag);a.releaseHandler=
Function.createDelegate(this,this._onCanvasRelease);a.scrollHandler=Function.createDelegate(this,this._onCanvasScroll);a.pinchZoomHandler=Function.createDelegate(this,this._onCanvasPinchZoom);a.setTracking(!0);b.enterHandler=Function.createDelegate(this,this._onContainerEnter);b.exitHandler=Function.createDelegate(this,this._onContainerExit);b.releaseHandler=Function.createDelegate(this,this._onContainerRelease);b.setTracking(!0);this._container.appendChild(this._canvas);this._container.appendChild(this._controlsTL);
this._container.appendChild(this._controlsTR);this._container.appendChild(this._controlsBR);this._container.appendChild(this._controlsBL);this.get_element().appendChild(this._container);this._xmlPath&&this.openDzi(this._xmlPath)},get_events:function(){return this._observer._getContext(this,!0).events},_raiseEvent:function(a,b){var c=this.get_events().getHandler(a);c&&(b||(b={}),c(this,b))},_beginControlsAutoHide:function(){if(this.config.autoHideControls)this._controlsShouldFade=!0,this._controlsFadeBeginTime=
(new Date).getTime()+this._controlsFadeDelay,window.setTimeout(Function.createDelegate(this,this._scheduleControlsFade),this._controlsFadeDelay)},_scheduleControlsFade:function(){window.setTimeout(Function.createDelegate(this,this._updateControlsFade),20)},_updateControlsFade:function(){if(this._controlsShouldFade){var a=1-((new Date).getTime()-this._controlsFadeBeginTime)/this._controlsFadeLength;a=Math.min(1,a);a=Math.max(0,a);for(var b=this._controls.length-1;b>=0;b--)this._controls[b].setOpacity(a);
a>0&&this._scheduleControlsFade()}},_onCanvasClick:function(a,b,c,d){if(this.viewport&&c)a=this.config.zoomPerClick,this.viewport.zoomBy(d?1/a:a,this.viewport.pointFromPixel(b,!0),!0),this.viewport.applyConstraints()},_onCanvasDrag:function(a,b,c){this.viewport&&this.viewport.panBy(this.viewport.deltaPointsFromPixels(c.negate()),!0)},_onCanvasRelease:function(a,b,c){c&&this.viewport&&this.viewport.applyConstraints()},_onCanvasScroll:function(a,b,c){this.viewport&&(this.viewport.zoomBy(Math.pow(this.config.zoomPerScroll,
c),this.viewport.pointFromPixel(b,!0)),this.viewport.applyConstraints())},_onCanvasPinchZoom:function(a,b,c){this.viewport&&(this.viewport.zoomBy(c,this.viewport.pointFromPixel(b,!0)),this.viewport.applyConstraints())},_onContainerExit:function(a,b,c){if(!c)this._mouseInside=!1,this._animating||this._beginControlsAutoHide()},_onContainerRelease:function(a,b,c,d){if(!d)this._mouseInside=!1,this._animating||this._beginControlsAutoHide()},_getControlIndex:function(a){for(var b=this._controls.length-
1;b>=0;b--)if(this._controls[b].elmt==a)return b;return-1},_abortControlsAutoHide:function(){this._controlsShouldFade=!1;for(var a=this._controls.length-1;a>=0;a--)this._controls[a].setOpacity(1)},_onContainerEnter:function(){this._mouseInside=!0;this._abortControlsAutoHide()},_onClose:function(){window.removeEventListener?window.removeEventListener("resize",this.__resizeHandler,!1):this.__resizeHandler&&window.detachEvent("onresize",this.__resizeHandler);this.drawer&&this.drawer.dispose();this._renderer&&
this._renderer.dispose();this._xmlPath=this._renderer=this._layerData=this.profiler=this.drawer=this.viewport=this.source=null},_beforeOpen:function(){this.source&&this._onClose();this._lastOpenStartTime=(new Date).getTime();window.setTimeout(Function.createDelegate(this,function(){this._lastOpenStartTime>this._lastOpenEndTime&&this._setMessage(Seadragon.Strings.getString("Messages.Loading"))}),2E3);return this._lastOpenStartTime},_setMessage:function(a){a=document.createTextNode(a);this._canvas.innerHTML=
"";this._canvas.appendChild(Seadragon.Utils.makeCenteredNode(a));a=a.parentNode.style;a.color="white";a.fontFamily="verdana";a.fontSize="13px";a.fontSizeAdjust="none";a.fontStyle="normal";a.fontStretch="normal";a.fontVariant="normal";a.fontWeight="normal";a.lineHeight="1em";a.textAlign="center";a.textDecoration="none"},_onViewportChanged:function(a){this._renderer.onViewportChanged(a)},onResize:function(){var a=Seadragon.Utils.getElementSize(this._container);if(!a.equals(this._prevContainerSize)){this.viewport.resize(a,
!0);if(this._renderer)this._renderer.onViewportChanged(!0);this._prevContainerSize=a;this._raiseEvent("resize");this._forceRedraw=!0}},_onOpen:function(a,b,c){this._lastOpenEndTime=(new Date).getTime();if(a<this._lastOpenStartTime)Seadragon.Debug.log("Ignoring out-of-date open."),this._raiseEvent("ignore");else if(b){this._canvas.innerHTML="";this._prevContainerSize=Seadragon.Utils.getElementSize(this._container);this.source=b;this.viewport=new Seadragon.Viewport(this._prevContainerSize,this.source.dimensions,
this.config);this.viewport.set_viewer(this);this.drawer=new Seadragon.Drawer(this.source,this.viewport,this._canvas);this.profiler=new Seadragon.Profiler;this._animating=!1;this._forceRedraw=!0;useHtml?this._scheduleUpdate(this._updateMulti):(this._layerData=new LayerData(this),this._renderer=useCompositing?new CompositingLayerRenderer(this,this._layerData):new CanvasRenderer(this,this._layerData),this._renderer.onViewportChanged(),this.__resizeHandler=Function.createDelegate(this,this.onResize),
window.addEventListener?window.addEventListener("resize",this.__resizeHandler,!1):window.attachEvent("onresize",this.__resizeHandler));for(a=0;a<this._overlayControls.length;a++)b=this._overlayControls[a],b.point!=null?this.drawer.addOverlay(b.id,new Seadragon.Point(b.point.X,b.point.Y),Seadragon.OverlayPlacement.TOP_LEFT):this.drawer.addOverlay(b.id,new Seadragon.Rect(b.rect.Point.X,b.rect.Point.Y,b.rect.Width,b.rect.Height),b.placement);this._raiseEvent("open")}else this._setMessage(c),this._raiseEvent("error")},
_scheduleUpdate:function(a,b){if(this._animating)return window.setTimeout(Function.createDelegate(this,a),1);var c=(new Date).getTime();c=Math.max(1,(b?b:c)+1E3/60-c);return window.setTimeout(Function.createDelegate(this,a),c)},_updateMulti:function(){if(this.source){var a=(new Date).getTime();this._updateOnce();this._scheduleUpdate(arguments.callee,a)}},_updateOnce:function(){if(this.source){this.profiler.beginUpdate();var a=Seadragon.Utils.getElementSize(this._container);if(!a.equals(this._prevContainerSize))this.viewport.resize(a,
!0),this._prevContainerSize=a,this._raiseEvent("resize"),this._forceRedraw=!0;a=this.viewport.update();!this._animating&&a&&(this._raiseEvent("animationstart"),this._abortControlsAutoHide());a?(this.drawer.update(),this._raiseEvent("animation")):this._forceRedraw||this.drawer.needsUpdate()?(this.drawer.update(),this._forceRedraw=!1):this.drawer.idle();this._animating&&!a&&(this._raiseEvent("animationfinish"),this._mouseInside||this._beginControlsAutoHide());this._animating=a;this.profiler.endUpdate()}},
getNavControl:function(){return this._navControl},get_element:function(){return this._element},get_xmlPath:function(){return this._xmlPath},set_xmlPath:function(a){this._xmlPath=a},get_debugMode:function(){return this.config.debugMode},set_debugMode:function(a){this.config.debugMode=a},get_animationTime:function(){return this.config.animationTime},set_animationTime:function(a){this.config.animationTime=a},get_blendTime:function(){return this.config.blendTime},set_blendTime:function(a){this.config.blendTime=
a},get_alwaysBlend:function(){return this.config.alwaysBlend},set_alwaysBlend:function(a){this.config.alwaysBlend=a},get_autoHideControls:function(){return this.config.autoHideControls},set_autoHideControls:function(a){this.config.autoHideControls=a},get_immediateRender:function(){return this.config.immediateRender},set_immediateRender:function(a){this.config.immediateRender=a},get_wrapHorizontal:function(){return this.config.wrapHorizontal},set_wrapHorizontal:function(a){this.config.wrapHorizontal=
a},get_wrapVertical:function(){return this.config.wrapVertical},set_wrapVertical:function(a){this.config.wrapVertical=a},get_minZoomImageRatio:function(){return this.config.minZoomImageRatio},set_minZoomImageRatio:function(a){this.config.minZoomImageRatio=a},get_maxZoomPixelRatio:function(){return this.config.maxZoomPixelRatio},set_maxZoomPixelRatio:function(a){this.config.maxZoomPixelRatio=a},get_visibilityRatio:function(){return this.config.visibilityRatio},set_visibilityRatio:function(a){this.config.visibilityRatio=
a},get_springStiffness:function(){return this.config.springStiffness},set_springStiffness:function(a){this.config.springStiffness=a},get_imageLoaderLimit:function(){return this.config.imageLoaderLimit},set_imageLoaderLimit:function(a){this.config.imageLoaderLimit=a},get_clickTimeThreshold:function(){return this.config.clickTimeThreshold},set_clickTimeThreshold:function(a){this.config.clickTimeThreshold=a},get_clickDistThreshold:function(){return this.config.clickDistThreshold},set_clickDistThreshold:function(a){this.config.clickDistThreshold=
a},get_zoomPerClick:function(){return this.config.zoomPerClick},set_zoomPerClick:function(a){this.config.zoomPerClick=a},get_zoomPerSecond:function(){return this.config.zoomPerSecond},set_zoomPerSecond:function(a){this.config.zoomPerSecond=a},get_zoomPerScroll:function(){return this.config.zoomPerScroll},set_zoomPerScroll:function(a){this.config.zoomPerScroll=a},get_maxImageCacheCount:function(){return this.config.maxImageCacheCount},set_maxImageCacheCount:function(a){this.config.maxImageCacheCount=
a},get_showNavigationControl:function(){return this.config.showNavigationControl},set_showNavigationControl:function(a){this.config.showNavigationControl=a},get_minPixelRatio:function(){return this.config.minPixelRatio},set_minPixelRatio:function(a){this.config.minPixelRatio=a},get_mouseNavEnabled:function(){return this.config.mouseNavEnabled},set_mouseNavEnabled:function(a){this.config.mouseNavEnabled=a},get_controls:function(){return this._customControls},set_controls:function(a){this._customControls=
a},get_overlays:function(){return this._overlayControls},set_overlays:function(a){this._overlayControls=a},get_prefixUrl:function(){return this._prefixUrl},set_prefixUrl:function(a){this._prefixUrl=a},add_open:function(a){this.get_events().addHandler("open",a)},remove_open:function(a){this.get_events().removeHandler("open",a)},add_error:function(a){this.get_events().addHandler("error",a)},remove_error:function(a){this.get_events().removeHandler("error",a)},add_ignore:function(a){this.get_events().addHandler("ignore",
a)},remove_ignore:function(a){this.get_events().removeHandler("ignore",a)},add_resize:function(a){this.get_events().addHandler("resize",a)},remove_resize:function(a){this.get_events().removeHandler("resize",a)},add_animationstart:function(a){this.get_events().addHandler("animationstart",a)},remove_animationstart:function(a){this.get_events().removeHandler("animationstart",a)},add_animation:function(a){this.get_events().addHandler("animation",a)},remove_animation:function(a){this.get_events().removeHandler("animation",
a)},add_animationfinish:function(a){this.get_events().addHandler("animationfinish",a)},remove_animationfinish:function(a){this.get_events().removeHandler("animationfinish",a)},addControl:function(a,b){a=Seadragon.Utils.getElement(a);if(!(this._getControlIndex(a)>=0)){var c=null;switch(b){case Seadragon.ControlAnchor.TOP_RIGHT:c=this._controlsTR;a.style.position="relative";break;case Seadragon.ControlAnchor.BOTTOM_RIGHT:c=this._controlsBR;a.style.position="relative";break;case Seadragon.ControlAnchor.BOTTOM_LEFT:c=
this._controlsBL;a.style.position="relative";break;case Seadragon.ControlAnchor.TOP_LEFT:c=this._controlsTL;a.style.position="relative";break;default:c=this._container,a.style.position="absolute"}this._controls.push(new Seadragon.Control(a,b,c));a.style.display="inline-block"}},isOpen:function(){return!!this.source},openDzi:function(a,b){var c=this._beforeOpen();Seadragon.DziTileSourceHelper.createFromXml(a,b,Seadragon.Utils.createCallback(null,Function.createDelegate(this,this._onOpen),c))},openTileSource:function(a){var b=
beforeOpen();window.setTimeout(Function.createDelegate(this,function(){onOpen(b,a)}),1)},close:function(){this.source&&this._onClose()},destroy:function(){this.close();this.get_element().removeChild(this._container);this._container=this._canvas=this._observer=this._customControls=this._controlsTL=this._controlsTR=this._controlsBR=this._controlsBL=null},removeControl:function(a){a=Seadragon.Utils.getElement(a);a=this._getControlIndex(a);a>=0&&(this._controls[a].destroy(),this._controls.splice(a,1))},
clearControls:function(){for(;this._controls.length>0;)this._controls.pop().destroy()},isDashboardEnabled:function(){for(var a=this._controls.length-1;a>=0;a--)if(this._controls[a].isVisible())return!0;return!1},isFullPage:function(){return this._container.parentNode==document.body},isMouseNavEnabled:function(){return this._innerTracker.isTracking()},isVisible:function(){return this._container.style.visibility!="hidden"},setDashboardEnabled:function(a){for(var b=this._controls.length-1;b>=0;b--)this._controls[b].setVisible(a)},
setFullPage:function(a){if(a!=this.isFullPage()){var b=document.body,c=b.style,d=document.documentElement.style,f=this._container.style,e=this._canvas.style;a?(bodyOverflow=c.overflow,docOverflow=d.overflow,c.overflow="hidden",d.overflow="hidden",bodyWidth=c.width,bodyHeight=c.height,c.width="100%",c.height="100%",e.backgroundColor="black",e.color="white",f.position="fixed",f.zIndex="99999999",b.appendChild(this._container),this._prevContainerSize=Seadragon.Utils.getWindowSize(),this._onContainerEnter()):
(c.overflow=bodyOverflow,d.overflow=docOverflow,c.width=bodyWidth,c.height=bodyHeight,e.backgroundColor="",e.color="",f.position="relative",f.zIndex="",this.get_element().appendChild(this._container),this._prevContainerSize=Seadragon.Utils.getElementSize(this.get_element()),this._onContainerExit());if(this.viewport)b=this.viewport.getBounds(),this.viewport.resize(this._prevContainerSize),c=this.viewport.getBounds(),a?this._fsBoundsDelta=new Seadragon.Point(c.width/b.width,c.height/b.height):(this.viewport.update(),
this.viewport.zoomBy(Math.max(this._fsBoundsDelta.x,this._fsBoundsDelta.y),null,!0)),this._forceRedraw=!0,this._raiseEvent("resize",this),this._updateOnce()}},setMouseNavEnabled:function(a){this._innerTracker.setTracking(a)},setVisible:function(a){this._container.style.visibility=a?"":"hidden"}};
Seadragon.Strings={Errors:{Failure:"Sorry, but Seadragon Ajax can't run on your browser!\nPlease try using IE 7 or Firefox 3.\n",Dzc:"Sorry, we don't support Deep Zoom Collections!",Dzi:"Hmm, this doesn't appear to be a valid Deep Zoom Image.",Xml:"Hmm, this doesn't appear to be a valid Deep Zoom Image.",Empty:"You asked us to open nothing, so we did just that.",ImageFormat:"Sorry, we don't support {0}-based Deep Zoom Images.",Security:"It looks like a security restriction stopped us from loading this Deep Zoom Image.",
Status:"This space unintentionally left blank ({0} {1}).",Unknown:"Whoops, something inexplicably went wrong. Sorry!"},Messages:{Loading:"Loading..."},Tooltips:{FullPage:"Toggle full page",Home:"Go home",ZoomIn:"Zoom in",ZoomOut:"Zoom out"},getString:function(a){for(var b=a.split("."),c=Seadragon.Strings,d=0;d<b.length;d++)c=c[b[d]]||{};typeof c!="string"&&(c="");var f=arguments;return c.replace(/\{\d+\}/g,function(a){a=parseInt(a.match(/\d+/),10)+1;return a<f.length?f[a]:""})},setString:function(a,
b){for(var c=a.split("."),d=Seadragon.Strings,f=0;f<c.length-1;f++)d[c[f]]||(d[c[f]]={}),d=d[c[f]];d[c[f]]=b}};Seadragon.Strings=Seadragon.Strings;Seadragon.Point=Seadragon.Point=function(a,b){this.x=typeof a=="number"?a:0;this.y=typeof b=="number"?b:0};
Seadragon.Point.prototype={plus:function(a){return new Seadragon.Point(this.x+a.x,this.y+a.y)},minus:function(a){return new Seadragon.Point(this.x-a.x,this.y-a.y)},times:function(a){return new Seadragon.Point(this.x*a,this.y*a)},divide:function(a){return new Seadragon.Point(this.x/a,this.y/a)},negate:function(){return new Seadragon.Point(-this.x,-this.y)},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},apply:function(a){return new Seadragon.Point(a(this.x),
a(this.y))},equals:function(a){return a instanceof Seadragon.Point&&this.x===a.x&&this.y===a.y},toString:function(){return"("+this.x+","+this.y+")"}};Seadragon.Profiler=function(){this._midUpdate=!1;this._numUpdates=0;this._lastEndTime=this._lastBeginTime=null;this._minUpdateTime=Infinity;this._maxUpdateTime=this._avgUpdateTime=0;this._minIdleTime=Infinity;this._maxIdleTime=this._avgIdleTime=0};
Seadragon.Profiler.prototype={getAvgUpdateTime:function(){return this._avgUpdateTime},getMinUpdateTime:function(){return this._minUpdateTime},getMaxUpdateTime:function(){return this._maxUpdateTime},getAvgIdleTime:function(){return this._avgIdleTime},getMinIdleTime:function(){return this._minIdleTime},getMaxIdleTime:function(){return this._maxIdleTime},isMidUpdate:function(){return this._midUpdate},getNumUpdates:function(){return this._numUpdates},beginUpdate:function(){this._midUpdate&&this.endUpdate();
this._midUpdate=!0;this._lastBeginTime=(new Date).getTime();if(!(this._numUpdates<1)){var a=this._lastBeginTime-this._lastEndTime;this._avgIdleTime=(this._avgIdleTime*(this._numUpdates-1)+a)/this._numUpdates;if(a<this._minIdleTime)this._minIdleTime=a;if(a>this._maxIdleTime)this._maxIdleTime=a}},endUpdate:function(){if(this._midUpdate){this._lastEndTime=(new Date).getTime();this._midUpdate=!1;var a=this._lastEndTime-this._lastBeginTime;this._numUpdates++;this._avgUpdateTime=(this._avgUpdateTime*(this._numUpdates-
1)+a)/this._numUpdates;if(a<this._minUpdateTime)this._minUpdateTime=a;if(a>this._maxUpdateTime)this._maxUpdateTime=a}},clearProfile:function(){this._midUpdate=!1;this._numUpdates=0;this._lastEndTime=this._lastBeginTime=null;this._minUpdateTime=Infinity;this._maxUpdateTime=this._avgUpdateTime=0;this._minIdleTime=Infinity;this._maxIdleTime=this._avgIdleTime=0}};Seadragon.Job=function(a,b){this._timeout=this._image=null;this._src=a;this._callback=b;this.TIMEOUT=5E3};
Seadragon.Job.prototype={_finish:function(a){this._image.onload=null;this._image.onabort=null;this._image.onerror=null;this._timeout&&window.clearTimeout(this._timeout);var b=this._image,c=this._callback;window.setTimeout(function(){c(this._src,a?b:null)},1)},_onloadHandler:function(){this._finish(!0)},_onerrorHandler:function(){this._finish(!1)},start:function(){this._image=new Image;this._image.onload=Function.createDelegate(this,this._onloadHandler);this._image.onabort=Function.createDelegate(this,
this._onerrorHandler);this._image.onerror=Function.createDelegate(this,this._onerrorHandler);this._timeout=window.setTimeout(Function.createDelegate(this,this._onerrorHandler),this.TIMEOUT);this._image.src=this._src}};Seadragon.ImageLoader=function(a){this._downloading=0;this.imageLoaderLimit=a};
Seadragon.ImageLoader.prototype={_onComplete:function(a,b,c){this._downloading--;if(typeof a=="function")try{a(c)}catch(d){Seadragon.Debug.error(d.name+" while executing "+b+" callback: "+d.message)}},loadImage:function(a,b){if(this._downloading>=this.imageLoaderLimit)return!1;var c=Seadragon.Utils.createCallback(null,Function.createDelegate(this,this._onComplete),b);c=new Seadragon.Job(a,c);this._downloading++;c.start();return!0}};
Seadragon.TileSource=function(a,b,c,d,f,e){this.aspectRatio=a/b;this.dimensions=new Seadragon.Point(a,b);this.minLevel=f?f:0;this.maxLevel=e?e:Math.ceil(Math.log(Math.max(a,b))/Math.log(2));this.tileSize=c?c:0;this.tileOverlap=d?d:0};
Seadragon.TileSource.prototype={getLevelScale:function(a){return 1/(1<<this.maxLevel-a)},getLevelScaleInverse:function(a){return 1<<this.maxLevel-a},getNumTiles:function(a){a=this.getLevelScale(a);return new Seadragon.Point(Math.ceil(a*this.dimensions.x/this.tileSize),Math.ceil(a*this.dimensions.y/this.tileSize))},getPixelRatio:function(a){a=this.dimensions.times(this.getLevelScale(a));return new Seadragon.Point(1/a.x,1/a.y)},getTileAtPoint:function(a,b){var c=b.times(this.dimensions.x).times(this.getLevelScale(a));
return new Seadragon.Point(Math.floor(c.x/this.tileSize),Math.floor(c.y/this.tileSize))},getTileBounds:function(a,b,c){var d=this.dimensions.times(this.getLevelScale(a));a=b===0?0:this.tileSize*b-this.tileOverlap;var f=c===0?0:this.tileSize*c-this.tileOverlap;b=this.tileSize+(b===0?1:2)*this.tileOverlap;c=this.tileSize+(c===0?1:2)*this.tileOverlap;b=Math.min(b,d.x-a);c=Math.min(c,d.y-f);d=1/d.x;return new Seadragon.Rect(a*d,f*d,b*d,c*d)},getTilePosition:function(a,b,c){return new Seadragon.Point(b===
0?0:this.tileSize*b-this.tileOverlap,c===0?0:this.tileSize*c-this.tileOverlap)},getTileUrl:function(){throw Error("Method not implemented.");},tileExists:function(a,b,c){var d=this.getNumTiles(a);return a>=this.minLevel&&a<=this.maxLevel&&b>=0&&c>=0&&b<d.x&&c<d.y}};Seadragon.DziError=function(a){Error.apply(this,arguments);this.message=a};Seadragon.DziError.prototype=Error();Seadragon.DziError.constructor=Seadragon.DziError;
Seadragon.DziTileSource=function(a,b,c,d,f,e,g){Seadragon.TileSource.call(this,a,b,c,d,null,null);this._levelRects={};this.tilesUrl=f;this.fileFormat=e;this.displayRects=g;this.initialize()};Seadragon.DziTileSource.prototype=new Seadragon.TileSource;Seadragon.DziTileSource.prototype.constructor=Seadragon.DziTileSource;
Seadragon.DziTileSource.prototype.initialize=function(){if(this.displayRects)for(var a=this.displayRects.length-1;a>=0;a--)for(var b=this.displayRects[a],c=b.minLevel;c<=b.maxLevel;c++)this._levelRects[c]||(this._levelRects[c]=[]),this._levelRects[c].push(b)};Seadragon.DziTileSource.prototype.getTileUrl=function(a,b,c){return[this.tilesUrl,a,"/",b,"_",c,".",this.fileFormat].join("")};
Seadragon.DziTileSource.prototype.tileExists=function(a,b,c){var d=this._levelRects[a];if(!d||!d.length)return!0;for(var f=d.length-1;f>=0;f--){var e=d[f];if(!(a<e.minLevel||a>e.maxLevel)){var g=this.getLevelScale(a),h=e.x*g,i=e.y*g,l=h+e.width*g;e=i+e.height*g;h=Math.floor(h/this.tileSize);i=Math.floor(i/this.tileSize);l=Math.ceil(l/this.tileSize);e=Math.ceil(e/this.tileSize);if(h<=b&&b<l&&i<=c&&c<e)return!0}}return!1};Seadragon._DziTileSourceHelper=function(){};
Seadragon._DziTileSourceHelper.prototype={createFromXml:function(a,b,c){function d(a,b){try{return a(b,k)}catch(c){if(e)return g=f.getError(c).message,Seadragon.Debug.error(g),null;else throw f.getError(c);}}var f=this,e=typeof c=="function",g=null;if(!a){this.error=Seadragon.Strings.getString("Errors.Empty");if(e)return window.setTimeout(function(){c(null,g)},1),null;throw new Seadragon.DziError(g);}var h=a.split("/"),i=h[h.length-1],l=i.lastIndexOf(".");l>-1&&(h[h.length-1]=i.slice(0,l));var k=
h.join("/")+"_files/";if(e){if(b){var j=Function.createDelegate(this,this.processXml);window.setTimeout(function(){var a=d(j,Seadragon.Utils.parseXml(b));c(a,g)},1)}else j=Function.createDelegate(this,this.processResponse),Seadragon.Utils.makeAjaxRequest(a,function(a){a=d(j,a);c(a,g)});return null}return b?d(Function.createDelegate(this,this.processXml),Seadragon.Utils.parseXml(b)):d(Function.createDelegate(this,this.processResponse),Seadragon.Utils.makeAjaxRequest(a))},processResponse:function(a,
b){if(a){if(a.status!==200&&a.status!==0){var c=a.status;throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.Status",c,c==404?"Not Found":a.statusText));}}else throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.Security"));c=null;a.responseXML&&a.responseXML.documentElement?c=a.responseXML:a.responseText&&(c=Seadragon.Utils.parseXml(a.responseText));return this.processXml(c,b)},processXml:function(a,b){if(!a||!a.documentElement)throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.Xml"));
var c=a.documentElement,d=c.tagName;if(d=="Image")try{return this.processDzi(c,b)}catch(f){throw c=Seadragon.Strings.getString("Errors.Dzi"),f instanceof Seadragon.DziError?f:new Seadragon.DziError(c);}else if(d=="Collection")throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.Dzc"));else if(d=="Error")return this.processError(c);throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.Dzi"));},processDzi:function(a,b){var c=a.getAttribute("Format");if(!Seadragon.Utils.imageFormatSupported(c))throw new Seadragon.DziError(Seadragon.Strings.getString("Errors.ImageFormat",
c.toUpperCase()));var d=a.getElementsByTagName("Size")[0],f=a.getElementsByTagName("DisplayRect"),e=parseInt(d.getAttribute("Width"),10);d=parseInt(d.getAttribute("Height"),10);for(var g=parseInt(a.getAttribute("TileSize"),10),h=parseInt(a.getAttribute("Overlap"),10),i=[],l=0;l<f.length;l++){var k=f[l],j=k.getElementsByTagName("Rect")[0];i.push(new Seadragon.DisplayRect(parseInt(j.getAttribute("X"),10),parseInt(j.getAttribute("Y"),10),parseInt(j.getAttribute("Width"),10),parseInt(j.getAttribute("Height"),
10),0,parseInt(k.getAttribute("MaxLevel"),10)))}return new Seadragon.DziTileSource(e,d,g,h,b,c,i)},processError:function(a){a=a.getElementsByTagName("Message")[0].firstChild.nodeValue;throw new Seadragon.DziError(a);},getError:function(a){a instanceof Seadragon.DziError||(Seadragon.Debug.error(a.name+" while creating DZI from XML: "+a.message),a=new Seadragon.DziError(Seadragon.Strings.getString("Errors.Unknown")));return a}};Seadragon.DziTileSourceHelper=new Seadragon._DziTileSourceHelper;
Seadragon.ButtonState=function(){throw Error.invalidOperation();};Seadragon.ButtonState={REST:0,GROUP:1,HOVER:2,DOWN:3};Seadragon.Button=function(a,b){this._tooltip=a.tooltip;this._srcRest=a.srcRest;this._srcGroup=a.srcGroup;this._srcHover=a.srcHover;this._srcDown=a.srcDown;this._button=a.button;this.config=a.config;this.initialize(b)};
Seadragon.Button.prototype={initialize:function(a){this._observer=new Observer;a.onPress!=void 0&&this.add_onPress(a.onPress);a.onRelease!=void 0&&this.add_onRelease(a.onRelease);a.onClick!=void 0&&this.add_onClick(a.onClick);a.onEnter!=void 0&&this.add_onEnter(a.onEnter);a.onExit!=void 0&&this.add_onExit(a.onExit);this._button=Seadragon.Utils.makeNeutralElement("span");this._currentState=Seadragon.ButtonState.GROUP;this._tracker=new Seadragon.MouseTracker(this._button,this.config.clickTimeThreshold,
this.config.clickDistThreshold);this._imgRest=Seadragon.Utils.makeTransparentImage(this._srcRest);this._imgGroup=Seadragon.Utils.makeTransparentImage(this._srcGroup);this._imgHover=Seadragon.Utils.makeTransparentImage(this._srcHover);this._imgDown=Seadragon.Utils.makeTransparentImage(this._srcDown);this._fadeDelay=0;this._fadeLength=2E3;this._fadeBeginTime=null;this._shouldFade=!1;this._button.style.display="inline-block";this._button.style.position="relative";this._button.title=this._tooltip;this._button.appendChild(this._imgRest);
this._button.appendChild(this._imgGroup);this._button.appendChild(this._imgHover);this._button.appendChild(this._imgDown);a=this._imgGroup.style;var b=this._imgHover.style,c=this._imgDown.style;a.position=b.position=c.position="absolute";a.top=b.top=c.top="0px";a.left=b.left=c.left="0px";b.visibility=c.visibility="hidden";if(Seadragon.Utils.getBrowser()==Seadragon.Browser.FIREFOX&&Seadragon.Utils.getBrowserVersion()<3)a.top=b.top=c.top="";this._tracker.enterHandler=Function.createDelegate(this,this._enterHandler);
this._tracker.exitHandler=Function.createDelegate(this,this._exitHandler);this._tracker.pressHandler=Function.createDelegate(this,this._pressHandler);this._tracker.releaseHandler=Function.createDelegate(this,this._releaseHandler);this._tracker.clickHandler=Function.createDelegate(this,this._clickHandler);this._tracker.setTracking(!0);this._outTo(Seadragon.ButtonState.REST)},dispose:function(){},_scheduleFade:function(){window.setTimeout(Function.createDelegate(this,this._updateFade),20)},_updateFade:function(){if(this._shouldFade){var a=
1-((new Date).getTime()-this._fadeBeginTime)/this._fadeLength;a=Math.min(1,a);a=Math.max(0,a);Seadragon.Utils.setElementOpacity(this._imgGroup,a,!0);a>0&&this._scheduleFade()}},_beginFading:function(){this._shouldFade=!0;this._fadeBeginTime=(new Date).getTime()+this._fadeDelay;window.setTimeout(Function.createDelegate(this,this._scheduleFade),this._fadeDelay)},_stopFading:function(){this._shouldFade=!1;Seadragon.Utils.setElementOpacity(this._imgGroup,1,!0)},_inTo:function(a){if(a>=Seadragon.ButtonState.GROUP&&
this._currentState==Seadragon.ButtonState.REST)this._stopFading(),this._currentState=Seadragon.ButtonState.GROUP;if(a>=Seadragon.ButtonState.HOVER&&this._currentState==Seadragon.ButtonState.GROUP)this._imgHover.style.visibility="",this._currentState=Seadragon.ButtonState.HOVER;if(a>=Seadragon.ButtonState.DOWN&&this._currentState==Seadragon.ButtonState.HOVER)this._imgDown.style.visibility="",this._currentState=Seadragon.ButtonState.DOWN},_outTo:function(a){if(a<=Seadragon.ButtonState.HOVER&&this._currentState==
Seadragon.ButtonState.DOWN)this._imgDown.style.visibility="hidden",this._currentState=Seadragon.ButtonState.HOVER;if(a<=Seadragon.ButtonState.GROUP&&this._currentState==Seadragon.ButtonState.HOVER)this._imgHover.style.visibility="hidden",this._currentState=Seadragon.ButtonState.GROUP;if(this._newState<=Seadragon.ButtonState.REST&&this._currentState==Seadragon.ButtonState.GROUP)this._beginFading(),this._currentState=Seadragon.ButtonState.REST},_enterHandler:function(a,b,c,d){c?(this._inTo(Seadragon.ButtonState.DOWN),
this._raiseEvent("onEnter",this)):d||this._inTo(Seadragon.ButtonState.HOVER)},_exitHandler:function(a,b,c){this._outTo(Seadragon.ButtonState.GROUP);c&&this._raiseEvent("onExit",this)},_pressHandler:function(){this._inTo(Seadragon.ButtonState.DOWN);this._raiseEvent("onPress",this)},_releaseHandler:function(a,b,c,d){c&&d?(this._outTo(Seadragon.ButtonState.HOVER),this._raiseEvent("onRelease",this)):c?this._outTo(Seadragon.ButtonState.GROUP):this._inTo(Seadragon.ButtonState.HOVER)},_clickHandler:function(a,
b,c){c&&this._raiseEvent("onClick",this)},get_events:function(){return this._observer._getContext(this,!0).events},_raiseEvent:function(a,b){var c=this.get_events().getHandler(a);c&&(b||(b={}),c(this,b))},get_element:function(){return this._button},get_tooltip:function(){return this._tooltip},set_tooltip:function(a){this._tooltip=a},get_config:function(){return this.config},set_config:function(a){this.config=a},get_srcRest:function(){return this._srcRest},set_srcRest:function(a){this._srcRest=a},
get_srcGroup:function(){return this._srcGroup},set_srcGroup:function(a){this._srcGroup=a},get_srcHover:function(){return this._srcHover},set_srcHover:function(a){this._srcHover=a},get_srcDown:function(){return this._srcDown},set_srcDown:function(a){this._srcDown=a},add_onPress:function(a){this.get_events().addHandler("onPress",a)},remove_onPress:function(a){this.get_events().removeHandler("onPress",a)},add_onClick:function(a){this.get_events().addHandler("onClick",a)},remove_onClick:function(a){this.get_events().removeHandler("onClick",
a)},add_onEnter:function(a){this.get_events().addHandler("onEnter",a)},remove_onEnter:function(a){this.get_events().removeHandler("onEnter",a)},add_onRelease:function(a){this.get_events().addHandler("onRelease",a)},remove_onRelease:function(a){this.get_events().removeHandler("onRelease",a)},add_onExit:function(a){this.get_events().addHandler("onExit",a)},remove_onExit:function(a){this.get_events().removeHandler("onExit",a)},notifyGroupEnter:function(){this._inTo(Seadragon.ButtonState.GROUP)},notifyGroupExit:function(){this._outTo(Seadragon.ButtonState.REST)}};
Seadragon.ButtonGroup=function(a){this._buttons=a.buttons;this._group=a.group;this.config=a.config;this.initialize()};
Seadragon.ButtonGroup.prototype={initialize:function(){this._group=Seadragon.Utils.makeNeutralElement("span");var a=this._buttons.concat([]),b=new Seadragon.MouseTracker(this._group,this.config.clickTimeThreshold,this.config.clickDistThreshold);this._group.style.display="inline-block";for(var c=0;c<a.length;c++)this._group.appendChild(a[c].get_element());b.enterHandler=Function.createDelegate(this,this._enterHandler);b.exitHandler=Function.createDelegate(this,this._exitHandler);b.releaseHandler=Function.createDelegate(this,
this._releaseHandler);b.setTracking(!0)},dispose:function(){},get_buttons:function(){return this._buttons},set_buttons:function(a){this._buttons=a},get_element:function(){return this._group},get_config:function(){return this.config},set_config:function(a){this.config=a},_enterHandler:function(){for(var a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupEnter()},_exitHandler:function(a,b,c){if(!c)for(a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupExit()},_releaseHandler:function(a,
b,c,d){if(!d)for(a=0;a<this._buttons.length;a++)this._buttons[a].notifyGroupExit()},emulateEnter:function(){this._enterHandler()},emulateExit:function(){this._exitHandler()}};
Seadragon.Config=function(){this.debugMode=!0;this.animationTime=1.5;this.blendTime=0.25;this.alwaysBlend=!1;this.autoHideControls=!0;this.wrapVertical=this.wrapHorizontal=this.immediateRender=!1;this.cropHome=!0;this.maxZoomPixelRatio=this.minZoomImageRatio=1;this.visibilityRatio=0.5;this.springStiffness=5;this.imageLoaderLimit=2;this.clickTimeThreshold=200;this.clickDistThreshold=5;this.zoomPerClick=2;this.zoomPerScroll=1.2;this.zoomPerSecond=2;this.showNavigationControl=!0;this.maxImageCacheCount=
100;this.minPixelRatio=0.5;this.mouseNavEnabled=!0;this.navImages={zoomIn:{REST:"/images/seadragon/zoomin_rest.png",GROUP:"/images/seadragon/zoomin_grouphover.png",HOVER:"/images/seadragon/zoomin_hover.png",DOWN:"/images/seadragon/zoomin_pressed.png"},zoomOut:{REST:"/images/seadragon/zoomout_rest.png",GROUP:"/images/seadragon/zoomout_grouphover.png",HOVER:"/images/seadragon/zoomout_hover.png",DOWN:"/images/seadragon/zoomout_pressed.png"},home:{REST:"/images/seadragon/home_rest.png",GROUP:"/images/seadragon/home_grouphover.png",
HOVER:"/images/seadragon/home_hover.png",DOWN:"/images/seadragon/home_pressed.png"},fullpage:{REST:"/images/seadragon/fullpage_rest.png",GROUP:"/images/seadragon/fullpage_grouphover.png",HOVER:"/images/seadragon/fullpage_hover.png",DOWN:"/images/seadragon/fullpage_pressed.png"}}};Seadragon.Rect=function(a,b,c,d){this.x=typeof a=="number"?a:0;this.y=typeof b=="number"?b:0;this.width=typeof c=="number"?c:0;this.height=typeof d=="number"?d:0};
Seadragon.Rect.prototype={getAspectRatio:function(){return this.width/this.height},getTopLeft:function(){return new Seadragon.Point(this.x,this.y)},getBottomRight:function(){return new Seadragon.Point(this.x+this.width,this.y+this.height)},getCenter:function(){return new Seadragon.Point(this.x+this.width/2,this.y+this.height/2)},getSize:function(){return new Seadragon.Point(this.width,this.height)},equals:function(a){return a instanceof Seadragon.Rect&&this.x===a.x&&this.y===a.y&&this.width===a.width&&
this.height===a.height},union:function(a){var b=Math.min(this.x,a.x),c=Math.min(this.y,a.y);return new Seadragon.Rect(b,c,Math.max(this.x+this.width,a.x+a.width)-b,Math.max(this.y+this.height,a.y+a.height)-c)},intersect:function(a){return new Seadragon.Rect(Math.max(this.x,a.x),Math.max(this.y,a.y),Math.min(this.width,a.width),Math.min(this.height,a.height))},toString:function(){return"["+this.x+","+this.y+","+this.width+"x"+this.height+"]"}};
Seadragon.DisplayRect=function(a,b,c,d,f,e){Seadragon.Rect.apply(this,[a,b,c,d]);this.minLevel=f;this.maxLevel=e};Seadragon.DisplayRect.prototype=new Seadragon.Rect;Seadragon.DisplayRect.prototype.constructor=Seadragon.DisplayRect;Seadragon.Spring=Seadragon.Spring=function(a,b){this._targetValue=this._startValue=this._currentValue=typeof a=="number"?a:0;this.config=b;this._targetTime=this._startTime=this._currentTime=(new Date).getTime()};
Seadragon.Spring.prototype={_transform:function(a){var b=this.config.springStiffness;return(1-Math.exp(-a*b))/(1-Math.exp(-b))},getCurrent:function(){return this._currentValue},getTarget:function(){return this._targetValue},resetTo:function(a){this._targetValue=a;this._targetTime=this._currentTime;this._startValue=this._targetValue;this._startTime=this._targetTime},springTo:function(a){this._startValue=this._currentValue;this._startTime=this._currentTime;this._targetValue=a;this._targetTime=this._startTime+
1E3*this.config.animationTime},shiftBy:function(a){this._startValue+=a;this._targetValue+=a},update:function(){this._currentTime=(new Date).getTime();this._currentValue=this._currentTime>=this._targetTime?this._targetValue:this._startValue+(this._targetValue-this._startValue)*this._transform((this._currentTime-this._startTime)/(this._targetTime-this._startTime))}};
var QUOTA=100,MIN_PIXEL_RATIO=0.5,browser=Seadragon.Utils.getBrowser(),browserVer=Seadragon.Utils.getBrowserVersion(),subpixelRenders=browser==Seadragon.Browser.FIREFOX||browser==Seadragon.Browser.OPERA||browser==Seadragon.Browser.SAFARI&&browserVer>=4||browser==Seadragon.Browser.CHROME&&browserVer>=2,useCompositing=browser==Seadragon.Browser.CHROME&&browserVer>=2,useCanvasRenderer=typeof document.createElement("canvas").getContext=="function"&&subpixelRenders&&!useCompositing,useHtml=!useCanvasRenderer&&
!useCompositing;Seadragon.Tile=function(a,b,c,d,f,e){this.level=a;this.x=b;this.y=c;this.bounds=d;this.exists=f;this.loading=this.loaded=!1;this.image=this.elmt=null;this.url=e;this.visibility=this.distance=this.opacity=this.blendStart=this.size=this.position=this.style=null;this.beingDrawn=!1;this.lastTouchTime=0};
Seadragon.Tile.prototype={dispose:function(){},toString:function(){return this.level+"/"+this.x+"_"+this.y},drawHTML:function(a){if(this.loaded){if(!this.elmt)this.elmt=Seadragon.Utils.makeNeutralElement("img"),this.elmt.src=this.url,this.style=this.elmt.style,this.style.position="absolute",this.style.msInterpolationMode="nearest-neighbor";var b=this.elmt,c=this.style,d=this.position.apply(Math.floor),f=this.size.apply(Math.ceil);b.parentNode!=a&&a.appendChild(b);c.left=d.x+"px";c.top=d.y+"px";c.width=
f.x+"px";c.height=f.y+"px";Seadragon.Utils.setElementOpacity(b,this.opacity)}else Seadragon.Debug.error("Attempting to draw tile "+this.toString()+" when it's not yet loaded.")},drawCanvas:function(a){if(this.loaded){var b=this.position,c=this.size;a.globalAlpha=this.opacity;a.drawImage(this.image,b.x,b.y,c.x,c.y)}else Seadragon.Debug.error("Attempting to draw tile "+this.toString()+" when it's not yet loaded.")},unload:function(){this.elmt&&this.elmt.parentNode&&this.elmt.parentNode.removeChild(this.elmt);
this.image=this.elmt=null;this.loading=this.loaded=!1}};Seadragon.Overlay=function(a,b,c){this.elmt=a;this.scales=b instanceof Seadragon.Rect;this.bounds=new Seadragon.Rect(b.x,b.y,b.width,b.height);this.placement=b instanceof Seadragon.Point?c:Seadragon.OverlayPlacement.TOP_LEFT;this.position=new Seadragon.Point(b.x,b.y);this.size=new Seadragon.Point(b.width,b.height);this.style=a.style};
Seadragon.Overlay.prototype={adjust:function(a,b){switch(this.placement){case Seadragon.OverlayPlacement.TOP_LEFT:break;case Seadragon.OverlayPlacement.TOP:a.x-=b.x/2;break;case Seadragon.OverlayPlacement.TOP_RIGHT:a.x-=b.x;break;case Seadragon.OverlayPlacement.RIGHT:a.x-=b.x;a.y-=b.y/2;break;case Seadragon.OverlayPlacement.BOTTOM_RIGHT:a.x-=b.x;a.y-=b.y;break;case Seadragon.OverlayPlacement.BOTTOM:a.x-=b.x/2;a.y-=b.y;break;case Seadragon.OverlayPlacement.BOTTOM_LEFT:a.y-=b.y;break;case Seadragon.OverlayPlacement.LEFT:a.y-=
b.y/2;break;default:a.x-=b.x/2,a.y-=b.y/2}},destroy:function(){var a=this.elmt,b=this.style;a.parentNode&&a.parentNode.removeChild(a);b.top="";b.left="";b.position="";if(this.scales)b.width="",b.height=""},drawHTML:function(a){var b=this.elmt,c=this.style,d=this.scales;b.parentNode!=a&&a.appendChild(b);if(!d)this.size=Seadragon.Utils.getElementSize(b);a=this.position;b=this.size;this.adjust(a,b);a=a.apply(Math.floor);b=b.apply(Math.ceil);c.left=a.x+"px";c.top=a.y+"px";c.position="absolute";if(d)c.width=
b.x+"px",c.height=b.y+"px"},update:function(a,b){this.scales=a instanceof Seadragon.Rect;this.bounds=new Seadragon.Rect(a.x,a.y,a.width,a.height);this.placement=a instanceof Seadragon.Point?b:Seadragon.OverlayPlacement.TOP_LEFT}};
Seadragon.Drawer=function(a,b,c){this._container=Seadragon.Utils.getElement(c);this._canvas=Seadragon.Utils.makeNeutralElement("div");this._context=null;this._viewport=b;this._source=a;this.config=this._viewport.config;this._imageLoader=new Seadragon.ImageLoader(this.config.imageLoaderLimit);this._profiler=new Seadragon.Profiler;this._minLevel=a.minLevel;this._maxLevel=a.maxLevel;this._tileSize=a.tileSize;this._tileOverlap=a.tileOverlap;this._normHeight=a.dimensions.y/a.dimensions.x;this._cacheNumTiles=
{};this._cachePixelRatios={};this._tilesMatrix={};this._tilesLoaded=[];this._coverage={};this._overlays=[];this._lastDrawn=[];this._lastResetTime=0;this._midUpdate=!1;this._updateAgain=!0;this.elmt=this._container;this._init()};
Seadragon.Drawer.prototype={dispose:function(){this._container.removeChild(this._canvas)},_init:function(){this._canvas.style.width="100%";this._canvas.style.height="100%";this._canvas.style.position="absolute";this._container.style.textAlign="left";this._container.appendChild(this._canvas)},_getNumTiles:function(a){this._cacheNumTiles[a]||(this._cacheNumTiles[a]=this._source.getNumTiles(a));return this._cacheNumTiles[a]},_getPixelRatio:function(a){this._cachePixelRatios[a]||(this._cachePixelRatios[a]=
this._source.getPixelRatio(a));return this._cachePixelRatios[a]},_getTile:function(a,b,c,d,f,e){this._tilesMatrix[a]||(this._tilesMatrix[a]={});this._tilesMatrix[a][b]||(this._tilesMatrix[a][b]={});if(!this._tilesMatrix[a][b][c]){var g=(f+b%f)%f,h=(e+c%e)%e,i=this._source.getTileBounds(a,g,h),l=this._source.tileExists(a,g,h),k=this._source.getTileUrl(a,g,h);i.x+=1*(b-g)/f;i.y+=this._normHeight*(c-h)/e;this._tilesMatrix[a][b][c]=new Seadragon.Tile(a,b,c,i,l,k)}a=this._tilesMatrix[a][b][c];a.lastTouchTime=
d;return a},_loadTile:function(a,b){a.loading=this._imageLoader.loadImage(a.url,Seadragon.Utils.createCallback(null,Function.createDelegate(this,this._onTileLoad),a,b))},_onTileLoad:function(a,b,c){a.loading=!1;if(this._midUpdate)Seadragon.Debug.error("Tile load callback in middle of drawing routine.");else if(c)if(b<this._lastResetTime)Seadragon.Debug.log("Ignoring tile "+a+" loaded before reset: "+a.url);else{a.loaded=!0;a.image=c;b=this._tilesLoaded.length;if(this._tilesLoaded.length>=QUOTA){c=
null;for(var d=-1,f=this._tilesLoaded.length-1;f>=0;f--){var e=this._tilesLoaded[f];if(!(e.level<=this._cutoff||e.beingDrawn))if(c){var g=e.lastTouchTime,h=c.lastTouchTime,i=e.level,l=c.level;if(g<h||g==h&&i>l)c=e,d=f}else c=e,d=f}c&&d>=0&&(c.unload(),b=d)}this._tilesLoaded[b]=a;this._updateAgain=!0}else Seadragon.Debug.log("Tile "+a+" failed to load: "+a.url),a.exists=!1},_clearTiles:function(){this._tilesMatrix={};this._tilesLoaded=[]},_providesCoverage:function(a,b,c){if(!this._coverage[a])return!1;
if(b===void 0||c===void 0){a=this._coverage[a];for(var d in a)if(a.hasOwnProperty(d))for(var f in b=a[d],b)if(b.hasOwnProperty(f)&&!b[f])return!1;return!0}return this._coverage[a][b]===void 0||this._coverage[a][b][c]===void 0||this._coverage[a][b][c]===!0},_isCovered:function(a,b,c){return b===void 0||c===void 0?this._providesCoverage(a+1):this._providesCoverage(a+1,2*b,2*c)&&this._providesCoverage(a+1,2*b,2*c+1)&&this._providesCoverage(a+1,2*b+1,2*c)&&this._providesCoverage(a+1,2*b+1,2*c+1)},_setCoverage:function(a,
b,c,d){this._coverage[a]?(this._coverage[a][b]||(this._coverage[a][b]={}),this._coverage[a][b][c]=d):Seadragon.Debug.error("Setting coverage for a tile before its level's coverage has been reset: "+a)},_resetCoverage:function(a){this._coverage[a]={}},_compareTiles:function(a,b){if(!a)return b;if(b.visibility>a.visibility)return b;else if(b.visibility==a.visibility&&b.distance<a.distance)return b;return a},_getOverlayIndex:function(a){for(var b=this._overlays.length-1;b>=0;b--)if(this._overlays[b].elmt==
a)return b;return-1},_updateActual:function(){this._updateAgain=!1;for(var a=this._canvas,b=this._container,c=this._lastDrawn;c.length>0;){var d=c.pop();d.beingDrawn=!1}this._viewport.getContainerSize();a.innerHTML="";var f=this._viewport.getBounds(!0),e=f.getTopLeft(),g=f.getBottomRight();if(this.config.wrapHorizontal||!(g.x<0||e.x>1))if(this.config.wrapVertical||!(g.y<0||e.y>this._normHeight)){var h=Math.abs,i=Math.floor,l=Math.log,k=Math.max,j=Math.min,n=this.config.alwaysBlend,v=1E3*this.config.blendTime,
y=this.config.immediateRender,o=this.config.minZoomDimension,E=this.config.wrapHorizontal,F=this.config.wrapVertical;if(!E)e.x=k(e.x,0),g.x=j(g.x,1);if(!F)e.y=k(e.y,0),g.y=j(g.y,this._normHeight);f=null;var z=!1,A=(new Date).getTime(),G=this._viewport.pixelFromPoint(this._viewport.getCenter());d=this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(0),!1).x;y=y?1:d;k=k(this._minLevel,i(l(o||64)/l(2)));o=this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(0),!0).x;i=j(this._maxLevel,
i(l(o/MIN_PIXEL_RATIO)/l(2)));for(k=j(k,i);i>=k;i--){l=!1;o=this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(i),!0).x;if(!z&&o>=MIN_PIXEL_RATIO||i==k)z=l=!0;else if(!z)continue;this._resetCoverage(i);o=j(1,(o-0.5)/0.5);d=this._viewport.deltaPixelsFromPoints(this._source.getPixelRatio(i),!1).x;var L=y/h(y-d),C=this._source.getTileAtPoint(i,e),u=this._source.getTileAtPoint(i,g);d=this._getNumTiles(i);var J=d.x,w=d.y;if(!E)u.x=j(u.x,J-1);if(!F)u.y=j(u.y,w-1);for(var s=C.x;s<=u.x;s++)for(var t=
C.y;t<=u.y;t++){d=this._getTile(i,s,t,A,J,w);var q=l;this._setCoverage(i,s,t,!1);if(d.exists&&(z&&!q&&(this._isCovered(i,s,t)?this._setCoverage(i,s,t,!0):q=!0),q)){var x=d.bounds.getTopLeft(),p=d.bounds.getSize();q=this._viewport.pixelFromPoint(x,!0);var r=this._viewport.deltaPixelsFromPoints(p,!0);this._tileOverlap||(r=r.plus(new Seadragon.Point(1,1)));x=this._viewport.pixelFromPoint(x,!1);p=this._viewport.deltaPixelsFromPoints(p,!1);p=x.plus(p.divide(2));p=G.distanceTo(p);d.position=q;d.size=r;
d.distance=p;d.visibility=L;if(d.loaded){if(!d.blendStart)d.blendStart=A;q=A-d.blendStart;r=j(1,q/v);n&&(r*=o);d.opacity=r;c.push(d);r==1?this._setCoverage(i,s,t,!0):q<v&&(updateAgain=!0)}else d.Loading||(f=this._compareTiles(f,d))}}if(this._providesCoverage(i))break}for(e=c.length-1;e>=0;e--)d=c[e],d.drawHTML(a),d.beingDrawn=!0;a=this._overlays.length;for(e=0;e<a;e++)c=this._overlays[e],g=c.bounds,c.position=this._viewport.pixelFromPoint(g.getTopLeft(),!0),c.size=this._viewport.deltaPixelsFromPoints(g.getSize(),
!0),c.drawHTML(b);if(f)this._loadTile(f,A),this._updateAgain=!0}},addOverlay:function(a,b,c){a=Seadragon.Utils.getElement(a);if(!(this._getOverlayIndex(a)>=0))this._overlays.push(new Seadragon.Overlay(a,b,c)),this._updateAgain=!0},updateOverlay:function(a,b,c){a=Seadragon.Utils.getElement(a);a=this._getOverlayIndex(a);if(a>=0)this._overlays[a].update(b,c),this._updateAgain=!0},removeOverlay:function(a){a=Seadragon.Utils.getElement(a);a=this._getOverlayIndex(a);if(a>=0)this._overlays[a].destroy(),
this._overlays.splice(a,1),this._updateAgain=!0},clearOverlays:function(){for(;this._overlays.length>0;)this._overlays.pop().destroy(),this._updateAgain=!0},needsUpdate:function(){return this._updateAgain},numTilesLoaded:function(){return this._tilesLoaded.length},reset:function(){this._clearTiles();this._lastResetTime=(new Date).getTime();this._updateAgain=!0},update:function(){this._profiler.beginUpdate();this._midUpdate=!0;this._updateActual();this._midUpdate=!1;this._profiler.endUpdate()},idle:function(){}};
Seadragon.Viewport=function(a,b,c){this.zoomPoint=null;this.config=c;this._containerSize=a;this._contentSize=b;this._contentAspect=b.x/b.y;this._contentHeight=b.y/b.x;this._centerSpringX=new Seadragon.Spring(0,this.config);this._centerSpringY=new Seadragon.Spring(0,this.config);this._zoomSpring=new Seadragon.Spring(1,this.config);this.config.cropHome?(a=this.getAspectRatio(),this._contentAspect>=a?(a/=this._contentAspect,this._homeBounds=new Seadragon.Rect((1-a)/2,0,a,this._contentHeight)):(a=this._contentAspect/
a,this._homeBounds=new Seadragon.Rect(0,(this._contentHeight-this._contentHeight*a)/2,1,this._contentHeight*a))):this._homeBounds=new Seadragon.Rect(0,0,1,this._contentHeight);this._viewer=null;this.goHome(!0,!0);this.update()};
Seadragon.Viewport.prototype={_getHomeZoom:function(){var a=this._contentAspect/this.getAspectRatio();return a>=1?1:a},_getMinZoom:function(){var a=this._getHomeZoom();return Math.min(this.config.minZoomImageRatio*a,a)},_getMaxZoom:function(){return Math.max(this._contentSize.x*this.config.maxZoomPixelRatio/this._containerSize.x,this._getHomeZoom())},getAspectRatio:function(){return this._containerSize.x/this._containerSize.y},getContainerSize:function(){return new Seadragon.Point(this._containerSize.x,
this._containerSize.y)},getBounds:function(a){var b=this.getCenter(a);a=1/this.getZoom(a);var c=a/this.getAspectRatio();return new Seadragon.Rect(b.x-a/2,b.y-c/2,a,c)},getCenter:function(a){var b=new Seadragon.Point(this._centerSpringX.getCurrent(),this._centerSpringY.getCurrent()),c=new Seadragon.Point(this._centerSpringX.getTarget(),this._centerSpringY.getTarget());if(a)return b;else if(!this.zoomPoint)return c;a=this.pixelFromPoint(this.zoomPoint,!0);var d=this.getZoom(),f=1/d,e=f/this.getAspectRatio();
b=new Seadragon.Rect(b.x-f/2,b.y-e/2,f,e);b=this.zoomPoint.minus(b.getTopLeft()).times(this._containerSize.x/b.width).minus(a).divide(this._containerSize.x*d);return c.plus(b)},getZoom:function(a){return a?this._zoomSpring.getCurrent():this._zoomSpring.getTarget()},applyConstraints:function(a){var b=this.getZoom(),c=Math.max(Math.min(b,this._getMaxZoom()),this._getMinZoom());b!=c&&this.zoomTo(c,this.zoomPoint,a);b=this.getBounds();var d=this.config.visibilityRatio;c=d*b.width;d*=b.height;var f=b.x+
b.width,e=1-b.x,g=b.y+b.height,h=this._contentHeight-b.y,i=0;this.config.wrapHorizontal||(f<c?i=c-f:e<c&&(i=e-c));c=0;this.config.wrapVertical||(g<d?c=d-g:h<d&&(c=h-d));if(i||c)b.x+=i,b.y+=c,this.fitBounds(b,a)},ensureVisible:function(a){this.applyConstraints(a)},fitBounds:function(a,b,c){var d=this.getAspectRatio(),f=a.getCenter(),e=new Seadragon.Rect(a.x,a.y,a.width,a.height);e.getAspectRatio()>=d?(e.height=a.width/d,e.y=f.y-e.height/2):(e.width=a.height*d,e.x=f.x-e.width/2);c?(this.panTo(f,b),
this.zoomTo(1/e.width,null,b)):(this.panTo(this.getCenter(!0),!0),this.zoomTo(this.getZoom(!0),null,!0),c=this.getBounds(),d=this.getZoom(),a=1/e.width,a==d||e.width==c.width?this.panTo(f,b):(f=c.getTopLeft().times(this._containerSize.x/c.width).minus(e.getTopLeft().times(this._containerSize.x/e.width)).divide(this._containerSize.x/c.width-this._containerSize.x/e.width),this.zoomTo(a,f,b)))},goHome:function(a,b){var c=this.getCenter();if(this.config.wrapHorizontal)c.x=(1+c.x%1)%1,this._centerSpringX.resetTo(c.x),
this._centerSpringX.update();if(this.config.wrapVertical)c.y=(this._contentHeight+c.y%this._contentHeight)%this._contentHeight,this._centerSpringY.resetTo(c.y),this._centerSpringY.update();this.fitBounds(this._homeBounds,a,b)},panBy:function(a,b){this.panTo((new Seadragon.Point(this._centerSpringX.getTarget(),this._centerSpringY.getTarget())).plus(a),b)},panTo:function(a,b){b?(this._centerSpringX.resetTo(a.x),this._centerSpringY.resetTo(a.y)):(this._centerSpringX.springTo(a.x),this._centerSpringY.springTo(a.y));
this._viewer&&this._viewer._onViewportChanged(b)},zoomBy:function(a,b,c){this.zoomTo(this._zoomSpring.getTarget()*a,b,c)},zoomTo:function(a,b,c){c?this._zoomSpring.resetTo(a):this._zoomSpring.springTo(a);this.zoomPoint=b instanceof Seadragon.Point?b:null;this._viewer&&this._viewer._onViewportChanged(c)},resize:function(a){this._containerSize=new Seadragon.Point(a.x,a.y)},update:function(){var a=this._centerSpringX.getCurrent(),b=this._centerSpringY.getCurrent(),c=this._zoomSpring.getCurrent();if(this.zoomPoint)var d=
this.pixelFromPoint(this.zoomPoint,!0);this._zoomSpring.update();this.zoomPoint&&this._zoomSpring.getCurrent()!=c?(d=this.deltaPointsFromPixels(this.pixelFromPoint(this.zoomPoint,!0).minus(d),!0),this._centerSpringX.shiftBy(d.x),this._centerSpringY.shiftBy(d.y)):this.zoomPoint=null;this._centerSpringX.update();this._centerSpringY.update();return this._centerSpringX.getCurrent()!=a||this._centerSpringY.getCurrent()!=b||this._zoomSpring.getCurrent()!=c},deltaPixelsFromPoints:function(a,b){return a.times(this._containerSize.x*
this.getZoom(b))},deltaPointsFromPixels:function(a,b){return a.divide(this._containerSize.x*this.getZoom(b))},pixelFromPoint:function(a,b){var c=this.getBounds(b);return a.minus(c.getTopLeft()).times(this._containerSize.x/c.width)},pointFromPixel:function(a,b){var c=this.getBounds(b);return a.divide(this._containerSize.x/c.width).plus(c.getTopLeft())},set_viewer:function(a){this._viewer=a}};window.Seadragon=Seadragon;

