-
-
Save gasi/e52f1c048261689331f4 to your computer and use it in GitHub Desktop.
Seadragon.com Viewer for content ID **h**
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| FILE ARCHIVED ON 0:36:48 Aug 2, 2014 AND RETRIEVED FROM THE | |
| INTERNET ARCHIVE ON 2:31:05 Feb 28, 2016. | |
| JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. | |
| ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. | |
| SECTION 108(a)(3)). | |
| */ | |
| /** | |
| * Zoom.it Embed (build 65069 on 2011-02-04) | |
| * Copyright (c) Microsoft Corporation. All rights reserved. | |
| * To learn more and create your own, visit: /web/20140802003648/http://zoom.it/ | |
| */ | |
| (function(h, r, g, N) { | |
| var l = "100%", | |
| p = 10, | |
| w = "absolute", | |
| u = "relative", | |
| o = "hidden", | |
| L = " while executing ", | |
| f = "function", | |
| D = "mousewheel", | |
| k = "px", | |
| C = "inline-block", | |
| F = "span", | |
| j = "0px", | |
| B = "none", | |
| s = "div", | |
| H = "fixed", | |
| J = "undefined", | |
| z = ",", | |
| n = "number", | |
| d = "", | |
| I = "string", | |
| b = null, | |
| a = true, | |
| t = .5, | |
| c = false; | |
| if (!h.Seadragon) h.Seadragon = {}; | |
| var v = h.Seadragon, | |
| i = v.Config; | |
| (function() { | |
| if (i) return; | |
| i = v.Config = { | |
| debugMode: c, | |
| animationTime: 1.5, | |
| blendTime: t, | |
| alwaysBlend: c, | |
| autoHideControls: a, | |
| constrainDuringPan: a, | |
| immediateRender: c, | |
| logarithmicZoom: a, | |
| wrapHorizontal: c, | |
| wrapVertical: c, | |
| wrapOverlays: c, | |
| transformOverlays: c, | |
| minZoomDimension: b, | |
| minZoomImageRatio: .8, | |
| maxZoomPixelRatio: 2, | |
| visibilityRatio: .8, | |
| springStiffness: 5, | |
| imageLoaderLimit: 2, | |
| clickTimeThreshold: 200, | |
| clickDistThreshold: 5, | |
| zoomPerClick: 2, | |
| zoomPerScroll: g.pow(2, 1 / 3), | |
| zoomPerSecond: 2, | |
| proxyUrl: b, | |
| imagePath: "img/" | |
| } | |
| })(); | |
| var x = v.Strings; | |
| (function() { | |
| var a = "Hmm, this doesn't appear to be a valid Deep Zoom Image."; | |
| if (x) return; | |
| x = v.Strings = { | |
| Errors: { | |
| Failure: "Sorry, but Seadragon Ajax can't run on your browser!\nPlease try using IE 8 or Firefox 3.\n", | |
| Dzc: "Sorry, we don't support Deep Zoom Collections!", | |
| Dzi: a, | |
| Xml: a, | |
| 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 (you can also use your mouse's scroll wheel)", | |
| ZoomOut: "Zoom out (you can also use your mouse's scroll wheel)" | |
| } | |
| }; | |
| x.getString = function(f) { | |
| for (var c = f.split("."), a = x, b = 0; b < c.length; b++) a = a[c[b]] || {}; | |
| if (typeof a != I) a = d; | |
| var e = arguments; | |
| return a.replace(/\{\d+\}/g, function(b) { | |
| var a = parseInt(b.match(/\d+/)) + 1; | |
| return a < e.length ? e[a] : d | |
| }) | |
| }; | |
| x.setString = function(e, d) { | |
| for (var c = e.split("."), b = x, a = 0; a < c.length - 1; a++) { | |
| if (!b[c[a]]) b[c[a]] = {}; | |
| b = b[c[a]] | |
| } | |
| b[c[a]] = d | |
| } | |
| })(); | |
| var q = function() { | |
| this.log = function(c, d) { | |
| var a = h.console || {}, | |
| b = i.debugMode; | |
| if (b && a.log) a.log(c); | |
| else b && d && alert(c) | |
| }; | |
| this.error = function(b, d) { | |
| var c = h.console || {}, | |
| a = i.debugMode; | |
| if (a && c.error) c.error(b); | |
| else a && alert(b); | |
| if (a) throw d || new Error(b) | |
| }; | |
| this.fail = function(a) { | |
| alert(x.getString("Errors.Failure")); | |
| throw new Error(a) | |
| } | |
| }; | |
| q = v.Debug = new q; | |
| var U = v.Profiler = function() { | |
| var d = this, | |
| o = d, | |
| f = c, | |
| e = 0, | |
| h = b, | |
| l = b, | |
| j = Infinity, | |
| g = 0, | |
| i = 0, | |
| n = Infinity, | |
| k = 0, | |
| m = 0; | |
| d.getAvgUpdateTime = function() { | |
| return g | |
| }; | |
| d.getMinUpdateTime = function() { | |
| return j | |
| }; | |
| d.getMaxUpdateTime = function() { | |
| return i | |
| }; | |
| d.getAvgIdleTime = function() { | |
| return k | |
| }; | |
| d.getMinIdleTime = function() { | |
| return n | |
| }; | |
| d.getMaxIdleTime = function() { | |
| return m | |
| }; | |
| d.isMidUpdate = function() { | |
| return f | |
| }; | |
| d.getNumUpdates = function() { | |
| return e | |
| }; | |
| d.beginUpdate = function() { | |
| f && o.endUpdate(); | |
| f = a; | |
| h = (new Date).getTime(); | |
| if (e < 1) return; | |
| var b = h - l; | |
| k = (k * (e - 1) + b) / e; | |
| if (b < n) n = b; | |
| if (b > m) m = b | |
| }; | |
| d.endUpdate = function() { | |
| if (!f) return; | |
| l = (new Date).getTime(); | |
| f = c; | |
| var a = l - h; | |
| e++; | |
| g = (g * (e - 1) + a) / e; | |
| if (a < j) j = a; | |
| if (a > i) i = a | |
| }; | |
| d.clearProfile = function() { | |
| f = c; | |
| e = 0; | |
| h = b; | |
| l = b; | |
| j = Infinity; | |
| g = 0; | |
| i = 0; | |
| n = Infinity; | |
| k = 0; | |
| m = 0 | |
| } | |
| }, | |
| m = v.Point; | |
| (function() { | |
| if (m) return; | |
| m = v.Point = function(a, b) { | |
| this.x = typeof a == n ? a : 0; | |
| this.y = typeof b == n ? b : 0 | |
| }; | |
| var a = m.prototype; | |
| a.plus = function(a) { | |
| return new m(this.x + a.x, this.y + a.y) | |
| }; | |
| a.minus = function(a) { | |
| return new m(this.x - a.x, this.y - a.y) | |
| }; | |
| a.times = function(a) { | |
| return new m(this.x * a, this.y * a) | |
| }; | |
| a.divide = function(a) { | |
| return new m(this.x / a, this.y / a) | |
| }; | |
| a.negate = function() { | |
| return new m(-this.x, -this.y) | |
| }; | |
| a.distanceTo = function(a) { | |
| return g.sqrt(g.pow(this.x - a.x, 2) + g.pow(this.y - a.y, 2)) | |
| }; | |
| a.apply = function(a) { | |
| return new m(a(this.x), a(this.y)) | |
| }; | |
| a.equals = function(a) { | |
| return a instanceof m && this.x === a.x && this.y === a.y | |
| }; | |
| a.toString = function() { | |
| return "(" + this.x + z + this.y + ")" | |
| } | |
| })(); | |
| var y = v.Rect; | |
| (function() { | |
| if (y) return; | |
| y = v.Rect = function(d, e, c, b) { | |
| var a = this; | |
| a.x = typeof d == n ? d : 0; | |
| a.y = typeof e == n ? e : 0; | |
| a.width = typeof c == n ? c : 0; | |
| a.height = typeof b == n ? b : 0 | |
| }; | |
| var a = y.prototype; | |
| a.getAspectRatio = function() { | |
| return this.width / this.height | |
| }; | |
| a.getTopLeft = function() { | |
| return new m(this.x, this.y) | |
| }; | |
| a.getBottomRight = function() { | |
| var a = this; | |
| return new m(a.x + a.width, a.y + a.height) | |
| }; | |
| a.getCenter = function() { | |
| var a = this; | |
| return new m(a.x + a.width / 2, a.y + a.height / 2) | |
| }; | |
| a.getSize = function() { | |
| return new m(this.width, this.height) | |
| }; | |
| a.equals = function(a) { | |
| var b = this; | |
| return a instanceof y && b.x === a.x && b.y === a.y && b.width === a.width && b.height === a.height | |
| }; | |
| a.toString = function() { | |
| var a = this; | |
| return "[" + a.x + z + a.y + z + a.width + "x" + a.height + "]" | |
| } | |
| })(); | |
| var Q = v.Spring = function(j) { | |
| var c = this, | |
| d = typeof j == n ? j : 0, | |
| e = d, | |
| b = d, | |
| a = (new Date).getTime(), | |
| h = a, | |
| f = a; | |
| function k(b) { | |
| var a = i.springStiffness; | |
| return (1 - g.exp(-b * a)) / (1 - g.exp(-a)) | |
| } | |
| c.getCurrent = function() { | |
| return d | |
| }; | |
| c.getTarget = function() { | |
| return b | |
| }; | |
| c.resetTo = function(c) { | |
| b = c; | |
| f = a; | |
| e = b; | |
| h = f | |
| }; | |
| c.springTo = function(c) { | |
| e = d; | |
| h = a; | |
| b = c; | |
| f = h + 1e3 * i.animationTime | |
| }; | |
| c.shiftBy = function(a) { | |
| e += a; | |
| b += a | |
| }; | |
| c.update = function() { | |
| a = (new Date).getTime(); | |
| d = a >= f ? b : e + (b - e) * k((a - h) / (f - h)) | |
| } | |
| }, | |
| A = v.Browser = { | |
| UNKNOWN: 0, | |
| IE: 1, | |
| FIREFOX: 2, | |
| SAFARI: 3, | |
| CHROME: 4, | |
| OPERA: 5 | |
| }, | |
| e = function() { | |
| var t = "DOMMouseScroll", | |
| l = this, | |
| o = l, | |
| x = ["Msxml2.XMLHTTP", "Msxml3.XMLHTTP", "Microsoft.XMLHTTP"], | |
| z = { | |
| bmp: c, | |
| jpeg: a, | |
| jpg: a, | |
| png: a, | |
| tif: c, | |
| wdp: c | |
| }, | |
| u = A.UNKNOWN, | |
| p = 0, | |
| v = c, | |
| y = {}; | |
| (function() { | |
| var d = navigator.appName, | |
| o = navigator.appVersion, | |
| a = navigator.userAgent; | |
| if (d == "Microsoft Internet Explorer" && !!h.attachEvent && !!h.ActiveXObject) { | |
| var i = a.indexOf("MSIE"); | |
| u = A.IE; | |
| p = parseFloat(a.substring(i + 5, a.indexOf(";", i))); | |
| var j = r.documentMode; | |
| if (typeof j !== J) p = j | |
| } else if (d == "Netscape" && !!h.addEventListener) { | |
| var g = a.indexOf("Firefox"), | |
| b = a.indexOf("Safari"), | |
| l = a.indexOf("Chrome"); | |
| if (g >= 0) { | |
| u = A.FIREFOX; | |
| p = parseFloat(a.substring(g + 8)) | |
| } else if (b >= 0) { | |
| var n = a.substring(0, b).lastIndexOf("/"); | |
| u = l >= 0 ? A.CHROME : A.SAFARI; | |
| p = parseFloat(a.substring(n + 1, b)) | |
| } | |
| } else if (d == "Opera" && !!h.opera && !!h.attachEvent) { | |
| u = A.OPERA; | |
| p = parseFloat(o) | |
| } | |
| for (var m = h.location.search.substring(1), k = m.split("&"), f = 0; f < k.length; f++) { | |
| var c = k[f], | |
| e = c.indexOf("="); | |
| if (e > 0) y[c.substring(0, e)] = decodeURIComponent(c.substring(e + 1)) | |
| } | |
| v = u == A.IE && p < 9 || u == A.CHROME && p < 2 | |
| })(); | |
| function w(a, b) { | |
| if (b && a != r.body) return r.body; | |
| else return a.offsetParent | |
| } | |
| l.getBrowser = function() { | |
| return u | |
| }; | |
| l.getBrowserVersion = function() { | |
| return p | |
| }; | |
| l.getElement = function(a) { | |
| if (typeof a == I) a = r.getElementById(a); | |
| return a | |
| }; | |
| l.getElementPosition = function(a) { | |
| var a = o.getElement(a), | |
| b = new m, | |
| c = o.getElementStyle(a).position == H, | |
| d = w(a, c); | |
| while (d) { | |
| b.x += a.offsetLeft; | |
| b.y += a.offsetTop; | |
| if (c) b = b.plus(o.getPageScroll()); | |
| a = d; | |
| c = o.getElementStyle(a).position == H; | |
| d = w(a, c) | |
| } | |
| return b | |
| }; | |
| l.getElementSize = function(a) { | |
| var a = o.getElement(a); | |
| return new m(a.clientWidth, a.clientHeight) | |
| }; | |
| l.getElementStyle = function(a) { | |
| var a = o.getElement(a); | |
| if (a.currentStyle) return a.currentStyle; | |
| else if (h.getComputedStyle) return h.getComputedStyle(a, d); | |
| else q.fail("Unknown element style, no known technique.") | |
| }; | |
| l.getEvent = function(a) { | |
| return a ? a : h.event | |
| }; | |
| l.getMousePosition = function(a) { | |
| var a = o.getEvent(a), | |
| b = new m; | |
| if (a.type == t && u == A.FIREFOX && p < 3) { | |
| b.x = a.screenX; | |
| b.y = a.screenY | |
| } else if (typeof a.pageX == n) { | |
| b.x = a.pageX; | |
| b.y = a.pageY | |
| } else if (typeof a.clientX == n) { | |
| b.x = a.clientX + r.body.scrollLeft + r.documentElement.scrollLeft; | |
| b.y = a.clientY + r.body.scrollTop + r.documentElement.scrollTop | |
| } else q.fail("Unknown event mouse position, no known technique."); | |
| return b | |
| }; | |
| l.getMouseScroll = function(b) { | |
| var b = o.getEvent(b), | |
| a = 0; | |
| if (typeof b.wheelDelta == n) a = b.wheelDelta; | |
| else if (typeof b.detail == n) a = b.detail * -1; | |
| else q.fail("Unknown event mouse scroll, no known technique."); | |
| return a ? a / g.abs(a) : 0 | |
| }; | |
| l.getPageScroll = function() { | |
| var a = new m, | |
| b = r.documentElement || {}, | |
| c = r.body || {}; | |
| if (typeof h.pageXOffset == n) { | |
| a.x = h.pageXOffset; | |
| a.y = h.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 | |
| }; | |
| l.getWindowSize = function() { | |
| var a = new m, | |
| b = r.documentElement || {}, | |
| c = r.body || {}; | |
| if (typeof h.innerWidth == n) { | |
| a.x = h.innerWidth; | |
| a.y = h.innerHeight | |
| } else if (b.clientWidth || b.clientHeight) { | |
| a.x = b.clientWidth; | |
| a.y = b.clientHeight | |
| } else if (c.clientWidth || c.clientHeight) { | |
| a.x = c.clientWidth; | |
| a.y = c.clientHeight | |
| } else q.fail("Unknown window size, no known technique."); | |
| return a | |
| }; | |
| l.imageFormatSupported = function(a) { | |
| var a = a ? a : d; | |
| return !!z[a.toLowerCase()] | |
| }; | |
| l.makeCenteredNode = function(h) { | |
| var b = "border:none; margin:0px; padding:0px;", | |
| h = e.getElement(h), | |
| c = o.makeNeutralElement(s), | |
| a = []; | |
| a.push('<div style="display:table; height:100%; width:100%;'); | |
| a.push(b); | |
| a.push('#position:relative; overflow:hidden; text-align:left;">'); | |
| a.push('<div style="#position:absolute; #top:50%; width:100%; '); | |
| a.push(b); | |
| a.push('display:table-cell; vertical-align:middle;">'); | |
| a.push('<div style="#position:relative; #top:-50%; width:100%; '); | |
| a.push(b); | |
| a.push('text-align:center;"></div></div></div>'); | |
| c.innerHTML = a.join(d); | |
| c = c.firstChild; | |
| var g = c, | |
| f = c.getElementsByTagName(s); | |
| while (f.length > 0) { | |
| g = f[0]; | |
| f = g.getElementsByTagName(s) | |
| } | |
| g.appendChild(h); | |
| return c | |
| }; | |
| l.makeNeutralElement = function(c) { | |
| var b = r.createElement(c), | |
| a = b.style; | |
| a.background = "transparent none"; | |
| a.border = B; | |
| a.margin = j; | |
| a.padding = j; | |
| a.position = "static"; | |
| return b | |
| }; | |
| l.makeTransparentImage = function(d) { | |
| var c = o.makeNeutralElement("img"), | |
| a = b; | |
| if (u == A.IE && p < 7) { | |
| a = o.makeNeutralElement(F); | |
| a.style.display = C; | |
| c.onload = function() { | |
| a.style.width = a.style.width || c.width + k; | |
| a.style.height = a.style.height || c.height + k; | |
| c.onload = b; | |
| c = b | |
| }; | |
| c.src = d; | |
| a.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + d + "', sizingMethod='scale')" | |
| } else { | |
| a = c; | |
| a.src = d | |
| } | |
| return a | |
| }; | |
| l.setElementOpacity = function(b, a, f) { | |
| var b = o.getElement(b); | |
| if (f && v) a = g.round(a); | |
| if (a < 1) b.style.opacity = a; | |
| else b.style.opacity = d; | |
| var c = b.style.filter || d; | |
| b.style.filter = c.replace(/[\s]*alpha\(.*?\)[\s]*/g, d); | |
| if (a >= 1) return; | |
| var e = g.round(100 * a), | |
| h = " alpha(opacity=" + e + ") "; | |
| b.style.filter += h | |
| }; | |
| l.addEvent = function(a, c, d, b) { | |
| var a = o.getElement(a); | |
| if (a.addEventListener) { | |
| c == D && a.addEventListener(t, d, b); | |
| a.addEventListener(c, d, b) | |
| } else if (a.attachEvent) { | |
| a.attachEvent("on" + c, d); | |
| b && a.setCapture && a.setCapture() | |
| } else q.fail("Unable to attach event handler, no known technique.") | |
| }; | |
| l.removeEvent = function(a, c, d, b) { | |
| var a = o.getElement(a); | |
| if (a.removeEventListener) { | |
| c == D && a.removeEventListener(t, d, b); | |
| a.removeEventListener(c, d, b) | |
| } else if (a.detachEvent) { | |
| a.detachEvent("on" + c, d); | |
| b && a.releaseCapture && a.releaseCapture() | |
| } else q.fail("Unable to detach event handler, no known technique.") | |
| }; | |
| l.cancelEvent = function(b) { | |
| var b = o.getEvent(b); | |
| b.preventDefault && b.preventDefault(); | |
| b.cancel = a; | |
| b.returnValue = c | |
| }; | |
| l.stopEvent = function(b) { | |
| var b = o.getEvent(b); | |
| b.stopPropagation && b.stopPropagation(); | |
| b.cancelBubble = a | |
| }; | |
| l.createCallback = function(d, c) { | |
| for (var b = [], a = 2; a < arguments.length; a++) b.push(arguments[a]); | |
| return function() { | |
| for (var e = b.concat([]), a = 0; a < arguments.length; a++) e.push(arguments[a]); | |
| return c.apply(d, e) | |
| } | |
| }; | |
| l.getUrlParameter = function(c) { | |
| var a = y[c]; | |
| return a ? a : b | |
| }; | |
| l.makeAjaxRequest = function(j, d) { | |
| var c = typeof d == f, | |
| a = b; | |
| if (c) var l = d, | |
| d = function() { | |
| h.setTimeout(e.createCallback(b, l, a), 1) | |
| }; | |
| if (h.ActiveXObject) | |
| for (var k = 0; k < x.length; k++) try { | |
| a = new ActiveXObject(x[k]); | |
| break | |
| } catch (g) { | |
| continue | |
| } else if (h.XMLHttpRequest) a = new XMLHttpRequest; | |
| !a && q.fail("Browser doesn't support XMLHttpRequest."); | |
| if (i.proxyUrl) j = i.proxyUrl + j; | |
| if (c) a.onreadystatechange = function() { | |
| if (a.readyState == 4) { | |
| a.onreadystatechange = new Function; | |
| d() | |
| } | |
| }; | |
| try { | |
| a.open("GET", j, c); | |
| a.send(b) | |
| } catch (g) { | |
| q.log(g.name + " while making AJAX request: " + g.message); | |
| a.onreadystatechange = b; | |
| a = b; | |
| c && d() | |
| } | |
| return c ? b : a | |
| }; | |
| l.parseXml = function(e) { | |
| var d = b; | |
| if (h.ActiveXObject) try { | |
| d = new ActiveXObject("Microsoft.XMLDOM"); | |
| d.async = c; | |
| d.loadXML(e) | |
| } catch (a) { | |
| q.log(a.name + " while parsing XML (ActiveX): " + a.message) | |
| } else if (h.DOMParser) try { | |
| var f = new DOMParser; | |
| d = f.parseFromString(e, "text/xml") | |
| } catch (a) { | |
| q.log(a.name + " while parsing XML (DOMParser): " + a.message) | |
| } else q.fail("Browser doesn't support XML DOM."); | |
| return d | |
| } | |
| }; | |
| e = v.Utils = new e; | |
| var M = v.MouseTracker; | |
| (function() { | |
| var d = "mouseup", | |
| j = "mousedown"; | |
| if (M) return; | |
| var l = e.getBrowser() == A.IE && e.getBrowserVersion() < 9, | |
| o = c, | |
| t = c, | |
| s = {}, | |
| m = []; | |
| function p(a) { | |
| return e.getMousePosition(a) | |
| } | |
| function k(b, d) { | |
| var c = e.getMousePosition(b), | |
| a = e.getElementPosition(d); | |
| return c.minus(a) | |
| } | |
| function n(b, a) { | |
| var d = r.body; | |
| while (a && b != a && d != a) try { | |
| a = a.parentNode | |
| } catch (e) { | |
| return c | |
| } | |
| return b == a | |
| } | |
| function u() { | |
| o = a | |
| } | |
| function w() { | |
| o = c | |
| }(function() { | |
| if (l) { | |
| e.addEvent(r, j, u, c); | |
| e.addEvent(r, d, w, c) | |
| } else { | |
| e.addEvent(h, j, u, a); | |
| e.addEvent(h, d, w, a) | |
| } | |
| })(); | |
| M = v.MouseTracker = function(u) { | |
| var w = "mousemove", | |
| z = "mouseout", | |
| y = "mouseover", | |
| x = this, | |
| v = x, | |
| H = b, | |
| M = g.random(), | |
| u = e.getElement(u), | |
| F = c, | |
| A = c, | |
| C = c, | |
| E = c, | |
| G = b, | |
| O = b, | |
| N = b; | |
| x.target = u; | |
| x.enterHandler = b; | |
| x.exitHandler = b; | |
| x.pressHandler = b; | |
| x.releaseHandler = b; | |
| x.clickHandler = b; | |
| x.dragHandler = b; | |
| x.scrollHandler = b; | |
| function X() { | |
| if (!F) { | |
| e.addEvent(u, y, K, c); | |
| e.addEvent(u, z, L, c); | |
| e.addEvent(u, j, U, c); | |
| e.addEvent(u, d, B, c); | |
| e.addEvent(u, D, R, c); | |
| e.addEvent(u, "click", T, c); | |
| F = a; | |
| s[M] = H | |
| } | |
| } | |
| function Z() { | |
| if (F) { | |
| e.removeEvent(u, y, K, c); | |
| e.removeEvent(u, z, L, c); | |
| e.removeEvent(u, j, U, c); | |
| e.removeEvent(u, d, B, c); | |
| e.removeEvent(u, D, R, c); | |
| e.removeEvent(u, "click", T, c); | |
| I(); | |
| F = c; | |
| delete s[M] | |
| } | |
| } | |
| function Y() { | |
| if (!A) { | |
| if (l) { | |
| e.removeEvent(u, d, B, c); | |
| e.addEvent(u, d, V, a); | |
| e.addEvent(u, w, Q, a) | |
| } else { | |
| e.addEvent(h, d, P, a); | |
| e.addEvent(h, w, J, a) | |
| } | |
| A = a | |
| } | |
| } | |
| function I() { | |
| if (A) { | |
| if (l) { | |
| e.removeEvent(u, w, Q, a); | |
| e.removeEvent(u, d, V, a); | |
| e.addEvent(u, d, B, c) | |
| } else { | |
| e.removeEvent(h, w, J, a); | |
| e.removeEvent(h, d, P, a) | |
| } | |
| A = c | |
| } | |
| } | |
| function S(c, d) { | |
| var b = s; | |
| for (var a in b) b.hasOwnProperty(a) && M != a && b[a][c](d) | |
| } | |
| function ab() { | |
| return E | |
| } | |
| function K(b) { | |
| var b = e.getEvent(b); | |
| l && A && !n(b.srcElement, u) && S("onMouseOver", b); | |
| var g = b.target ? b.target : b.srcElement, | |
| d = b.relatedTarget ? b.relatedTarget : b.fromElement; | |
| if (!n(u, g) || n(u, d)) return; | |
| E = a; | |
| if (typeof v.enterHandler == f) try { | |
| v.enterHandler(v, k(b, u), C, o) | |
| } catch (c) { | |
| q.error(c.name + " while executing enter handler: " + c.message, c) | |
| } | |
| } | |
| function L(a) { | |
| var a = e.getEvent(a); | |
| l && A && !n(a.srcElement, u) && S("onMouseOut", a); | |
| var d = a.target ? a.target : a.srcElement, | |
| g = a.relatedTarget ? a.relatedTarget : a.toElement; | |
| if (!n(u, d) || n(u, g)) return; | |
| E = c; | |
| if (typeof v.exitHandler == f) try { | |
| v.exitHandler(v, k(a, u), C, o) | |
| } catch (b) { | |
| q.error(b.name + " while executing exit handler: " + b.message, b) | |
| } | |
| } | |
| function U(b) { | |
| var b = e.getEvent(b); | |
| if (b.button == 2) return; | |
| C = a; | |
| G = p(b); | |
| N = G; | |
| O = (new Date).getTime(); | |
| if (typeof v.pressHandler == f) try { | |
| v.pressHandler(v, k(b, u)) | |
| } catch (c) { | |
| q.error(c.name + " while executing press handler: " + c.message, c) | |
| }(v.pressHandler || v.dragHandler) && e.cancelEvent(b); | |
| if (!l || !t) { | |
| Y(); | |
| t = a; | |
| m = [H] | |
| } else l && m.push(H) | |
| } | |
| function B(a) { | |
| var a = e.getEvent(a), | |
| g = C, | |
| d = E; | |
| if (a.button == 2) return; | |
| C = c; | |
| if (typeof v.releaseHandler == f) try { | |
| v.releaseHandler(v, k(a, u), g, d) | |
| } catch (b) { | |
| q.error(b.name + " while executing release handler: " + b.message, b) | |
| } | |
| g && d && W(a) | |
| } | |
| function V(a) { | |
| var a = e.getEvent(a); | |
| if (a.button == 2) return; | |
| for (var b = 0; b < m.length; b++) { | |
| var d = m[b]; | |
| !d.hasMouse() && d.onMouseUp(a) | |
| } | |
| I(); | |
| t = c; | |
| a.srcElement.fireEvent("on" + a.type, r.createEventObject(a)); | |
| e.stopEvent(a) | |
| } | |
| function P(a) { | |
| !E && B(a); | |
| I() | |
| } | |
| function T(a) { | |
| v.clickHandler && e.cancelEvent(a) | |
| } | |
| function W(a) { | |
| var a = e.getEvent(a); | |
| if (a.button == 2) return; | |
| var h = (new Date).getTime() - O, | |
| d = p(a), | |
| c = N.distanceTo(d), | |
| g = h <= i.clickTimeThreshold && c <= i.clickDistThreshold; | |
| if (typeof v.clickHandler == f) try { | |
| v.clickHandler(v, k(a, u), g, a.shiftKey) | |
| } catch (b) { | |
| q.error(b.name + " while executing click handler: " + b.message, b) | |
| } | |
| } | |
| function J(a) { | |
| var a = e.getEvent(a), | |
| c = p(a), | |
| d = c.minus(G); | |
| G = c; | |
| if (typeof v.dragHandler == f) { | |
| try { | |
| v.dragHandler(v, k(a, u), d, a.shiftKey) | |
| } catch (b) { | |
| q.error(b.name + " while executing drag handler: " + b.message, b) | |
| } | |
| e.cancelEvent(a) | |
| } | |
| } | |
| function Q(b) { | |
| for (var a = 0; a < m.length; a++) m[a].onMouseMove(b); | |
| e.stopEvent(b) | |
| } | |
| function R(a) { | |
| var a = e.getEvent(a), | |
| c = e.getMouseScroll(a); | |
| if (typeof v.scrollHandler == f) { | |
| if (c) try { | |
| v.scrollHandler(v, k(a, u), c, a.shiftKey) | |
| } catch (b) { | |
| q.error(b.name + " while executing scroll handler: " + b.message, b) | |
| } | |
| e.cancelEvent(a) | |
| } | |
| }(function() { | |
| H = { | |
| hasMouse: ab, | |
| onMouseOver: K, | |
| onMouseOut: L, | |
| onMouseUp: B, | |
| onMouseMove: J | |
| } | |
| })(); | |
| x.isTracking = function() { | |
| return F | |
| }; | |
| x.setTracking = function(a) { | |
| if (a) X(); | |
| else Z() | |
| } | |
| } | |
| })(); | |
| var W = v.EventManager = function() { | |
| var b = this, | |
| a = {}; | |
| b.addListener = function(b, c) { | |
| if (typeof c != f) return; | |
| if (!a[b]) a[b] = []; | |
| a[b].push(c) | |
| }; | |
| b.removeListener = function(e, d) { | |
| var b = a[e]; | |
| if (typeof d != f) return; | |
| else if (!b) return; | |
| for (var c = 0; c < b.length; c++) | |
| if (d == b[c]) { | |
| b.splice(c, 1); | |
| return | |
| } | |
| }; | |
| b.clearListeners = function(b) { | |
| if (a[b]) delete a[b] | |
| }; | |
| b.trigger = function(e) { | |
| var d = a[e], | |
| f = []; | |
| if (!d) return; | |
| for (var b = 1; b < arguments.length; b++) f.push(arguments[b]); | |
| for (var b = 0; b < d.length; b++) try { | |
| d[b].apply(h, f) | |
| } catch (c) { | |
| q.error(c.name + L + e + " handler: " + c.message, c) | |
| } | |
| } | |
| }, | |
| S; | |
| (function() { | |
| var d = 15000; | |
| function g(i, j) { | |
| var e = b, | |
| f = b; | |
| function g(a) { | |
| e.onload = b; | |
| e.onabort = b; | |
| e.onerror = b; | |
| f && h.clearTimeout(f); | |
| h.setTimeout(function() { | |
| j(i, a ? e : b) | |
| }, 1) | |
| } | |
| this.start = function() { | |
| e = new Image; | |
| var j = function() { | |
| g(a) | |
| }, | |
| b = function() { | |
| g(c) | |
| }, | |
| k = function() { | |
| q.log("Image timed out: " + i); | |
| g(c) | |
| }; | |
| e.onload = j; | |
| e.onabort = b; | |
| e.onerror = b; | |
| f = h.setTimeout(k, d); | |
| e.src = i | |
| } | |
| } | |
| S = v.ImageLoader = function() { | |
| var d = 0; | |
| function h(b, e, c) { | |
| d--; | |
| if (typeof b == f) try { | |
| b(c) | |
| } catch (a) { | |
| q.error(a.name + L + e + " callback: " + a.message, a) | |
| } | |
| } | |
| this.loadImage = function(l, f) { | |
| if (d >= i.imageLoaderLimit) return c; | |
| var j = e.createCallback(b, h, f), | |
| k = new g(l, j); | |
| d++; | |
| k.start(); | |
| return a | |
| } | |
| } | |
| })(); | |
| var O, R; | |
| (function() { | |
| var i = { | |
| REST: 0, | |
| GROUP: 1, | |
| HOVER: 2, | |
| DOWN: 3 | |
| }; | |
| O = v.Button = function(W, V, S, T, U, y, q, v, x, z) { | |
| var l = e.makeNeutralElement(F), | |
| k = i.GROUP, | |
| m = new M(l), | |
| H = e.makeTransparentImage(V), | |
| r = e.makeTransparentImage(S), | |
| s = e.makeTransparentImage(T), | |
| t = e.makeTransparentImage(U), | |
| y = typeof y == f ? y : b, | |
| q = typeof q == f ? q : b, | |
| v = typeof v == f ? v : b, | |
| x = typeof x == f ? x : b, | |
| z = typeof z == f ? z : b, | |
| G = 0, | |
| P = 2e3, | |
| D = b, | |
| B = c; | |
| this.elmt = l; | |
| function E() { | |
| h.setTimeout(R, 20) | |
| } | |
| function R() { | |
| if (B) { | |
| var c = (new Date).getTime(), | |
| d = c - D, | |
| b = 1 - d / P; | |
| b = g.min(1, b); | |
| b = g.max(0, b); | |
| e.setElementOpacity(r, b, a); | |
| b > 0 && E() | |
| } | |
| } | |
| function N() { | |
| B = a; | |
| D = (new Date).getTime() + G; | |
| h.setTimeout(E, G) | |
| } | |
| function Q() { | |
| B = c; | |
| e.setElementOpacity(r, 1, a) | |
| } | |
| function p(a) { | |
| if (a >= i.GROUP && k == i.REST) { | |
| Q(); | |
| k = i.GROUP | |
| } | |
| if (a >= i.HOVER && k == i.GROUP) { | |
| s.style.visibility = d; | |
| k = i.HOVER | |
| } | |
| if (a >= i.DOWN && k == i.HOVER) { | |
| t.style.visibility = d; | |
| k = i.DOWN | |
| } | |
| } | |
| function n(a) { | |
| if (a <= i.HOVER && k == i.DOWN) { | |
| t.style.visibility = o; | |
| k = i.HOVER | |
| } | |
| if (a <= i.GROUP && k == i.HOVER) { | |
| s.style.visibility = o; | |
| k = i.GROUP | |
| } | |
| if (a <= i.REST && k == i.GROUP) { | |
| N(); | |
| k = i.REST | |
| } | |
| } | |
| function K(d, c, a, b) { | |
| if (a) { | |
| p(i.DOWN); | |
| x && x() | |
| } else !b && p(i.HOVER) | |
| } | |
| function O(d, c, a) { | |
| n(i.GROUP); | |
| a && z && z() | |
| } | |
| function L() { | |
| p(i.DOWN); | |
| y && y() | |
| } | |
| function I(d, c, a, b) { | |
| if (a && b) { | |
| n(i.HOVER); | |
| q && q() | |
| } else if (a) n(i.GROUP); | |
| else p(i.HOVER) | |
| } | |
| function J(c, b, a) { | |
| v && a && v() | |
| } | |
| this.notifyGroupEnter = function() { | |
| p(i.GROUP) | |
| }; | |
| this.notifyGroupExit = function() { | |
| n(i.REST) | |
| }; | |
| (function() { | |
| l.style.display = C; | |
| l.style.position = u; | |
| l.title = W; | |
| l.appendChild(H); | |
| l.appendChild(r); | |
| l.appendChild(s); | |
| l.appendChild(t); | |
| var g = H.style, | |
| f = r.style, | |
| b = s.style, | |
| c = t.style; | |
| f.position = b.position = c.position = w; | |
| f.top = b.top = c.top = j; | |
| f.left = b.left = c.left = j; | |
| b.visibility = c.visibility = o; | |
| if (e.getBrowser() == A.FIREFOX && e.getBrowserVersion() < 3) f.top = b.top = c.top = d; | |
| m.enterHandler = K; | |
| m.exitHandler = O; | |
| m.pressHandler = L; | |
| m.releaseHandler = I; | |
| m.clickHandler = J; | |
| m.setTracking(a); | |
| n(i.REST) | |
| })() | |
| }; | |
| R = v.ButtonGroup = function(b) { | |
| var d = e.makeNeutralElement(F), | |
| b = b.concat([]), | |
| c = new M(d); | |
| this.elmt = d; | |
| function f() { | |
| for (var a = 0; a < b.length; a++) b[a].notifyGroupEnter() | |
| } | |
| function g(f, e, c) { | |
| if (!c) | |
| for (var a = 0; a < b.length; a++) b[a].notifyGroupExit() | |
| } | |
| function h(f, e, d, c) { | |
| if (!c) | |
| for (var a = 0; a < b.length; a++) b[a].notifyGroupExit() | |
| } | |
| this.emulateEnter = function() { | |
| f() | |
| }; | |
| this.emulateExit = function() { | |
| g() | |
| }; | |
| (function() { | |
| d.style.display = C; | |
| for (var e = 0; e < b.length; e++) d.appendChild(b[e].elmt); | |
| c.enterHandler = f; | |
| c.exitHandler = g; | |
| c.releaseHandler = h; | |
| c.setTracking(a) | |
| })() | |
| } | |
| })(); | |
| var T = v.TileSource = function(d, c, i, e, h, f) { | |
| var b = this, | |
| a = b, | |
| j = c / d; | |
| b.width = d; | |
| b.height = c; | |
| b.aspectRatio = d / c; | |
| b.dimensions = new m(d, c); | |
| b.minLevel = h ? h : 0; | |
| b.maxLevel = f ? f : g.ceil(g.log(g.max(d, c)) / g.log(2)); | |
| b.tileSize = i ? i : 0; | |
| b.tileOverlap = e ? e : 0; | |
| b.getLevelScale = function(b) { | |
| return 1 / (1 << a.maxLevel - b) | |
| }; | |
| b.getNumTiles = function(e) { | |
| var b = a.getLevelScale(e), | |
| f = g.ceil(b * d / a.tileSize), | |
| h = g.ceil(b * c / a.tileSize); | |
| return new m(f, h) | |
| }; | |
| b.getPixelRatio = function(c) { | |
| var b = a.dimensions.times(a.getLevelScale(c)), | |
| d = 1 / b.x, | |
| e = 1 / b.y; | |
| return new m(d, e) | |
| }; | |
| b.getTileAtPoint = function(h, d) { | |
| var b = a.dimensions.times(a.getLevelScale(h)), | |
| c = d.times(b.x), | |
| e, f; | |
| if (d.x >= 0 && d.x <= 1) e = g.floor(c.x / a.tileSize); | |
| else e = g.ceil(b.x / a.tileSize) * g.floor(c.x / b.x) + g.floor((b.x + c.x % b.x) % b.x / a.tileSize); | |
| if (d.y >= 0 && d.y <= j) f = g.floor(c.y / a.tileSize); | |
| else f = g.ceil(b.y / a.tileSize) * g.floor(c.y / b.y) + g.floor((b.y + c.y % b.y) % b.y / a.tileSize); | |
| return new m(e, f) | |
| }; | |
| b.getTileBounds = function(k, f, h) { | |
| var c = a.dimensions.times(a.getLevelScale(k)), | |
| i = f === 0 ? 0 : a.tileSize * f - a.tileOverlap, | |
| j = h === 0 ? 0 : a.tileSize * h - a.tileOverlap, | |
| d = a.tileSize + (f === 0 ? 1 : 2) * a.tileOverlap, | |
| e = a.tileSize + (h === 0 ? 1 : 2) * a.tileOverlap; | |
| d = g.min(d, c.x - i); | |
| e = g.min(e, c.y - j); | |
| var b = 1 / c.x; | |
| return new y(i * b, j * b, d * b, e * b) | |
| }; | |
| b.getTileUrl = function() { | |
| throw new Error("Method not implemented.") | |
| }; | |
| b.tileExists = function(b, d, e) { | |
| var c = a.getNumTiles(b); | |
| return b >= a.minLevel && b <= a.maxLevel && d >= 0 && e >= 0 && d < c.x && e < c.y | |
| } | |
| }, | |
| P = v.DisplayRect = function(e, f, d, c, b, a) { | |
| y.apply(this, arguments); | |
| this.minLevel = b; | |
| this.maxLevel = a | |
| }; | |
| P.prototype = new y; | |
| var K = v.DziTileSource = function(m, l, e, j, k, i, f) { | |
| var b = this; | |
| T.apply(b, [m, l, e, j]); | |
| var n = b, | |
| h = {}; | |
| b.fileFormat = i; | |
| b.tileFormat = i; | |
| b.displayRects = f; | |
| (function() { | |
| if (!f) return; | |
| for (var c = f.length - 1; c >= 0; c--) | |
| for (var b = f[c], a = b.minLevel; a <= b.maxLevel; a++) { | |
| if (!h[a]) h[a] = []; | |
| h[a].push(b) | |
| } | |
| })(); | |
| b.getTileUrl = function(a, b, c) { | |
| return [k, a, "/", b, "_", c, ".", i].join(d) | |
| }; | |
| b.tileExists = function(d, p, q) { | |
| var f = h[d]; | |
| if (!f || !f.length) return a; | |
| for (var i = n.getLevelScale(d), o = f.length - 1; o >= 0; o--) { | |
| var b = f[o]; | |
| if (d < b.minLevel || d > b.maxLevel) continue; | |
| var j = b.x * i, | |
| k = b.y * i, | |
| l = j + b.width * i, | |
| m = k + b.height * i; | |
| j = g.floor(j / e); | |
| k = g.floor(k / e); | |
| l = g.ceil(l / e); | |
| m = g.ceil(m / e); | |
| if (j <= p && p < l && k <= q && q < m) return a | |
| } | |
| return c | |
| } | |
| }; | |
| K.prototype = new T; | |
| (function() { | |
| var c = "Errors.Empty"; | |
| function a(a) { | |
| Error.apply(this, arguments); | |
| this.message = a | |
| } | |
| a.prototype = new Error; | |
| function i(b) { | |
| if (!(b instanceof a)) { | |
| q.error(b.name + " while creating DZI from XML: " + b.message); | |
| b = new a(x.getString("Errors.Unknown")) | |
| } | |
| return b | |
| } | |
| function d(d) { | |
| var a = d.split("/"), | |
| b = a[a.length - 1], | |
| c = b.lastIndexOf("."); | |
| if (c > -1) a[a.length - 1] = b.slice(0, c); | |
| return a.join("/") + "_files/" | |
| } | |
| function j(c, i) { | |
| if (!c) throw new a(x.getString("Errors.Security")); | |
| else if (c.status !== 200 && c.status !== 0) { | |
| var f = c.status, | |
| h = f == 404 ? "Not Found" : c.statusText; | |
| throw new a(x.getString("Errors.Status", f, h)) | |
| } | |
| var d = b; | |
| if (c.responseXML && c.responseXML.documentElement) d = c.responseXML; | |
| else if (c.responseText) d = e.parseXml(c.responseText); | |
| return g(d, i) | |
| } | |
| function g(d, g) { | |
| var b = "Errors.Dzi"; | |
| if (!d || !d.documentElement) throw new a(x.getString("Errors.Xml")); | |
| var e = d.documentElement, | |
| c = e.tagName; | |
| if (c == "Image") try { | |
| return l(e, g) | |
| } catch (f) { | |
| var h = x.getString(b); | |
| throw f instanceof a ? f : new a(h) | |
| } else if (c == "Collection") throw new a(x.getString("Errors.Dzc")); | |
| else if (c == "Error") return k(e); | |
| throw new a(x.getString(b)) | |
| } | |
| function l(b, m) { | |
| var f = b.getAttribute("Format"); | |
| if (!e.imageFormatSupported(f)) throw new a(x.getString("Errors.ImageFormat", f.toUpperCase())); | |
| for (var j = b.getElementsByTagName("Size")[0], h = b.getElementsByTagName("DisplayRect"), o = parseInt(j.getAttribute("Width"), p), n = parseInt(j.getAttribute("Height"), p), l = parseInt(b.getAttribute("TileSize")), k = parseInt(b.getAttribute("Overlap")), i = [], g = 0; g < h.length; g++) { | |
| var d = h[g], | |
| c = d.getElementsByTagName("Rect")[0]; | |
| i.push(new P(parseInt(c.getAttribute("X"), p), parseInt(c.getAttribute("Y"), p), parseInt(c.getAttribute("Width"), p), parseInt(c.getAttribute("Height"), p), parseInt(d.getAttribute("MinLevel"), p), parseInt(d.getAttribute("MaxLevel"), p))) | |
| } | |
| return new K(o, n, l, k, m, f, i) | |
| } | |
| function k(c) { | |
| var b = c.getElementsByTagName("Message")[0], | |
| d = b.firstChild.nodeValue; | |
| throw new a(d) | |
| } | |
| K.getTilesUrl = d; | |
| K.createFromJson = function(q, o) { | |
| var r = typeof o == f, | |
| m, k, g = q; | |
| if (!g || !g.url && !g.tilesUrl) k = new a(x.getString(c)); | |
| else try { | |
| var l = g.displayRects; | |
| if (l && l.length) | |
| for (var n = 0, s = l.length; n < s; n++) { | |
| var j = l[n]; | |
| l[n] = new P(j.x || j[0], j.y || j[1], j.width || j[2], j.height || j[3], j.minLevel || j[4], j.maxLevel || j[5]) | |
| } | |
| m = new K(g.width, g.height, g.tileSize, g.tileOverlap, g.tilesUrl || d(g.url), g.tileFormat, g.displayRects); | |
| m.xmlUrl = g.url | |
| } catch (p) { | |
| k = i(p) | |
| } | |
| if (r) h.setTimeout(e.createCallback(b, o, m, k && k.message), 1); | |
| else if (k) throw k; | |
| else return m | |
| }; | |
| K.createFromXml = function(l, m, n) { | |
| var p = typeof n == f, | |
| k = b; | |
| if (!l) { | |
| k = x.getString(c); | |
| if (p) { | |
| h.setTimeout(function() { | |
| n(b, k) | |
| }, 1); | |
| return b | |
| } | |
| throw new a(k) | |
| } | |
| var q = d(l); | |
| function o(d, e) { | |
| try { | |
| var c = d(e, q); | |
| c.xmlUrl = l; | |
| return c | |
| } catch (a) { | |
| if (p) { | |
| k = i(a).message; | |
| return b | |
| } else throw i(a) | |
| } | |
| } | |
| if (p) { | |
| if (m) h.setTimeout(function() { | |
| var a = o(g, e.parseXml(m)); | |
| n(a, k) | |
| }, 1); | |
| else e.makeAjaxRequest(l, function(b) { | |
| var a = o(j, b); | |
| n(a, k) | |
| }); | |
| return b | |
| } | |
| if (m) return o(g, e.parseXml(m)); | |
| else return o(j, e.makeAjaxRequest(l)) | |
| } | |
| })(); | |
| var X = v.Viewport = function(e, n) { | |
| var d = this, | |
| c = d, | |
| e = new m(e.x, e.y), | |
| s = n.x / n.y, | |
| o = n.y / n.x, | |
| h = new Q(0), | |
| j = new Q(0), | |
| l = new Q(i.logarithmicZoom ? 0 : 1), | |
| f = b, | |
| k = new y(0, 0, 1, o), | |
| q = k.getCenter(), | |
| A = g.LN2; | |
| function z() { | |
| c.goHome(a); | |
| c.update() | |
| } | |
| function u(a) { | |
| return g.log(a) / A | |
| } | |
| function w(a) { | |
| return g.pow(2, a) | |
| } | |
| function r(c, b, a) { | |
| return g.min(g.max(c, b), a) | |
| } | |
| function x(b, a) { | |
| var d = b.x, | |
| f = b.y, | |
| c = r(d, a.x, a.x + a.width), | |
| e = r(f, a.y, a.y + a.height); | |
| return d === c && f === e ? b : new m(c, e) | |
| } | |
| function p(h) { | |
| var k = c.getZoom(h), | |
| g = 1 / k, | |
| j = g / c.getAspectRatio(), | |
| f = i.visibilityRatio, | |
| d = (f - t) * g, | |
| e = (f - t) * j, | |
| a = 1 - 2 * d, | |
| b = o - 2 * e; | |
| if (a < 0) { | |
| d += t * a; | |
| a = 0 | |
| } | |
| if (b < 0) { | |
| e += t * b; | |
| b = 0 | |
| } | |
| return new v.Rect(d, e, a, b) | |
| } | |
| d.getHomeBounds = function() { | |
| var b = c.getAspectRatio(), | |
| a = new y(k.x, k.y, k.width, k.height); | |
| if (s >= b) { | |
| a.height = k.width / b; | |
| a.y = q.y - a.height / 2 | |
| } else { | |
| a.width = k.height * b; | |
| a.x = q.x - a.width / 2 | |
| } | |
| return a | |
| }; | |
| d.getHomeCenter = function() { | |
| return q | |
| }; | |
| d.getHomeZoom = function() { | |
| var a = s / c.getAspectRatio(); | |
| return a >= 1 ? 1 : a | |
| }; | |
| d.getMinCenter = function(a) { | |
| return p(a).getTopLeft() | |
| }; | |
| d.getMaxCenter = function(a) { | |
| return p(a).getBottomRight() | |
| }; | |
| d.getMinZoom = function() { | |
| var a = c.getHomeZoom(); | |
| if (i.minZoomDimension) var b = n.x <= n.y ? i.minZoomDimension / e.x : i.minZoomDimension / (e.x * o); | |
| else var b = i.minZoomImageRatio * a; | |
| return g.min(b, a) | |
| }; | |
| d.getMaxZoom = function() { | |
| var a = n.x * i.maxZoomPixelRatio / e.x; | |
| return g.max(a, c.getHomeZoom()) | |
| }; | |
| d.getAspectRatio = function() { | |
| return e.x / e.y | |
| }; | |
| d.getContainerSize = function() { | |
| return new m(e.x, e.y) | |
| }; | |
| d.getBounds = function(b) { | |
| var d = c.getCenter(b), | |
| a = 1 / c.getZoom(b), | |
| e = a / c.getAspectRatio(); | |
| return new y(d.x - a / 2, d.y - e / 2, a, e) | |
| }; | |
| d.getCenter = function(r) { | |
| var b = new m(h.getCurrent(), j.getCurrent()), | |
| g = new m(h.getTarget(), j.getTarget()); | |
| if (r) return b; | |
| else if (!f) return g; | |
| var l = c.getZoom(), | |
| d = 1 / l, | |
| k = d / c.getAspectRatio(), | |
| i = new y(b.x - d / 2, b.y - k / 2, d, k), | |
| q = c.pixelFromPoint(f, a), | |
| p = f.minus(i.getTopLeft()).times(e.x / i.width), | |
| n = p.minus(q), | |
| o = n.divide(e.x * l); | |
| return g.plus(o) | |
| }; | |
| d.getZoom = function(b) { | |
| var a; | |
| if (b) { | |
| a = l.getCurrent(); | |
| return i.logarithmicZoom ? w(a) : a | |
| } else { | |
| a = l.getTarget(); | |
| return i.logarithmicZoom ? w(a) : a | |
| } | |
| }; | |
| d.applyConstraints = function(g) { | |
| var h = c.getZoom(), | |
| d = r(h, c.getMinZoom(), c.getMaxZoom()); | |
| h != d && c.zoomTo(d, f, g); | |
| var b = c.getCenter(), | |
| a = x(b, p()); | |
| if (i.wrapHorizontal) a.x = b.x; | |
| if (i.wrapVertical) a.y = b.y; | |
| if (!b.equals(a)) { | |
| var e = 1 / d, | |
| j = e / c.getAspectRatio(); | |
| c.fitBounds(new y(a.x - t * e, a.y - t * j, e, j), g) | |
| } | |
| }; | |
| d.ensureVisible = function(a) { | |
| c.applyConstraints(a) | |
| }; | |
| d.fitBounds = function(f, j) { | |
| var h = c.getAspectRatio(), | |
| i = f.getCenter(), | |
| d = new y(f.x, f.y, f.width, f.height); | |
| if (d.getAspectRatio() >= h) { | |
| d.height = f.width / h; | |
| d.y = i.y - d.height / 2 | |
| } else { | |
| d.width = f.height * h; | |
| d.x = i.x - d.width / 2 | |
| } | |
| c.panTo(c.getCenter(a), a); | |
| c.zoomTo(c.getZoom(a), b, a); | |
| var g = c.getBounds(), | |
| m = c.getZoom(), | |
| k = 1 / d.width; | |
| if (k == m || d.width == g.width) { | |
| c.panTo(i, j); | |
| return | |
| } | |
| var l = g.getTopLeft().times(e.x / g.width).minus(d.getTopLeft().times(e.x / d.width)).divide(e.x / g.width - e.x / d.width); | |
| c.zoomTo(k, l, j) | |
| }; | |
| d.goHome = function(b) { | |
| var a = c.getCenter(); | |
| if (i.wrapHorizontal) { | |
| a.x = (1 + a.x % 1) % 1; | |
| h.resetTo(a.x); | |
| h.update() | |
| } | |
| if (i.wrapVertical) { | |
| a.y = (o + a.y % o) % o; | |
| j.resetTo(a.y); | |
| j.update() | |
| } | |
| c.fitBounds(k, b) | |
| }; | |
| d.panBy = function(b, a) { | |
| c.panTo(c.getCenter().plus(b), a) | |
| }; | |
| d.panTo = function(b, q) { | |
| if (q) { | |
| h.resetTo(b.x); | |
| j.resetTo(b.y); | |
| return | |
| } | |
| if (!f) { | |
| h.springTo(b.x); | |
| j.springTo(b.y); | |
| return | |
| } | |
| var l = c.getZoom(), | |
| d = 1 / l, | |
| k = d / c.getAspectRatio(), | |
| i = new y(h.getCurrent() - d / 2, j.getCurrent() - k / 2, d, k), | |
| p = c.pixelFromPoint(f, a), | |
| o = f.minus(i.getTopLeft()).times(e.x / i.width), | |
| m = o.minus(p), | |
| n = m.divide(e.x * l), | |
| g = b.minus(n); | |
| h.springTo(g.x); | |
| j.springTo(g.y) | |
| }; | |
| d.zoomBy = function(d, b, a) { | |
| c.zoomTo(c.getZoom() * d, b, a) | |
| }; | |
| d.zoomTo = function(a, c, d) { | |
| if (d) l.resetTo(i.logarithmicZoom ? u(a) : a); | |
| else l.springTo(i.logarithmicZoom ? u(a) : a); | |
| f = c instanceof m ? c : b | |
| }; | |
| d.resize = function(d, h) { | |
| var f = c.getBounds(), | |
| b = f, | |
| g = d.x / e.x; | |
| e = new m(d.x, d.y); | |
| if (h) { | |
| b.width = f.width * g; | |
| b.height = b.width / c.getAspectRatio() | |
| } | |
| c.fitBounds(b, a) | |
| }; | |
| d.update = function() { | |
| var m = h.getCurrent(), | |
| n = j.getCurrent(), | |
| e = l.getCurrent(); | |
| if (f) var k = c.pixelFromPoint(f, a); | |
| l.update(); | |
| if (f && l.getCurrent() != e) { | |
| var i = c.pixelFromPoint(f, a), | |
| g = i.minus(k), | |
| d = c.deltaPointsFromPixels(g, a); | |
| h.shiftBy(d.x); | |
| j.shiftBy(d.y) | |
| } else f = b; | |
| h.update(); | |
| j.update(); | |
| return h.getCurrent() != m || j.getCurrent() != n || l.getCurrent() != e | |
| }; | |
| d.deltaPixelsFromPoints = function(a, b) { | |
| return a.times(e.x * c.getZoom(b)) | |
| }; | |
| d.deltaPointsFromPixels = function(a, b) { | |
| return a.divide(e.x * c.getZoom(b)) | |
| }; | |
| d.pixelFromPoint = function(d, b) { | |
| var a = c.getBounds(b); | |
| return d.minus(a.getTopLeft()).times(e.x / a.width) | |
| }; | |
| d.pointFromPixel = function(d, b) { | |
| var a = c.getBounds(b); | |
| return d.divide(e.x / a.width).plus(a.getTopLeft()) | |
| }; | |
| z() | |
| }, | |
| V, E; | |
| (function() { | |
| var n = "progid:DXImageTransform.Microsoft.Matrix(", | |
| j = " when it's not yet loaded.", | |
| h = "Attempting to draw tile ", | |
| W = 100, | |
| G = t, | |
| u = e.getBrowser(), | |
| P = e.getBrowserVersion(), | |
| bb = navigator.userAgent, | |
| R = !!r.createElement("canvas").getContext, | |
| T = r.documentElement || {}, | |
| H = T.style || {}, | |
| C = c, | |
| K = ["msTransform", "WebkitTransform", "MozTransform"], | |
| f, B; | |
| while (f = K.shift()) | |
| if (typeof H[f] !== J) { | |
| C = a; | |
| B = /webkit/i.test(f); | |
| break | |
| } | |
| var X = "-webkit-transform", | |
| L = "WebkitTransition", | |
| Z = typeof H[L] !== J, | |
| O = "progid:DXImageTransform.Microsoft.Matrix", | |
| Y = new RegExp(O + "\\(.*?\\)", "g"), | |
| ab = function() { | |
| try { | |
| return u == A.IE && !!r.documentElement.filters | |
| } catch (a) { | |
| return c | |
| } | |
| }(), | |
| Q = u == A.SAFARI && P < 4 || u == A.CHROME, | |
| p = R && !Q, | |
| F = !p && C, | |
| I = c, | |
| M = typeof r.documentMode !== J ? "bicubic" : "nearest-neighbor"; | |
| function o(f, h, i, d, e, g) { | |
| var a = this; | |
| a.level = f; | |
| a.x = h; | |
| a.y = i; | |
| a.bounds = d; | |
| a.exists = e; | |
| a.url = g; | |
| a.elmt = b; | |
| a.image = b; | |
| a.loaded = c; | |
| a.loading = c; | |
| a.style = b; | |
| a.position = b; | |
| a.size = b; | |
| a.blendStart = b; | |
| a.opacity = b; | |
| a.distance = b; | |
| a.visibility = b; | |
| a.beingDrawn = c; | |
| a.lastDrawnTime = 0; | |
| a.lastTouchTime = 0 | |
| } | |
| o.prototype.toString = function() { | |
| return this.level + "/" + this.x + "_" + this.y | |
| }; | |
| o.prototype.drawHTML = function(l) { | |
| var a = this; | |
| if (!a.loaded) { | |
| q.error(h + a.toString() + j); | |
| return | |
| } | |
| if (!a.elmt) { | |
| a.elmt = e.makeNeutralElement("img"); | |
| a.elmt.src = a.url; | |
| a.style = a.elmt.style; | |
| a.style.position = w; | |
| a.style.msInterpolationMode = M; | |
| if (F) a.style[f + "Origin"] = "0px 0px" | |
| } | |
| var m = a.elmt, | |
| r = a.image, | |
| c = a.style, | |
| b = a.position, | |
| i = a.size; | |
| m.parentNode != l && l.appendChild(m); | |
| if (F) c[f] = ["matrix(", (i.x / r.width).toFixed(8), ",0,0,", (i.y / r.height).toFixed(8), z, b.x.toFixed(8), B ? z : "px,", b.y.toFixed(8), B ? ")" : "px)"].join(d); | |
| else if (I) { | |
| var p = l.clientWidth, | |
| o = l.clientHeight; | |
| c.width = p + k; | |
| c.height = o + k; | |
| c.filter = [n, "M11=", (i.x / p).toFixed(8), ",M22=", (i.y / o).toFixed(8), ",Dx=", b.x.toFixed(8), ",Dy=", b.y.toFixed(8), ")"].join(d) | |
| } else { | |
| b = b.apply(g.floor); | |
| i = i.apply(g.ceil); | |
| c.left = b.x + k; | |
| c.top = b.y + k; | |
| c.width = i.x + k; | |
| c.height = i.y + k | |
| } | |
| e.setElementOpacity(m, a.opacity) | |
| }; | |
| o.prototype.drawCanvas = function(c) { | |
| var a = this; | |
| if (!a.loaded) { | |
| q.error(h + a.toString() + j); | |
| return | |
| } | |
| var b = a.position, | |
| d = a.size; | |
| c.globalAlpha = a.opacity; | |
| c.drawImage(a.image, b.x, b.y, d.x, d.y) | |
| }; | |
| o.prototype.unload = function() { | |
| var a = this; | |
| a.elmt && a.elmt.parentNode && a.elmt.parentNode.removeChild(a.elmt); | |
| a.elmt = b; | |
| a.image = b; | |
| a.loaded = c; | |
| a.loading = c | |
| }; | |
| E = v.OverlayPlacement = { | |
| CENTER: 0, | |
| TOP_LEFT: 1, | |
| TOP: 2, | |
| TOP_RIGHT: 3, | |
| RIGHT: 4, | |
| BOTTOM_RIGHT: 5, | |
| BOTTOM: 6, | |
| BOTTOM_LEFT: 7, | |
| LEFT: 8 | |
| }; | |
| function D(a) { | |
| switch (a) { | |
| case E.TOP_LEFT: | |
| return function() {}; | |
| case E.TOP: | |
| return function(a, b) { | |
| a.x -= b.x / 2 | |
| }; | |
| case E.TOP_RIGHT: | |
| return function(a, b) { | |
| a.x -= b.x | |
| }; | |
| case E.RIGHT: | |
| return function(a, b) { | |
| a.x -= b.x; | |
| a.y -= b.y / 2 | |
| }; | |
| case E.BOTTOM_RIGHT: | |
| return function(a, b) { | |
| a.x -= b.x; | |
| a.y -= b.y | |
| }; | |
| case E.BOTTOM: | |
| return function(a, b) { | |
| a.x -= b.x / 2; | |
| a.y -= b.y | |
| }; | |
| case E.BOTTOM_LEFT: | |
| return function(a, b) { | |
| a.y -= b.y | |
| }; | |
| case E.LEFT: | |
| return function(a, b) { | |
| a.y -= b.y / 2 | |
| }; | |
| case E.CENTER: | |
| default: | |
| return function(a, b) { | |
| a.x -= b.x / 2; | |
| a.y -= b.y / 2 | |
| } | |
| } | |
| } | |
| function x(c, a, d) { | |
| var b = this; | |
| b.elmt = c; | |
| b.scales = a instanceof y; | |
| b.bounds = new y(a.x, a.y, a.width, a.height); | |
| b.adjust = D(a instanceof m ? d : E.TOP_LEFT); | |
| b.position = new m(a.x, a.y); | |
| b.size = new m(a.width, a.height); | |
| b.style = c.style; | |
| b.naturalSize = new m(c.clientWidth, c.clientHeight) | |
| } | |
| x.prototype.destroy = function() { | |
| var b = this.elmt, | |
| a = this.style; | |
| b.parentNode && b.parentNode.removeChild(b); | |
| a.top = d; | |
| a.left = d; | |
| a.position = d; | |
| if (this.scales) { | |
| a.width = d; | |
| a.height = d | |
| } | |
| }; | |
| x.prototype.drawHTML = function(m) { | |
| var h = this, | |
| c = h.elmt, | |
| a = h.style, | |
| o = h.scales, | |
| j = h.naturalSize; | |
| if (c.parentNode != m) { | |
| m.appendChild(c); | |
| a.position = w; | |
| j.x = c.clientWidth; | |
| j.y = c.clientHeight | |
| } | |
| var e = h.position, | |
| b = h.size; | |
| if (!o) { | |
| b.x = j.x = j.x || c.clientWidth; | |
| b.y = j.y = j.y || c.clientHeight | |
| } | |
| h.adjust(e, b); | |
| if (i.transformOverlays && C) { | |
| a[f + "Origin"] = "0px 0px"; | |
| a[f] = ["translate(", e.x.toFixed(8), "px,", e.y.toFixed(8), "px)"].join(d); | |
| if (o) { | |
| if (!c.clientWidth) a.width = l; | |
| if (!c.clientHeight) a.height = l; | |
| a[f] += [" scale(", (b.x / c.clientWidth).toFixed(8), z, (b.y / c.clientHeight).toFixed(8), ")"].join(d) | |
| } | |
| } else if (i.transformOverlays && I) { | |
| var q = m.clientWidth, | |
| p = m.clientHeight; | |
| a.width = q + k; | |
| a.height = p + k; | |
| a.filter = [n, "M11=", (b.x / q).toFixed(8), ",M22=", (b.y / p).toFixed(8), ",Dx=", e.x.toFixed(8), ",Dy=", e.y.toFixed(8), ")"].join(d) | |
| } else { | |
| e = e.apply(g.floor); | |
| b = b.apply(g.ceil); | |
| a.left = e.x + k; | |
| a.top = e.y + k; | |
| if (o) { | |
| a.width = b.x + k; | |
| a.height = b.y + k | |
| } | |
| } | |
| }; | |
| x.prototype.update = function(a, b) { | |
| this.scales = a instanceof y; | |
| this.bounds = new y(a.x, a.y, a.width, a.height); | |
| this.adjust = D(a instanceof m ? b : E.TOP_LEFT) | |
| }; | |
| V = v.Drawer = function(f, C, ib) { | |
| var h = this, | |
| B = e.getElement(ib), | |
| z = e.makeNeutralElement(p ? "canvas" : s), | |
| gb = p ? z.getContext("2d") : b, | |
| T = new S, | |
| J = new U, | |
| eb = f.minLevel, | |
| db = f.maxLevel, | |
| fb = f.tileSize, | |
| X = f.tileOverlap, | |
| H = f.height / f.width, | |
| F = {}, | |
| D = {}, | |
| r = {}, | |
| v = [], | |
| k = {}, | |
| n = [], | |
| bb = [], | |
| K = 0, | |
| L = 0, | |
| I = c, | |
| j = a; | |
| h.elmt = B; | |
| h.profiler = J; | |
| (function() { | |
| z.style.width = l; | |
| z.style.height = l; | |
| z.style.position = w; | |
| B.style.textAlign = "left"; | |
| B.appendChild(z) | |
| })(); | |
| function R(a) { | |
| if (!F[a]) F[a] = f.getNumTiles(a); | |
| return F[a] | |
| } | |
| function M(a) { | |
| if (!D[a]) D[a] = f.getPixelRatio(a); | |
| return D[a] | |
| } | |
| function hb(a, b, c, l, d, e) { | |
| if (!r[a]) r[a] = {}; | |
| if (!r[a][b]) r[a][b] = {}; | |
| if (!r[a][b][c]) { | |
| var g = (d + b % d) % d, | |
| h = (e + c % e) % e, | |
| i = f.getTileBounds(a, g, h), | |
| k = f.tileExists(a, g, h), | |
| m = f.getTileUrl(a, g, h); | |
| i.x += 1 * (b - g) / d; | |
| i.y += H * (c - h) / e; | |
| r[a][b][c] = new o(a, b, c, i, k, m) | |
| } | |
| var j = r[a][b][c]; | |
| j.lastTouchTime = l; | |
| return j | |
| } | |
| function cb(a, c) { | |
| a.loading = T.loadImage(a.url, e.createCallback(b, Z, a, c)) | |
| } | |
| function Z(d, s, n) { | |
| d.loading = c; | |
| if (I) { | |
| q.error("Tile load callback in middle of drawing routine."); | |
| return | |
| } else if (!n) { | |
| q.log("Tile " + d + " failed to load: " + d.url); | |
| d.exists = c; | |
| return | |
| } else if (s < L) { | |
| q.log("Ignoring tile " + d + " loaded before reset: " + d.url); | |
| return | |
| } | |
| d.loaded = a; | |
| d.image = n; | |
| var k = v.length; | |
| if (v.length >= W) { | |
| for (var r = g.ceil(g.log(fb) / g.log(2)), e = b, i = -1, h = v.length - 1; h >= 0; h--) { | |
| var f = v[h]; | |
| if (f.level <= r || f.beingDrawn) continue; | |
| else if (!e) { | |
| e = f; | |
| i = h; | |
| continue | |
| } | |
| var m = f.lastTouchTime, | |
| l = e.lastTouchTime, | |
| p = f.level, | |
| o = e.level; | |
| if (m < l || m == l && p > o) { | |
| e = f; | |
| i = h | |
| } | |
| } | |
| if (e && i >= 0) { | |
| e.unload(); | |
| k = i | |
| } | |
| } | |
| v[k] = d; | |
| j = a | |
| } | |
| function Y() { | |
| r = {}; | |
| v = [] | |
| } | |
| function y(b, d, g) { | |
| if (!k[b]) return c; | |
| if (d === N || g === N) { | |
| var f = k[b]; | |
| for (var h in f) | |
| if (f.hasOwnProperty(h)) { | |
| var e = f[h]; | |
| for (var i in e) | |
| if (e.hasOwnProperty(i) && !e[i]) return c | |
| } | |
| return a | |
| } | |
| return k[b][d] === N || k[b][d][g] === N || k[b][d][g] === a | |
| } | |
| function ab(a, b, c) { | |
| if (b === N || c === N) return y(a + 1); | |
| else return y(a + 1, 2 * b, 2 * c) && y(a + 1, 2 * b, 2 * c + 1) && y(a + 1, 2 * b + 1, 2 * c) && y(a + 1, 2 * b + 1, 2 * c + 1) | |
| } | |
| function V(a, b, d, c) { | |
| if (!k[a]) { | |
| q.error("Setting coverage for a tile before its level's coverage has been reset: " + a); | |
| return | |
| } | |
| if (!k[a][b]) k[a][b] = {}; | |
| k[a][b][d] = c | |
| } | |
| function O(a) { | |
| k[a] = {} | |
| } | |
| function P(b, a) { | |
| if (!b) return a; | |
| if (a.visibility > b.visibility) return a; | |
| else if (a.visibility == b.visibility) | |
| if (a.distance < b.distance) return a; | |
| return b | |
| } | |
| function E(b) { | |
| for (var a = n.length - 1; a >= 0; a--) | |
| if (n[a].elmt == b) return a; | |
| return -1 | |
| } | |
| function Q() { | |
| j = c; | |
| var Q = z, | |
| Fb = gb, | |
| gc = B, | |
| xb = p, | |
| D = bb; | |
| while (D.length > 0) { | |
| var e = D.pop(); | |
| e.beingDrawn = c | |
| } | |
| var ub = C.getContainerSize(), | |
| sb = ub.x, | |
| rb = ub.y; | |
| if (xb) { | |
| Q.width = sb; | |
| Q.height = rb; | |
| Fb.clearRect(0, 0, sb, rb) | |
| } else Q.innerHTML = d; | |
| var qb = C.getBounds(a), | |
| s = qb.getTopLeft(), | |
| r = qb.getBottomRight(); | |
| if (!i.wrapHorizontal && (r.x < 0 || s.x > 1)) return; | |
| else if (!i.wrapVertical && (r.y < 0 || s.y > H)) return; | |
| var Rb = R, | |
| F = M, | |
| cc = hb, | |
| Yb = ab, | |
| I = V, | |
| Ob = O, | |
| Kb = y, | |
| Sb = X, | |
| Nb = K, | |
| bc = u === A.CHROME, | |
| ec = g.abs, | |
| hc = g.ceil, | |
| jb = g.floor, | |
| T = g.log, | |
| lb = g.max, | |
| k = g.min, | |
| q = C.deltaPixelsFromPoints, | |
| E = C.pixelFromPoint, | |
| pb = f.getTileAtPoint, | |
| Tb = i.alwaysBlend, | |
| U = 1e3 * i.blendTime, | |
| Lb = i.immediateRender, | |
| Y = i.minZoomDimension, | |
| fc = i.minImageRatio, | |
| W = i.wrapHorizontal, | |
| Z = i.wrapVertical, | |
| vb = i.wrapOverlays; | |
| if (!W) { | |
| s.x = lb(s.x, 0); | |
| r.x = k(r.x, 1) | |
| } | |
| if (!Z) { | |
| s.y = lb(s.y, 0); | |
| r.y = k(r.y, H) | |
| } | |
| var S = b, | |
| L = c, | |
| v = (new Date).getTime(), | |
| mb = C.getCenter(), | |
| Ib = E(mb), | |
| Xb = q(F(0), c).x, | |
| nb = Lb ? 1 : Xb; | |
| Y = Y || 64; | |
| var J = lb(eb, jb(T(Y) / T(2))), | |
| Wb = q(F(0), a).x, | |
| tb = k(db, jb(T(Wb / G) / T(2))); | |
| J = k(J, tb); | |
| for (var h = tb; h >= J; h--) { | |
| var zb = c, | |
| ob = q(F(h), a).x; | |
| if (!L && ob >= G || h == J) { | |
| zb = a; | |
| L = a | |
| } else if (!L) continue; | |
| Ob(h); | |
| var Pb = k(1, (ob - t) / t), | |
| Jb = q(F(h), c).x, | |
| Mb = nb / ec(nb - Jb), | |
| Hb = pb(h, s), | |
| w = pb(h, r), | |
| Eb = Rb(h), | |
| Ab = Eb.x, | |
| Bb = Eb.y; | |
| if (!W) w.x = k(w.x, Ab - 1); | |
| if (!Z) w.y = k(w.y, Bb - 1); | |
| for (var l = Hb.x; l <= w.x; l++) | |
| for (var o = Hb.y; o <= w.y; o++) { | |
| var e = cc(h, l, o, v, Ab, Bb), | |
| fb = zb; | |
| I(h, l, o, c); | |
| if (!e.exists) continue; | |
| if (L && !fb) | |
| if (Yb(h, l, o)) I(h, l, o, a); | |
| else fb = a; | |
| if (!fb) continue; | |
| var Db = e.bounds.getTopLeft(), | |
| wb = e.bounds.getSize(), | |
| Zb = E(Db, a), | |
| kb = q(wb, a); | |
| if (!Sb) kb = kb.plus(new m(1, 1)); | |
| var ac = E(Db, c), | |
| dc = q(wb, c), | |
| Vb = ac.plus(dc.divide(2)), | |
| Qb = Ib.distanceTo(Vb); | |
| e.position = Zb; | |
| e.size = kb; | |
| e.distance = Qb; | |
| e.visibility = Mb; | |
| if (e.loaded) { | |
| if (!e.blendStart) e.blendStart = v; | |
| var yb = v - e.blendStart, | |
| ib = U === 0 ? 1 : k(1, yb / U); | |
| if (Tb) ib *= Pb; | |
| e.opacity = ib; | |
| D.push(e); | |
| if (ib >= 1) { | |
| I(h, l, o, a); | |
| bc && e.lastDrawnTime !== Nb && I(h, l, o, c) | |
| } else if (yb < U) j = a; | |
| e.lastDrawnTime = v | |
| } else if (!e.loading) S = P(S, e) | |
| } | |
| if (Kb(h)) break | |
| } | |
| for (var x = D.length - 1; x >= 0; x--) { | |
| var e = D[x]; | |
| if (xb) e.drawCanvas(Fb); | |
| else e.drawHTML(Q); | |
| e.beingDrawn = a | |
| } | |
| for (var Ub = n.length, x = 0; x < Ub; x++) { | |
| var N = n[x], | |
| Gb = N.bounds, | |
| Cb = Gb.getTopLeft(); | |
| if (vb && W) Cb.x += jb(mb.x); | |
| if (vb && Z); | |
| N.position = E(Cb, a); | |
| N.size = q(Gb.getSize(), a); | |
| N.drawHTML(B) | |
| } | |
| if (S) { | |
| cb(S, v); | |
| j = a | |
| } | |
| K = v | |
| } | |
| h.addOverlay = function(b, d, c) { | |
| var b = e.getElement(b); | |
| if (E(b) >= 0) return; | |
| n.push(new x(b, d, c)); | |
| j = a | |
| }; | |
| h.updateOverlay = function(b, f, d) { | |
| var b = e.getElement(b), | |
| c = E(b); | |
| if (c >= 0) { | |
| n[c].update(f, d); | |
| j = a | |
| } | |
| }; | |
| h.removeOverlay = function(c) { | |
| var c = e.getElement(c), | |
| b = E(c); | |
| if (b >= 0) { | |
| n[b].destroy(); | |
| n.splice(b, 1); | |
| j = a | |
| } | |
| }; | |
| h.clearOverlays = function() { | |
| while (n.length > 0) { | |
| n.pop().destroy(); | |
| j = a | |
| } | |
| }; | |
| h.needsUpdate = function() { | |
| return j | |
| }; | |
| h.numTilesLoaded = function() { | |
| return v.length | |
| }; | |
| h.reset = function() { | |
| Y(); | |
| L = (new Date).getTime(); | |
| j = a | |
| }; | |
| h.update = function() { | |
| J.beginUpdate(); | |
| I = a; | |
| Q(); | |
| I = c; | |
| J.endUpdate() | |
| }; | |
| h.idle = function() {} | |
| } | |
| })(); | |
| var Y, G; | |
| (function() { | |
| var L = "----seadragon----", | |
| Q = e.getBrowser(); | |
| G = v.ControlAnchor = { | |
| NONE: 0, | |
| TOP_LEFT: 1, | |
| TOP_RIGHT: 2, | |
| BOTTOM_RIGHT: 3, | |
| BOTTOM_LEFT: 4 | |
| }; | |
| function P(c, b, a) { | |
| if (b == G.TOP_RIGHT || b == G.BOTTOM_RIGHT) a.insertBefore(c, a.firstChild); | |
| else a.appendChild(c) | |
| } | |
| function f(f, c, d) { | |
| var b = this, | |
| a = e.makeNeutralElement(F); | |
| b.elmt = f; | |
| b.anchor = c; | |
| b.container = d; | |
| b.wrapper = a; | |
| a.style.display = C; | |
| a.appendChild(f); | |
| if (c == G.NONE) a.style.width = a.style.height = l; | |
| P(a, c, d) | |
| } | |
| f.prototype.destroy = function() { | |
| var a = this; | |
| a.wrapper.removeChild(a.elmt); | |
| a.container.removeChild(a.wrapper) | |
| }; | |
| f.prototype.isVisible = function() { | |
| return this.wrapper.style.display != B | |
| }; | |
| f.prototype.setVisible = function(a) { | |
| this.wrapper.style.display = a ? C : B | |
| }; | |
| f.prototype.setOpacity = function(b) { | |
| if (this.elmt[L] && Q == A.IE) e.setElementOpacity(this.elmt, b, a); | |
| else e.setElementOpacity(this.wrapper, b, a) | |
| }; | |
| var k = "fullpage", | |
| E = "home", | |
| t = "zoomin", | |
| n = "zoomout", | |
| J = "_rest.png", | |
| y = "_grouphover.png", | |
| z = "_hover.png", | |
| D = "_pressed.png"; | |
| function N(d) { | |
| var j = b, | |
| f = c, | |
| q = b, | |
| l = b; | |
| function H() { | |
| d.viewport && d.viewport.goHome() | |
| } | |
| function w() { | |
| d.setFullPage(!d.isFullPage()); | |
| j.emulateExit(); | |
| d.viewport && d.viewport.applyConstraints() | |
| } | |
| function s() { | |
| l = (new Date).getTime(); | |
| q = i.zoomPerSecond; | |
| f = a; | |
| o() | |
| } | |
| function r() { | |
| l = (new Date).getTime(); | |
| q = 1 / i.zoomPerSecond; | |
| f = a; | |
| o() | |
| } | |
| function m() { | |
| f = c | |
| } | |
| function o() { | |
| h.setTimeout(F, p) | |
| } | |
| function F() { | |
| if (f && d.viewport) { | |
| var a = (new Date).getTime(), | |
| c = a - l, | |
| b = g.pow(q, c / 1e3); | |
| d.viewport.zoomBy(b); | |
| d.viewport.applyConstraints(); | |
| l = a; | |
| o() | |
| } | |
| } | |
| function v() { | |
| if (d.viewport) { | |
| f = c; | |
| d.viewport.zoomBy(i.zoomPerClick / 1); | |
| d.viewport.applyConstraints() | |
| } | |
| } | |
| function u() { | |
| if (d.viewport) { | |
| f = c; | |
| d.viewport.zoomBy(1 / i.zoomPerClick); | |
| d.viewport.applyConstraints() | |
| } | |
| } | |
| function B() { | |
| j.emulateEnter(); | |
| j.emulateExit() | |
| } | |
| function e(b, a) { | |
| return i.imagePath + b + a | |
| } | |
| var I = new O(x.getString("Tooltips.ZoomIn"), e(t, J), e(t, y), e(t, z), e(t, D), s, m, v, s, m), | |
| C = new O(x.getString("Tooltips.ZoomOut"), e(n, J), e(n, y), e(n, z), e(n, D), r, m, u, r, m), | |
| G = new O(x.getString("Tooltips.Home"), e(E, J), e(E, y), e(E, z), e(E, D), b, H, b, b, b), | |
| A = new O(x.getString("Tooltips.FullPage"), e(k, J), e(k, y), e(k, z), e(k, D), b, w, b, b, b); | |
| j = new R([I, C, G, A]); | |
| j.elmt[L] = a; | |
| d.addEventListener("open", B); | |
| return j.elmt | |
| } | |
| Y = v.Viewer = function(v) { | |
| var n = this, | |
| t = n, | |
| P = e.getElement(v), | |
| v = e.makeNeutralElement(s), | |
| E = e.makeNeutralElement(s), | |
| eb = e.makeNeutralElement(s), | |
| fb = e.makeNeutralElement(s), | |
| db = e.makeNeutralElement(s), | |
| cb = e.makeNeutralElement(s), | |
| A = b, | |
| J = b, | |
| k = b, | |
| O = b, | |
| z = new W, | |
| D = new M(E), | |
| S = new M(v), | |
| y = [], | |
| ab = a, | |
| ib = b, | |
| L = b, | |
| kb = 1e3, | |
| Ab = 2e3, | |
| ib = b, | |
| ab = c, | |
| yb = r.body.style.width, | |
| wb = r.body.style.height, | |
| tb = r.body.style.overflow, | |
| ub = r.documentElement.style.overflow, | |
| bb = new m(1, 1), | |
| C = b, | |
| R = 0, | |
| nb = 0, | |
| qb = b, | |
| ob = b, | |
| F = c, | |
| T = c, | |
| Y = c; | |
| n.container = P; | |
| n.elmt = v; | |
| n.source = b; | |
| n.drawer = b; | |
| n.viewport = b; | |
| n.profiler = b; | |
| n.tracker = D; | |
| function Jb() { | |
| var c = E.style, | |
| b = v.style, | |
| g = eb.style, | |
| i = fb.style, | |
| f = db.style, | |
| e = cb.style; | |
| b.width = l; | |
| b.height = l; | |
| b.position = u; | |
| b.left = j; | |
| b.top = j; | |
| b.textAlign = "left"; | |
| c.width = l; | |
| c.height = l; | |
| c.overflow = o; | |
| c.position = w; | |
| c.top = j; | |
| c.left = j; | |
| g.position = i.position = f.position = e.position = w; | |
| g.top = i.top = j; | |
| g.left = e.left = j; | |
| i.right = f.right = j; | |
| e.bottom = f.bottom = j; | |
| D.clickHandler = Fb; | |
| D.pressHandler = Gb; | |
| D.dragHandler = Hb; | |
| D.releaseHandler = Db; | |
| D.scrollHandler = Eb; | |
| D.setTracking(a); | |
| L = N(t); | |
| L.style.marginRight = "4px"; | |
| L.style.marginBottom = "4px"; | |
| t.addControl(L, G.BOTTOM_RIGHT); | |
| S.enterHandler = lb; | |
| S.exitHandler = pb; | |
| S.releaseHandler = Bb; | |
| S.setTracking(a); | |
| h.setTimeout(Q, 1); | |
| v.appendChild(E); | |
| v.appendChild(eb); | |
| v.appendChild(fb); | |
| v.appendChild(db); | |
| v.appendChild(cb); | |
| P.innerHTML = d; | |
| P.appendChild(v) | |
| } | |
| function Z(f) { | |
| var a = "normal", | |
| c = r.createTextNode(f); | |
| E.innerHTML = d; | |
| E.appendChild(e.makeCenteredNode(c)); | |
| var b = c.parentNode.style; | |
| b.fontFamily = "verdana"; | |
| b.fontSize = "13px"; | |
| b.fontSizeAdjust = B; | |
| b.fontStyle = a; | |
| b.fontStretch = a; | |
| b.fontVariant = a; | |
| b.fontWeight = a; | |
| b.lineHeight = "1em"; | |
| b.textAlign = "center"; | |
| b.textDecoration = B | |
| } | |
| function vb() { | |
| A && zb(); | |
| R = (new Date).getTime(); | |
| h.setTimeout(function() { | |
| R > nb && Z(x.getString("Messages.Loading")) | |
| }, 2e3); | |
| return R | |
| } | |
| function gb(g, b, f) { | |
| nb = (new Date).getTime(); | |
| if (g < R) { | |
| q.log("Ignoring out-of-date open."); | |
| z.trigger("ignore", t); | |
| return | |
| } else if (!b) { | |
| Z(f); | |
| z.trigger("error", t); | |
| return | |
| } | |
| E.innerHTML = d; | |
| C = e.getElementSize(v); | |
| if (C.x === 0 || C.y === 0) { | |
| h.setTimeout(function() { | |
| gb(g, b, f) | |
| }, p); | |
| return | |
| } | |
| A = b; | |
| k = new X(C, A.dimensions); | |
| J = new V(A, k, E); | |
| O = new U; | |
| t.source = A; | |
| t.viewport = k; | |
| t.drawer = J; | |
| t.profiler = O; | |
| F = c; | |
| T = a; | |
| rb(Ib); | |
| z.trigger("open", t) | |
| } | |
| function zb() { | |
| t.source = A = b; | |
| t.viewport = k = b; | |
| t.drawer = J = b; | |
| t.profiler = O = b; | |
| E.innerHTML = d | |
| } | |
| function rb(c, a) { | |
| if (F) return h.setTimeout(c, 1); | |
| var b = (new Date).getTime(), | |
| a = a ? a : b, | |
| d = a + 1e3 / 60, | |
| e = g.max(1, d - b); | |
| return h.setTimeout(c, e) | |
| } | |
| function xb() { | |
| if (!A) return; | |
| O.beginUpdate(); | |
| var b = e.getElementSize(v); | |
| if (!b.equals(C) && b.x > 0 && b.y > 0) { | |
| k.resize(b, a); | |
| C = b; | |
| z.trigger("resize", t) | |
| } | |
| var d = k.update(); | |
| if (!F && d) { | |
| z.trigger("animationstart", t); | |
| hb() | |
| } | |
| if (d) { | |
| J.update(); | |
| z.trigger("animation", t) | |
| } else if (T || J.needsUpdate()) { | |
| J.update(); | |
| T = c | |
| } else J.idle(); | |
| if (F && !d) { | |
| z.trigger("animationfinish", t); | |
| !Y && Q() | |
| } | |
| F = d; | |
| O.endUpdate() | |
| } | |
| function Ib() { | |
| if (!A) return; | |
| var a = (new Date).getTime(); | |
| xb(); | |
| rb(arguments.callee, a) | |
| } | |
| function mb(b) { | |
| for (var a = y.length - 1; a >= 0; a--) | |
| if (y[a].elmt == b) return a; | |
| return -1 | |
| } | |
| function jb() { | |
| h.setTimeout(Cb, 20) | |
| } | |
| function Cb() { | |
| if (ab) { | |
| var c = (new Date).getTime(), | |
| d = c - ib, | |
| a = 1 - d / Ab; | |
| a = g.min(1, a); | |
| a = g.max(0, a); | |
| for (var b = y.length - 1; b >= 0; b--) y[b].setOpacity(a); | |
| a > 0 && jb() | |
| } | |
| } | |
| function hb() { | |
| ab = c; | |
| for (var a = y.length - 1; a >= 0; a--) y[a].setOpacity(1) | |
| } | |
| function Q() { | |
| if (!i.autoHideControls) return; | |
| ab = a; | |
| ib = (new Date).getTime() + kb; | |
| h.setTimeout(jb, kb) | |
| } | |
| function lb() { | |
| Y = a; | |
| hb() | |
| } | |
| function pb(e, d, a) { | |
| if (!a) { | |
| Y = c; | |
| !F && Q() | |
| } | |
| } | |
| function Bb(e, d, b, a) { | |
| if (!a) { | |
| Y = c; | |
| !F && Q() | |
| } | |
| } | |
| function Fb(g, c, e, f) { | |
| if (k && e) { | |
| var b = i.zoomPerClick, | |
| d = f ? 1 / b : b; | |
| k.zoomBy(d, k.pointFromPixel(c, a)); | |
| k.applyConstraints() | |
| } | |
| } | |
| function Gb(b, a) { | |
| if (k) { | |
| qb = a; | |
| ob = k.getCenter() | |
| } | |
| } | |
| function Hb(f, d, e) { | |
| if (k) | |
| if (i.constrainDuringPan) { | |
| var b = d.minus(qb), | |
| c = k.deltaPointsFromPixels(b.negate(), a); | |
| k.panTo(ob.plus(c)); | |
| k.applyConstraints() | |
| } else k.panBy(k.deltaPointsFromPixels(e.negate(), a)) | |
| } | |
| function Db(d, c, a) { | |
| a && k && k.applyConstraints() | |
| } | |
| function Eb(e, b, d) { | |
| if (k) { | |
| var c = g.pow(i.zoomPerScroll, d); | |
| k.zoomBy(c, k.pointFromPixel(b, a)); | |
| k.applyConstraints() | |
| } | |
| } | |
| function sb(a) { | |
| a = e.getEvent(a); | |
| a.keyCode === 27 && t.setFullPage(c) | |
| } | |
| n.isOpen = function() { | |
| return !!A | |
| }; | |
| n.openDzi = function(a, f) { | |
| var d = vb(), | |
| c = e.createCallback(b, gb, d); | |
| switch (typeof a) { | |
| case I: | |
| K.createFromXml(a, f, c); | |
| break; | |
| default: | |
| K.createFromJson(a, c) | |
| } | |
| }; | |
| n.openTileSource = function(b) { | |
| var a = vb(); | |
| h.setTimeout(function() { | |
| gb(a, b) | |
| }, 1) | |
| }; | |
| n.close = function() { | |
| if (!A) return; | |
| zb() | |
| }; | |
| n.addControl = function(a, d) { | |
| var a = e.getElement(a); | |
| if (mb(a) >= 0) return; | |
| var c = b; | |
| switch (d) { | |
| case G.TOP_RIGHT: | |
| c = fb; | |
| a.style.position = u; | |
| break; | |
| case G.BOTTOM_RIGHT: | |
| c = db; | |
| a.style.position = u; | |
| break; | |
| case G.BOTTOM_LEFT: | |
| c = cb; | |
| a.style.position = u; | |
| break; | |
| case G.TOP_LEFT: | |
| c = eb; | |
| a.style.position = u; | |
| break; | |
| case G.NONE: | |
| default: | |
| c = v; | |
| a.style.position = w | |
| } | |
| y.push(new f(a, d, c)) | |
| }; | |
| n.removeControl = function(b) { | |
| var b = e.getElement(b), | |
| a = mb(b); | |
| if (a >= 0) { | |
| y[a].destroy(); | |
| y.splice(a, 1) | |
| } | |
| }; | |
| n.clearControls = function() { | |
| while (y.length > 0) y.pop().destroy() | |
| }; | |
| n.getNavControl = function() { | |
| return L | |
| }; | |
| n.isDashboardEnabled = function() { | |
| for (var b = y.length - 1; b >= 0; b--) | |
| if (y[b].isVisible()) return a; | |
| return c | |
| }; | |
| n.isFullPage = function() { | |
| return v.parentNode == r.body | |
| }; | |
| n.isMouseNavEnabled = function() { | |
| return D.isTracking() | |
| }; | |
| n.isVisible = function() { | |
| return v.style.visibility != o | |
| }; | |
| n.setDashboardEnabled = function(b) { | |
| for (var a = y.length - 1; a >= 0; a--) y[a].setVisible(b) | |
| }; | |
| n.setFullPage = function(j) { | |
| if (j == t.isFullPage()) return; | |
| var q = r.body, | |
| c = q.style, | |
| i = r.documentElement.style, | |
| f = v.style, | |
| h = E.style; | |
| if (j) { | |
| tb = c.overflow; | |
| ub = i.overflow; | |
| c.overflow = o; | |
| i.overflow = o; | |
| yb = c.width; | |
| wb = c.height; | |
| c.width = l; | |
| c.height = l; | |
| h.backgroundColor = "black"; | |
| h.color = "white"; | |
| f.position = H; | |
| f.zIndex = "99999999"; | |
| q.appendChild(v); | |
| C = e.getWindowSize(); | |
| e.addEvent(r, "keydown", sb); | |
| lb() | |
| } else { | |
| c.overflow = tb; | |
| i.overflow = ub; | |
| c.width = yb; | |
| c.height = wb; | |
| h.backgroundColor = d; | |
| h.color = d; | |
| f.position = u; | |
| f.zIndex = d; | |
| P.appendChild(v); | |
| C = e.getElementSize(P); | |
| e.removeEvent(r, "keydown", sb); | |
| pb() | |
| } | |
| if (k) { | |
| var p = k.getBounds(); | |
| k.resize(C); | |
| var n = k.getBounds(); | |
| if (j) bb = new m(n.width / p.width, n.height / p.height); | |
| else { | |
| k.update(); | |
| k.zoomBy(g.max(bb.x, bb.y), b, a) | |
| } | |
| T = a; | |
| z.trigger("resize", t); | |
| xb() | |
| } | |
| }; | |
| n.setMouseNavEnabled = function(a) { | |
| D.setTracking(a) | |
| }; | |
| n.setVisible = function(a) { | |
| v.style.visibility = a ? d : o | |
| }; | |
| n.showMessage = function(a, b) { | |
| if (!b) { | |
| Z(a); | |
| return | |
| } | |
| h.setTimeout(function() { | |
| !t.isOpen() && Z(a) | |
| }, b) | |
| }; | |
| n.addEventListener = function(a, b) { | |
| z.addListener(a, b) | |
| }; | |
| n.removeEventListener = function(a, b) { | |
| z.removeListener(a, b) | |
| }; | |
| Jb() | |
| } | |
| })(); | |
| })(window, document, Math); | |
| (function() { | |
| var e = "_blank", | |
| d = "4px", | |
| b = false, | |
| i = "left", | |
| f = "none", | |
| g = "span", | |
| a = true, | |
| c = null, | |
| p = "Tooltips.AboutButton", | |
| j = "About.MainUrl", | |
| r = "/web/20140802003648/http://seadragon.com/", | |
| o = "About.LogoUrl", | |
| n = "About.Description", | |
| m = "About.Header"; | |
| if (typeof Seadragon.BrandedViewer == "function") return; | |
| Seadragon.Strings.setString(m, "Welcome to Seadragon."); | |
| Seadragon.Strings.setString(n, "Use your mouse and scroll wheel to pan and zoom around the image. To learn more, visit:"); | |
| Seadragon.Strings.setString(o, r); | |
| Seadragon.Strings.setString(j, r); | |
| Seadragon.Strings.setString(p, "About Seadragon"); | |
| var q = "../branding/", | |
| y = "----seadragon----", | |
| x = "about", | |
| C = "_rest.png", | |
| z = "_grouphover.png", | |
| A = "_hover.png", | |
| B = "_pressed.png"; | |
| function k(a) { | |
| return Seadragon.Config.imagePath + q + x + a | |
| } | |
| function v(d) { | |
| var j = new Seadragon.Button(Seadragon.Strings.getString(p), k(C), k(z), k(A), k(B), c, f, c, c, c), | |
| b = new Seadragon.ButtonGroup([j]); | |
| function f() { | |
| d.setAboutScreenVisible(a) | |
| } | |
| function i() { | |
| b.emulateEnter(); | |
| b.emulateExit() | |
| } | |
| b.elmt[y] = a; | |
| d.addEventListener("open", i); | |
| var e = b.elmt, | |
| h = Seadragon.Utils.makeNeutralElement(g); | |
| e.appendChild(h); | |
| return e | |
| } | |
| var w = "logo_big.png", | |
| s = 70, | |
| t = 18; | |
| function l(a) { | |
| Seadragon.Utils.addEvent(a, "mouseup", Seadragon.Utils.stopEvent); | |
| Seadragon.Utils.addEvent(a, "click", Seadragon.Utils.stopEvent) | |
| } | |
| function h(c) { | |
| var b = "normal", | |
| a = c.style; | |
| a.color = "white"; | |
| a.fontFamily = "verdana"; | |
| a.fontSize = "13px"; | |
| a.fontSizeAdjust = f; | |
| a.fontStyle = b; | |
| a.fontStretch = b; | |
| a.fontVariant = b; | |
| a.fontWeight = b; | |
| a.lineHeight = "1em"; | |
| a.textAlign = i; | |
| a.textDecoration = f | |
| } | |
| function u(J) { | |
| var x = "100%", | |
| k = "0px", | |
| B = "absolute", | |
| c = "div", | |
| g = Seadragon.Utils.makeNeutralElement(c), | |
| H = new Seadragon.MouseTracker(g); | |
| g.style.position = B; | |
| g.style.left = g.style.top = k; | |
| g.style.width = g.style.height = x; | |
| H.setTracking(a); | |
| H.clickHandler = function(d, c, a) { | |
| a && J.setAboutScreenVisible(b) | |
| }; | |
| var p = Seadragon.Utils.makeNeutralElement(c), | |
| u = Seadragon.Utils.makeNeutralElement(c), | |
| A = Seadragon.Utils.makeNeutralElement(c), | |
| D = Seadragon.Utils.makeNeutralElement(c); | |
| p.style.position = A.style.position = u.style.position = D.style.position = B; | |
| p.style.background = "black"; | |
| p.style.left = p.style.top = k; | |
| p.style.width = p.style.height = x; | |
| Seadragon.Utils.setElementOpacity(p, .7); | |
| A.style.left = k; | |
| A.style.top = "20px"; | |
| u.style.left = u.style.top = k; | |
| u.style.width = u.style.height = x; | |
| u.style.textAlign = i; | |
| D.style.right = d; | |
| D.style.bottom = "8px"; | |
| g.appendChild(p); | |
| g.appendChild(u); | |
| g.appendChild(A); | |
| g.appendChild(D); | |
| var v = Seadragon.Utils.makeNeutralElement(c), | |
| y = Seadragon.Utils.makeNeutralElement("p"), | |
| C = Seadragon.Utils.makeNeutralElement("p"), | |
| E = Seadragon.Utils.makeNeutralElement("p"), | |
| r = Seadragon.Utils.makeNeutralElement("a"); | |
| y.appendChild(document.createTextNode(Seadragon.Strings.getString(m))); | |
| C.appendChild(document.createTextNode(Seadragon.Strings.getString(n))); | |
| r.appendChild(document.createTextNode(Seadragon.Strings.getString(j))); | |
| h(y); | |
| h(C); | |
| h(E); | |
| h(r); | |
| y.style.fontWeight = "bold"; | |
| y.style.paddingTop = "2em"; | |
| C.style.margin = "1em auto"; | |
| r.href = Seadragon.Strings.getString(j); | |
| r.target = e; | |
| r.style.color = "yellow"; | |
| r.style.textDecoration = f; | |
| l(r); | |
| var F = s, | |
| G = t; | |
| if (Seadragon.Utils.getBrowser() == Seadragon.Browser.IE && Seadragon.Utils.getBrowserVersion() < 8) G -= (100 - F) / 2; | |
| v.style.width = F + "%"; | |
| v.style.marginLeft = G + "%"; | |
| v.style.textAlign = i; | |
| E.appendChild(r); | |
| v.appendChild(y); | |
| v.appendChild(C); | |
| v.appendChild(E); | |
| u.appendChild(Seadragon.Utils.makeCenteredNode(v)); | |
| var z = Seadragon.Utils.makeNeutralElement("a"), | |
| I = Seadragon.Utils.makeTransparentImage(Seadragon.Config.imagePath + q + w); | |
| z.href = Seadragon.Strings.getString(o); | |
| z.target = e; | |
| l(z); | |
| z.appendChild(I); | |
| A.appendChild(z); | |
| return g | |
| } | |
| Seadragon.BrandedViewer = function(r) { | |
| var j = "animationfinish", | |
| i = new Seadragon.Viewer(r), | |
| n = v(i), | |
| m = u(i), | |
| k = b; | |
| function s() { | |
| i.addControl(n, Seadragon.ControlAnchor.BOTTOM_LEFT); | |
| n.style.marginLeft = d; | |
| n.style.marginBottom = d; | |
| i.addEventListener("open", o) | |
| } | |
| function o() { | |
| var b = i.viewport, | |
| d = b.getZoom(); | |
| b.zoomBy(.01, c, a); | |
| b.update(); | |
| k = a; | |
| window.setTimeout(function() { | |
| if (b !== i.viewport) return; | |
| b.zoomTo(d * (Seadragon.Config.logarithmicZoom ? 1.65 : 1.15)); | |
| window.setTimeout(function() { | |
| k && b === i.viewport && a(d); | |
| i.addEventListener(j, q) | |
| }, Seadragon.Config.animationTime * 1e3 / 2); | |
| var a = p(b, "zoomTo") | |
| }, 50) | |
| } | |
| function p(a, c) { | |
| var d = a[c]; | |
| a[c] = function() { | |
| k = b; | |
| d.apply(a, arguments); | |
| a[c] = d | |
| }; | |
| return d | |
| } | |
| function q(a) { | |
| k = b; | |
| a.removeEventListener(j, arguments.callee) | |
| } | |
| s(); | |
| i.getLogoControl = function() { | |
| return n | |
| }; | |
| i.getAboutScreen = function() { | |
| return m | |
| }; | |
| i.isAboutScreenVisible = function() { | |
| return m.parentNode == i.elmt | |
| }; | |
| i.isIntroAnimating = function() { | |
| return k | |
| }; | |
| i.setAboutScreenVisible = function(a) { | |
| if (a == i.isAboutScreenVisible()) return; | |
| if (a) i.elmt.appendChild(m); | |
| else i.elmt.removeChild(m) | |
| }; | |
| i.addAboutFooterLink = function(d, i) { | |
| var c = m.lastChild, | |
| a = Seadragon.Utils.makeNeutralElement("a"); | |
| h(a); | |
| l(a); | |
| a.href = d; | |
| a.target = e; | |
| a.appendChild(document.createTextNode(i || d)); | |
| a.style.color = "yellow"; | |
| a.style.textDecoration = f; | |
| if (c.firstChild) { | |
| var b = Seadragon.Utils.makeNeutralElement(g); | |
| h(b); | |
| b.style.color = "gray"; | |
| b.appendChild(document.createTextNode(" | ")); | |
| c.appendChild(b) | |
| } | |
| c.appendChild(a) | |
| }; | |
| i.setLogoCaption = function(i, c) { | |
| var f = n.lastChild, | |
| b = Seadragon.Utils.makeNeutralElement(c ? "a" : g), | |
| a = b.style; | |
| h(b); | |
| a.color = "#ccc"; | |
| a.fontSize = "10px"; | |
| a.position = "relative"; | |
| a.bottom = "8px"; | |
| a.left = d; | |
| b.appendChild(document.createTextNode(i)); | |
| if (c) { | |
| b.href = c; | |
| b.target = e; | |
| a.color = "#cc0" | |
| } | |
| f.innerHTML = ""; | |
| f.appendChild(b) | |
| }; | |
| return i | |
| } | |
| })(); | |
| (function() { | |
| if (!window.Silverlight) { | |
| window.Silverlight = {}; | |
| } else { | |
| return; | |
| } | |
| Silverlight._silverlightCount = 0; | |
| Silverlight.__onSilverlightInstalledCalled = false; | |
| Silverlight.fwlinkRoot = '/web/20140802003648/http://go2.microsoft.com/fwlink/?LinkID='; | |
| Silverlight.__installationEventFired = false; | |
| Silverlight.onGetSilverlight = null; | |
| Silverlight.onSilverlightInstalled = function() { | |
| window.location.reload(false); | |
| }; | |
| Silverlight.isInstalled = function(version) { | |
| if (version == undefined) | |
| version = null; | |
| var isVersionSupported = false; | |
| var container = null; | |
| try { | |
| var control = null; | |
| var tryNS = false; | |
| if (window.ActiveXObject) { | |
| try { | |
| control = new ActiveXObject('AgControl.AgControl'); | |
| if (version === null) { | |
| isVersionSupported = true; | |
| } else if (control.IsVersionSupported(version)) { | |
| isVersionSupported = true; | |
| } | |
| control = null; | |
| } catch (e) { | |
| tryNS = true; | |
| } | |
| } else { | |
| tryNS = true; | |
| } | |
| if (tryNS) { | |
| var plugin = navigator.plugins["Silverlight Plug-In"]; | |
| if (plugin) { | |
| if (version === null) { | |
| isVersionSupported = true; | |
| } else { | |
| var actualVer = plugin.description; | |
| if (actualVer === "1.0.30226.2") | |
| actualVer = "2.0.30226.2"; | |
| var actualVerArray = actualVer.split("."); | |
| while (actualVerArray.length > 3) { | |
| actualVerArray.pop(); | |
| } | |
| while (actualVerArray.length < 4) { | |
| actualVerArray.push(0); | |
| } | |
| var reqVerArray = version.split("."); | |
| while (reqVerArray.length > 4) { | |
| reqVerArray.pop(); | |
| } | |
| var requiredVersionPart; | |
| var actualVersionPart; | |
| var index = 0; | |
| do { | |
| requiredVersionPart = parseInt(reqVerArray[index]); | |
| actualVersionPart = parseInt(actualVerArray[index]); | |
| index++; | |
| } | |
| while (index < reqVerArray.length && requiredVersionPart === actualVersionPart); | |
| if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart)) { | |
| isVersionSupported = true; | |
| } | |
| } | |
| } | |
| } | |
| } catch (e) { | |
| isVersionSupported = false; | |
| } | |
| return isVersionSupported; | |
| }; | |
| Silverlight.WaitForInstallCompletion = function() { | |
| if (!Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled) { | |
| try { | |
| navigator.plugins.refresh(); | |
| } catch (e) {} | |
| if (Silverlight.isInstalled(null) && !Silverlight.__onSilverlightInstalledCalled) { | |
| Silverlight.onSilverlightInstalled(); | |
| Silverlight.__onSilverlightInstalledCalled = true; | |
| } else { | |
| setTimeout(Silverlight.WaitForInstallCompletion, 3000); | |
| } | |
| } | |
| }; | |
| Silverlight.__startup = function() { | |
| navigator.plugins.refresh(); | |
| Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null); | |
| if (!Silverlight.isBrowserRestartRequired) { | |
| Silverlight.WaitForInstallCompletion(); | |
| if (!Silverlight.__installationEventFired) { | |
| Silverlight.onInstallRequired(); | |
| Silverlight.__installationEventFired = true; | |
| } | |
| } else if (window.navigator.mimeTypes) { | |
| var mimeSL2 = navigator.mimeTypes["application/x-silverlight-2"]; | |
| var mimeSL2b2 = navigator.mimeTypes["application/x-silverlight-2-b2"]; | |
| var mimeSL2b1 = navigator.mimeTypes["application/x-silverlight-2-b1"]; | |
| var mimeHighestBeta = mimeSL2b1; | |
| if (mimeSL2b2) | |
| mimeHighestBeta = mimeSL2b2; | |
| if (!mimeSL2 && (mimeSL2b1 || mimeSL2b2)) { | |
| if (!Silverlight.__installationEventFired) { | |
| Silverlight.onUpgradeRequired(); | |
| Silverlight.__installationEventFired = true; | |
| } | |
| } else if (mimeSL2 && mimeHighestBeta) { | |
| if (mimeSL2.enabledPlugin && mimeHighestBeta.enabledPlugin) { | |
| if (mimeSL2.enabledPlugin.description != mimeHighestBeta.enabledPlugin.description) { | |
| if (!Silverlight.__installationEventFired) { | |
| Silverlight.onRestartRequired(); | |
| Silverlight.__installationEventFired = true; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (!Silverlight.disableAutoStartup) { | |
| if (window.removeEventListener) { | |
| window.removeEventListener('load', Silverlight.__startup, false); | |
| } else { | |
| window.detachEvent('onload', Silverlight.__startup); | |
| } | |
| } | |
| }; | |
| if (!Silverlight.disableAutoStartup) { | |
| if (window.addEventListener) { | |
| window.addEventListener('load', Silverlight.__startup, false); | |
| } else { | |
| window.attachEvent('onload', Silverlight.__startup); | |
| } | |
| } | |
| Silverlight.createObject = function(source, parentElement, id, properties, events, initParams, userContext) { | |
| var slPluginHelper = new Object(); | |
| var slProperties = properties; | |
| var slEvents = events; | |
| slPluginHelper.version = slProperties.version; | |
| slProperties.source = source; | |
| slPluginHelper.alt = slProperties.alt; | |
| if (initParams) | |
| slProperties.initParams = initParams; | |
| if (slProperties.isWindowless && !slProperties.windowless) | |
| slProperties.windowless = slProperties.isWindowless; | |
| if (slProperties.framerate && !slProperties.maxFramerate) | |
| slProperties.maxFramerate = slProperties.framerate; | |
| if (id && !slProperties.id) | |
| slProperties.id = id; | |
| delete slProperties.ignoreBrowserVer; | |
| delete slProperties.inplaceInstallPrompt; | |
| delete slProperties.version; | |
| delete slProperties.isWindowless; | |
| delete slProperties.framerate; | |
| delete slProperties.data; | |
| delete slProperties.src; | |
| delete slProperties.alt; | |
| if (Silverlight.isInstalled(slPluginHelper.version)) { | |
| for (var name in slEvents) { | |
| if (slEvents[name]) { | |
| if (name == "onLoad" && typeof slEvents[name] == "function" && slEvents[name].length != 1) { | |
| var onLoadHandler = slEvents[name]; | |
| slEvents[name] = function(sender) { | |
| return onLoadHandler(document.getElementById(id), userContext, sender) | |
| }; | |
| } | |
| var handlerName = Silverlight.__getHandlerName(slEvents[name]); | |
| if (handlerName != null) { | |
| slProperties[name] = handlerName; | |
| slEvents[name] = null; | |
| } else { | |
| throw "typeof events." + name + " must be 'function' or 'string'"; | |
| } | |
| } | |
| } | |
| slPluginHTML = Silverlight.buildHTML(slProperties); | |
| } else { | |
| slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper); | |
| } | |
| if (parentElement) { | |
| parentElement.innerHTML = slPluginHTML; | |
| } else { | |
| return slPluginHTML; | |
| } | |
| }; | |
| Silverlight.buildHTML = function(slProperties) { | |
| var htmlBuilder = []; | |
| htmlBuilder.push('<object type=\"application/x-silverlight\" data="data:application/x-silverlight,"'); | |
| if (slProperties.id != null) { | |
| htmlBuilder.push(' id="' + Silverlight.HtmlAttributeEncode(slProperties.id) + '"'); | |
| } | |
| if (slProperties.width != null) { | |
| htmlBuilder.push(' width="' + slProperties.width + '"'); | |
| } | |
| if (slProperties.height != null) { | |
| htmlBuilder.push(' height="' + slProperties.height + '"'); | |
| } | |
| htmlBuilder.push(' >'); | |
| delete slProperties.id; | |
| delete slProperties.width; | |
| delete slProperties.height; | |
| for (var name in slProperties) { | |
| if (slProperties[name]) { | |
| htmlBuilder.push('<param name="' + Silverlight.HtmlAttributeEncode(name) + '" value="' + Silverlight.HtmlAttributeEncode(slProperties[name]) + '" />'); | |
| } | |
| } | |
| htmlBuilder.push('<\/object>'); | |
| return htmlBuilder.join(''); | |
| }; | |
| Silverlight.createObjectEx = function(params) { | |
| var parameters = params; | |
| var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context); | |
| if (parameters.parentElement == null) { | |
| return html; | |
| } | |
| }; | |
| Silverlight.buildPromptHTML = function(slPluginHelper) { | |
| var slPluginHTML = ""; | |
| var urlRoot = Silverlight.fwlinkRoot; | |
| var version = slPluginHelper.version; | |
| if (slPluginHelper.alt) { | |
| slPluginHTML = slPluginHelper.alt; | |
| } else { | |
| if (!version) { | |
| version = ""; | |
| } | |
| slPluginHTML = "<a href='javascript:Silverlight.getSilverlight(\"{1}\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>"; | |
| slPluginHTML = slPluginHTML.replace('{1}', version); | |
| slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181'); | |
| } | |
| return slPluginHTML; | |
| }; | |
| Silverlight.getSilverlight = function(version) { | |
| if (Silverlight.onGetSilverlight) { | |
| Silverlight.onGetSilverlight(); | |
| } | |
| var shortVer = ""; | |
| var reqVerArray = String(version).split("."); | |
| if (reqVerArray.length > 1) { | |
| var majorNum = parseInt(reqVerArray[0]); | |
| if (isNaN(majorNum) || majorNum < 2) { | |
| shortVer = "1.0"; | |
| } else { | |
| shortVer = reqVerArray[0] + '.' + reqVerArray[1]; | |
| } | |
| } | |
| var verArg = ""; | |
| if (shortVer.match(/^\d+\056\d+$/)) { | |
| verArg = "&v=" + shortVer; | |
| } | |
| Silverlight.followFWLink("149156" + verArg); | |
| }; | |
| Silverlight.followFWLink = function(linkid) { | |
| top.location = Silverlight.fwlinkRoot + String(linkid); | |
| }; | |
| Silverlight.HtmlAttributeEncode = function(strInput) { | |
| var c; | |
| var retVal = ''; | |
| if (strInput == null) { | |
| return null; | |
| } | |
| for (var cnt = 0; cnt < strInput.length; cnt++) { | |
| c = strInput.charCodeAt(cnt); | |
| if (((c > 96) && (c < 123)) || ((c > 64) && (c < 91)) || ((c > 43) && (c < 58) && (c != 47)) || (c == 95)) { | |
| retVal = retVal + String.fromCharCode(c); | |
| } else { | |
| retVal = retVal + '&#' + c + ';'; | |
| } | |
| } | |
| return retVal; | |
| }; | |
| Silverlight.default_error_handler = function(sender, args) { | |
| var iErrorCode; | |
| var errorType = args.ErrorType; | |
| iErrorCode = args.ErrorCode; | |
| var errMsg = "\nSilverlight error message \n"; | |
| errMsg += "ErrorCode: " + iErrorCode + "\n"; | |
| errMsg += "ErrorType: " + errorType + " \n"; | |
| errMsg += "Message: " + args.ErrorMessage + " \n"; | |
| if (errorType == "ParserError") { | |
| errMsg += "XamlFile: " + args.xamlFile + " \n"; | |
| errMsg += "Line: " + args.lineNumber + " \n"; | |
| errMsg += "Position: " + args.charPosition + " \n"; | |
| } else if (errorType == "RuntimeError") { | |
| if (args.lineNumber != 0) { | |
| errMsg += "Line: " + args.lineNumber + " \n"; | |
| errMsg += "Position: " + args.charPosition + " \n"; | |
| } | |
| errMsg += "MethodName: " + args.methodName + " \n"; | |
| } | |
| alert(errMsg); | |
| }; | |
| Silverlight.__cleanup = function() { | |
| for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) { | |
| window['__slEvent' + i] = null; | |
| } | |
| Silverlight._silverlightCount = 0; | |
| if (window.removeEventListener) { | |
| window.removeEventListener('unload', Silverlight.__cleanup, false); | |
| } else { | |
| window.detachEvent('onunload', Silverlight.__cleanup); | |
| } | |
| }; | |
| Silverlight.__getHandlerName = function(handler) { | |
| var handlerName = ""; | |
| if (typeof handler == "string") { | |
| handlerName = handler; | |
| } else if (typeof handler == "function") { | |
| if (Silverlight._silverlightCount == 0) { | |
| if (window.addEventListener) { | |
| window.addEventListener('unload', Silverlight.__cleanup, false); | |
| } else { | |
| window.attachEvent('onunload', Silverlight.__cleanup); | |
| } | |
| } | |
| var count = Silverlight._silverlightCount++; | |
| handlerName = "__slEvent" + count; | |
| window[handlerName] = handler; | |
| } else { | |
| handlerName = null; | |
| } | |
| return handlerName; | |
| }; | |
| Silverlight.onRequiredVersionAvailable = function() {}; | |
| Silverlight.onRestartRequired = function() {}; | |
| Silverlight.onUpgradeRequired = function() {}; | |
| Silverlight.onInstallRequired = function() {}; | |
| Silverlight.IsVersionAvailableOnError = function(sender, args) { | |
| var retVal = false; | |
| try { | |
| if (args.ErrorCode == 8001 && !Silverlight.__installationEventFired) { | |
| Silverlight.onUpgradeRequired(); | |
| Silverlight.__installationEventFired = true; | |
| } else if (args.ErrorCode == 8002 && !Silverlight.__installationEventFired) { | |
| Silverlight.onRestartRequired(); | |
| Silverlight.__installationEventFired = true; | |
| } else if (args.ErrorCode == 5014 || args.ErrorCode == 2106) { | |
| if (Silverlight.__verifySilverlight2UpgradeSuccess(args.getHost())) { | |
| retVal = true; | |
| } | |
| } else { | |
| retVal = true; | |
| } | |
| } catch (e) {} | |
| return retVal; | |
| }; | |
| Silverlight.IsVersionAvailableOnLoad = function(sender) { | |
| var retVal = false; | |
| try { | |
| if (Silverlight.__verifySilverlight2UpgradeSuccess(sender.getHost())) { | |
| retVal = true; | |
| } | |
| } catch (e) {} | |
| return retVal; | |
| }; | |
| Silverlight.__verifySilverlight2UpgradeSuccess = function(host) { | |
| var retVal = false; | |
| var version = "4.0.50401"; | |
| var installationEvent = null; | |
| try { | |
| if (host.IsVersionSupported(version + ".99")) { | |
| installationEvent = Silverlight.onRequiredVersionAvailable; | |
| retVal = true; | |
| } else if (host.IsVersionSupported(version + ".0")) { | |
| installationEvent = Silverlight.onRestartRequired; | |
| } else { | |
| installationEvent = Silverlight.onUpgradeRequired; | |
| } | |
| if (installationEvent && !Silverlight.__installationEventFired) { | |
| installationEvent(); | |
| Silverlight.__installationEventFired = true; | |
| } | |
| } catch (e) {} | |
| return retVal; | |
| }; | |
| })(); | |
| if (!window.Silverlight) { | |
| window.Silverlight = {}; | |
| } | |
| Silverlight.supportedUserAgent = function(version, userAgent) { | |
| try { | |
| var ua = null; | |
| if (userAgent) { | |
| ua = userAgent; | |
| } else { | |
| ua = window.navigator.userAgent; | |
| } | |
| var slua = { | |
| OS: 'Unsupported', | |
| Browser: 'Unsupported' | |
| }; | |
| if (ua.indexOf('Windows NT') >= 0 || ua.indexOf('Mozilla/4.0 (compatible; MSIE 6.0)') >= 0) { | |
| slua.OS = 'Windows'; | |
| } else if (ua.indexOf('PPC Mac OS X') >= 0) { | |
| slua.OS = 'MacPPC'; | |
| } else if (ua.indexOf('Intel Mac OS X') >= 0) { | |
| slua.OS = 'MacIntel'; | |
| } else if (ua.indexOf('Linux') >= 0) { | |
| slua.OS = 'Linux'; | |
| } | |
| if (slua.OS != 'Unsupported') { | |
| if (ua.indexOf('MSIE') >= 0) { | |
| if (navigator.userAgent.indexOf('Win64') == -1) { | |
| if (parseInt(ua.split('MSIE')[1]) >= 6) { | |
| slua.Browser = 'MSIE'; | |
| } | |
| } | |
| } else if (ua.indexOf('Firefox') >= 0) { | |
| var versionArr = ua.split('Firefox/')[1].split('.'); | |
| var major = parseInt(versionArr[0]); | |
| if (major >= 2) { | |
| slua.Browser = 'Firefox'; | |
| } else { | |
| var minor = parseInt(versionArr[1]); | |
| if ((major == 1) && (minor >= 5)) { | |
| slua.Browser = 'Firefox'; | |
| } | |
| } | |
| } else if (ua.indexOf('Chrome') >= 0) { | |
| slua.Browser = 'Chrome'; | |
| } else if (ua.indexOf('Safari') >= 0) { | |
| slua.Browser = 'Safari'; | |
| } | |
| } | |
| var sl_version = parseInt(version); | |
| var supUA = (!(slua.OS == 'Unsupported' || slua.Browser == 'Unsupported' || (slua.OS == 'Windows' && slua.Browser == 'Safari') || (slua.OS.indexOf('Mac') >= 0 && slua.Browser == 'MSIE') || (slua.OS.indexOf('Mac') >= 0 && slua.Browser == 'Chrome'))); | |
| if ((slua.OS.indexOf('Windows') >= 0 && slua.Browser == 'Chrome' && sl_version < 4)) { | |
| return false; | |
| } | |
| if ((slua.OS == 'MacPPC') && (sl_version > 1)) { | |
| return ((supUA && (slua.OS != 'MacPPC'))); | |
| } | |
| if ((slua.OS == 'Linux') && (sl_version > 2)) { | |
| return ((supUA && (slua.OS != 'Linux'))); | |
| } | |
| if (version == '1.0') { | |
| return (supUA && (ua.indexOf('Windows NT 5.0') < 0)); | |
| } else { | |
| return (supUA); | |
| } | |
| } catch (e) { | |
| return false; | |
| } | |
| }; | |
| (function() { | |
| if (!window.Silverlight) { | |
| throw new Error("Silverlight.js has not been included."); | |
| } else if (!Silverlight.supportedUserAgent) { | |
| throw new Error("Silverlight.supportedUserAgent.js has not been included."); | |
| } else if (!window.Seadragon) { | |
| throw new Error("Seadragon Ajax has not been included."); | |
| } else if (Seadragon.ComboViewer) { | |
| return; | |
| } | |
| Seadragon.Config.imagePath = "/web/20140802003648/http://zoom.it/images/seajax/"; | |
| Seadragon.Config.xapPath = "/web/20140802003648/http://zoom.it/scripts/"; | |
| Seadragon.Config.windowlessMode = false; | |
| Seadragon.Config.constrainDuringPan = false; | |
| Seadragon.Config.visibilityRatio = 0.5; | |
| Seadragon.Strings.setString("About.Header", "Welcome to Zoom.it"); | |
| Seadragon.Strings.setString("About.Description", "Explore this Deep Zoom Image by clicking to zoom and dragging to pan (or by spinning your scroll wheel). " + "\n\nCreate and share your own at:"); | |
| Seadragon.Strings.setString("About.LogoUrl", "/web/20140802003648/http://zoom.it/"); | |
| Seadragon.Strings.setString("About.MainUrl", "/web/20140802003648/http://zoom.it/"); | |
| Seadragon.Strings.setString("About.SilverlightBefore", "Want better performance? "); | |
| Seadragon.Strings.setString("About.SilverlightDuring", "Install Silverlight"); | |
| Seadragon.Strings.setString("About.SilverlightAfter", ""); | |
| Seadragon.Strings.setString("About.SilverlightUrl", "/web/20140802003648/http://www.microsoft.com/getsilverlight/"); | |
| Seadragon.Strings.setString("Tooltips.AboutButton", "About Zoom.it"); | |
| var SL_VERSION = "3.0.40818.0"; | |
| var SL_XAPNAME = "DeepZoomViewer.xap"; | |
| var SL_ICON = "../branding/silverlight.png"; | |
| var SL_BLESSED = Silverlight.supportedUserAgent(SL_VERSION.substr(0, 3)); | |
| var SL_INSTALLED = SL_BLESSED && Silverlight.isInstalled(SL_VERSION); | |
| var IS_FILE_SCHEME = window.location.protocol.toLowerCase() == "file:"; | |
| var ComboViewer = function(container, callback, initDziXmlUrlOrJsonObj, initDziXmlString) { | |
| var self = this; | |
| var viewer = null; | |
| var pluginLoaded = false; | |
| var containerElmt = Seadragon.Utils.getElement(container); | |
| var slTileSourceFactory = null; | |
| var currentTileSource = null; | |
| this.isSilverlight = SL_INSTALLED; | |
| this.rawViewer = null; | |
| this.onFirstInteraction = null; | |
| this.onSilverlightInstall = null; | |
| this.onResize = null; | |
| function createAjaxViewer(dziTileSource) { | |
| self.isSilverlight = false; | |
| viewer = self.rawViewer = new Seadragon.BrandedViewer(container); | |
| var aboutScreen = viewer.getAboutScreen(); | |
| var aboutPara = aboutScreen.getElementsByTagName("p")[1]; | |
| var aboutDesc = aboutPara.parentNode; | |
| var apStyle = aboutPara.style; | |
| if (SL_BLESSED && !SL_INSTALLED && !IS_FILE_SCHEME) { | |
| var upgradePara = Seadragon.Utils.makeNeutralElement("p"); | |
| var upgradeLink = Seadragon.Utils.makeNeutralElement("a"); | |
| upgradeLink.href = Seadragon.Strings.getString("About.SilverlightUrl"); | |
| upgradeLink.target = "_blank"; | |
| var upStyle = upgradePara.style; | |
| var ulStyle = upgradeLink.style; | |
| upStyle.color = ulStyle.color = apStyle.color; | |
| upStyle.fontFamily = ulStyle.fontFamily = apStyle.fontFamily; | |
| upStyle.fontSize = ulStyle.fontSize = apStyle.fontSize; | |
| upStyle.fontSizeAdjust = ulStyle.fontSizeAdjust = apStyle.fontSizeAdjust; | |
| upStyle.fontStyle = ulStyle.fontStyle = apStyle.fontStyle; | |
| upStyle.fontStretch = ulStyle.fontStretch = apStyle.fontStretch; | |
| upStyle.fontVariant = ulStyle.fontVariant = apStyle.fontVariant; | |
| upStyle.fontWeight = ulStyle.fontWeight = apStyle.fontWeight; | |
| upStyle.lineHeight = ulStyle.lineHeight = apStyle.lineHeight; | |
| upStyle.textAlign = ulStyle.textAlign = apStyle.textAlign; | |
| upStyle.textDecoration = ulStyle.textDecoration = apStyle.textDecoration; | |
| ulStyle.color = "#0cf"; | |
| ulStyle.fontWeight = "bold"; | |
| ulStyle.textDecoration = "none"; | |
| ulStyle.background = "transparent url(" + | |
| Seadragon.Config.imagePath + SL_ICON + ") no-repeat scroll left center"; | |
| ulStyle.marginLeft = "4px"; | |
| ulStyle.paddingLeft = "18px"; | |
| upStyle.marginTop = "1em"; | |
| Seadragon.Utils.addEvent(upgradeLink, "mouseup", Seadragon.Utils.stopEvent); | |
| Seadragon.Utils.addEvent(upgradeLink, "click", function(event) { | |
| Seadragon.Utils.stopEvent(event); | |
| var eventHandler = self.onSilverlightInstall; | |
| if (typeof eventHandler === "function") { | |
| eventHandler(self); | |
| } | |
| }); | |
| upgradeLink.appendChild(document.createTextNode(Seadragon.Strings.getString("About.SilverlightDuring"))); | |
| upgradePara.appendChild(document.createTextNode(Seadragon.Strings.getString("About.SilverlightBefore"))); | |
| upgradePara.appendChild(upgradeLink); | |
| upgradePara.appendChild(document.createTextNode(Seadragon.Strings.getString("About.SilverlightAfter"))); | |
| aboutDesc.appendChild(upgradePara); | |
| } | |
| viewer.addEventListener("animation", onAjaxAnimation); | |
| viewer.addEventListener("resize", onAjaxResize); | |
| if (dziTileSource) { | |
| viewer.openTileSource(dziTileSource); | |
| } else if (initDziXmlUrlOrJsonObj) { | |
| viewer.openDzi(initDziXmlUrlOrJsonObj, initDziXmlString); | |
| } | |
| } | |
| function callCallback(wasCalledBefore) { | |
| if (typeof callback == "function") { | |
| callback(self, wasCalledBefore); | |
| } | |
| } | |
| function init(dziUrl, dziTileSource) { | |
| var HOSTNAME_REGEX = /http[s]?:\/\/([^\/]+)/; | |
| function isLocal(hostname) { | |
| return hostname.indexOf('.') < 0 && hostname.indexOf("localhost") < 0; | |
| } | |
| var pageIsLocal = isLocal(location.hostname); | |
| var dziPath = dziUrl || ""; | |
| var dziPathMatches = dziPath.match(HOSTNAME_REGEX); | |
| var dziPathIsAbsolute = !!dziPathMatches; | |
| var dziIsLocal = dziPathIsAbsolute ? isLocal(dziPathMatches[1]) : pageIsLocal; | |
| var xapPath = (Seadragon.Config.xapPath || "").toLowerCase(); | |
| var xapPathMatches = xapPath.match(HOSTNAME_REGEX); | |
| var xapPathIsAbsolute = !!xapPathMatches; | |
| var xapIsLocal = xapPathIsAbsolute ? isLocal(xapPathMatches[1]) : pageIsLocal; | |
| var crossZone = (xapIsLocal !== dziIsLocal); | |
| if (!SL_INSTALLED || IS_FILE_SCHEME || crossZone) { | |
| window.setTimeout(function() { | |
| createAjaxViewer(dziTileSource); | |
| callCallback(); | |
| }, 1); | |
| return; | |
| } | |
| var objectDiv = Seadragon.Utils.makeNeutralElement("div"); | |
| var objectDivStyle = objectDiv.style; | |
| objectDivStyle.width = "100%"; | |
| objectDivStyle.height = "100%"; | |
| containerElmt.innerHTML = ""; | |
| containerElmt.appendChild(objectDiv); | |
| var initParams = !dziUrl ? "" : ["url=", dziUrl, ",height=", dziTileSource.height].join(''); | |
| var props = { | |
| "width": "100%", | |
| "height": "100%", | |
| "background": "transparent", | |
| "version": SL_VERSION, | |
| "enableHtmlAccess": "true", | |
| "windowless": (Seadragon.Config.windowlessMode || false).toString() | |
| }; | |
| var events = { | |
| "onLoad": onPluginLoad, | |
| "onError": onPluginError | |
| }; | |
| Silverlight.createObject(Seadragon.Config.xapPath + SL_XAPNAME, objectDiv, "", props, events, initParams, null); | |
| } | |
| function onPluginLoad(objectElmt, userContext, sender) { | |
| if (self.isSilverlight) { | |
| var slContent = sender.getHost().Content; | |
| viewer = self.rawViewer = slContent.Viewer; | |
| slTileSourceFactory = slContent.TileSourceFactory; | |
| if (currentTileSource) { | |
| self.openTileSource(currentTileSource); | |
| } | |
| } | |
| updateSilverlightStrings(); | |
| viewer.addEventListener("Animation", onSilverlightAnimation); | |
| viewer.addEventListener("Resize", onSilverlightResize); | |
| callCallback(pluginLoaded ? true : false) | |
| pluginLoaded = true; | |
| } | |
| function onPluginError(sender, args) { | |
| if (!pluginLoaded) { | |
| pluginLoaded = true; | |
| createAjaxViewer(); | |
| callCallback(); | |
| } else { | |
| Seadragon.Debug.error(["Silverlight ", args.ErrorType, " [", args.ErrorCode, "]: ", args.ErrorMessage].join('')); | |
| } | |
| } | |
| function parseDziArgs(xmlUrlOrJsonObj, xmlString, callback) { | |
| var dziUrl; | |
| function finish(dziTileSource, error) { | |
| if (!dziTileSource) { | |
| throw new Error(error); | |
| } | |
| callback(dziUrl, dziTileSource); | |
| } | |
| switch (typeof xmlUrlOrJsonObj) { | |
| case "string": | |
| dziUrl = xmlUrlOrJsonObj; | |
| Seadragon.DziTileSource.createFromXml(dziUrl, xmlString, finish); | |
| break; | |
| default: | |
| dziUrl = xmlUrlOrJsonObj.url; | |
| Seadragon.DziTileSource.createFromJson(xmlUrlOrJsonObj, finish); | |
| break; | |
| } | |
| } | |
| function updateSilverlightStrings() { | |
| if (!self.isSilverlight) { | |
| return; | |
| } | |
| viewer.AboutPage.HeaderText = Seadragon.Strings.getString("About.Header"); | |
| viewer.AboutPage.DescriptionText = Seadragon.Strings.getString("About.Description"); | |
| viewer.AboutPage.LogoHyperlinkUrl = Seadragon.Strings.getString("About.LogoUrl"); | |
| viewer.AboutPage.MainHyperlinkUrl = viewer.AboutPage.MainHyperlinkText = Seadragon.Strings.getString("About.MainUrl"); | |
| viewer.LogoTooltip = Seadragon.Strings.getString("Tooltips.AboutButton"); | |
| } | |
| function onAjaxAnimation(viewer) { | |
| if (viewer.isIntroAnimating()) { | |
| return; | |
| } | |
| viewer.removeEventListener("animation", arguments.callee); | |
| var eventHandler = self.onFirstInteraction; | |
| if (typeof eventHandler === "function") { | |
| eventHandler(self); | |
| } | |
| } | |
| function onSilverlightAnimation(viewer) { | |
| if (viewer.IsIntroAnimating) { | |
| return; | |
| } | |
| viewer.removeEventListener("Animation", arguments.callee); | |
| var eventHandler = self.onFirstInteraction; | |
| if (typeof eventHandler === "function") { | |
| eventHandler(self); | |
| } | |
| } | |
| function onAjaxResize(viewer) { | |
| var eventHandler = self.onResize; | |
| if (typeof eventHandler === "function") { | |
| eventHandler(self); | |
| } | |
| } | |
| function onSilverlightResize(viewer) { | |
| var eventHandler = self.onResize; | |
| if (typeof eventHandler === "function") { | |
| eventHandler(self); | |
| } | |
| } | |
| function openSilverlightDzi(dziUrl, dziTileSource) { | |
| viewer.LoadURL(dziUrl, dziTileSource.height); | |
| } | |
| this.openDzi = function(xmlUrlOrJsonObj, xmlString) { | |
| if (self.isSilverlight) { | |
| parseDziArgs(xmlUrlOrJsonObj, xmlString, openSilverlightDzi); | |
| currentTileSource = null; | |
| } else { | |
| viewer.openDzi(xmlUrlOrJsonObj, xmlString); | |
| } | |
| }; | |
| this.openTileSource = function(tileSource) { | |
| if (self.isSilverlight) { | |
| var jsTS = tileSource; | |
| var slTS = slTileSourceFactory.CreateTileSource(jsTS.width, jsTS.height, jsTS.tileSize, jsTS.tileOverlap); | |
| slTS.GetTileUrl = function(sender, e) { | |
| var level = e.Level, | |
| col = e.Col, | |
| row = e.Row; | |
| if (jsTS.tileExists(level, col, row)) { | |
| e.TileUrl = jsTS.getTileUrl(level, col, row); | |
| } | |
| }; | |
| viewer.OpenTileSource(slTS, jsTS.height); | |
| currentTileSource = jsTS; | |
| } else { | |
| viewer.openTileSource(tileSource); | |
| } | |
| }; | |
| this.close = function() { | |
| if (self.isSilverlight) { | |
| viewer.Close(); | |
| } else { | |
| viewer.close(); | |
| } | |
| }; | |
| this.isOpen = function() { | |
| if (self.isSilverlight) { | |
| return viewer.IsOpen; | |
| } else { | |
| return viewer.isOpen(); | |
| } | |
| }; | |
| this.setAboutHeader = function(str) { | |
| if (self.isSilverlight) { | |
| viewer.AboutPage.HeaderText = str; | |
| } else { | |
| var aboutPara = viewer.getAboutScreen().getElementsByTagName("p")[0]; | |
| aboutPara.innerHTML = ""; | |
| aboutPara.appendChild(document.createTextNode(str)); | |
| } | |
| }; | |
| this.setAboutDescription = function(str) { | |
| if (self.isSilverlight) { | |
| viewer.AboutPage.DescriptionText = str; | |
| } else { | |
| var aboutPara = viewer.getAboutScreen().getElementsByTagName("p")[1]; | |
| aboutPara.innerHTML = ""; | |
| aboutPara.appendChild(document.createTextNode(str)); | |
| } | |
| }; | |
| this.setAboutMainLink = function(url, text) { | |
| if (self.isSilverlight) { | |
| viewer.AboutPage.MainHyperlinkUrl = url; | |
| viewer.AboutPage.MainHyperlinkText = text || url; | |
| } else { | |
| var aboutLink = viewer.getAboutScreen().getElementsByTagName("a")[0]; | |
| aboutLink.href = url; | |
| aboutLink.innerHTML = ""; | |
| aboutLink.appendChild(document.createTextNode(text || url)); | |
| } | |
| }; | |
| this.addAboutFooterLink = function(url, text) { | |
| if (self.isSilverlight) { | |
| viewer.AboutPage.AddCustomHyperlink(url, text || url); | |
| } else { | |
| viewer.addAboutFooterLink(url, text); | |
| } | |
| }; | |
| this.setLogoCaption = function(text, url) { | |
| if (self.isSilverlight) { | |
| viewer.SetLogoCaption(text, url); | |
| } else { | |
| viewer.setLogoCaption(text, url); | |
| } | |
| }; | |
| this.setLogoTooltip = function(str) { | |
| if (self.isSilverlight) { | |
| viewer.LogoTooltip = str; | |
| } else { | |
| var aboutButton = viewer.getLogoControl().firstChild; | |
| aboutButton.title = str; | |
| } | |
| }; | |
| this.isFullPage = function() { | |
| if (self.isSilverlight) { | |
| return viewer.IsFullPage; | |
| } else { | |
| return viewer.isFullPage(); | |
| } | |
| }; | |
| this.setFullPage = function(value) { | |
| if (self.isSilverlight) { | |
| viewer.SetFullPage(value); | |
| } else { | |
| viewer.setFullPage(value); | |
| } | |
| }; | |
| (function() { | |
| if (initDziXmlUrlOrJsonObj) { | |
| parseDziArgs(initDziXmlUrlOrJsonObj, initDziXmlString, init); | |
| } else { | |
| init(); | |
| } | |
| })(); | |
| }; | |
| Seadragon.ComboViewer = {}; | |
| Seadragon.ComboViewer.create = function(container, callback) { | |
| new ComboViewer(container, callback); | |
| }; | |
| Seadragon.ComboViewer.createAndOpenDzi = function(container, xmlUrlOrJsonObj, xmlStringOrJsonCallback, xmlCallback) { | |
| var callback, xmlString; | |
| switch (typeof xmlUrlOrJsonObj) { | |
| case "string": | |
| xmlString = xmlStringOrJsonCallback; | |
| callback = xmlCallback; | |
| break; | |
| default: | |
| callback = xmlStringOrJsonCallback; | |
| break; | |
| } | |
| new ComboViewer(container, callback, xmlUrlOrJsonObj, xmlString); | |
| }; | |
| })(); | |
| var _gat = new Object({ | |
| c: "length", | |
| lb: "4.3.1", | |
| m: "cookie", | |
| b: undefined, | |
| cb: function(d, a) { | |
| this.zb = d; | |
| this.Nb = a | |
| }, | |
| r: "__utma=", | |
| W: "__utmb=", | |
| ma: "__utmc=", | |
| Ta: "__utmk=", | |
| na: "__utmv=", | |
| oa: "__utmx=", | |
| Sa: "GASO=", | |
| X: "__utmz=", | |
| lc: "/web/20140802003648/http://www.google-analytics.com/__utm.gif", | |
| mc: "/web/20140802003648/https://ssl.google-analytics.com/__utm.gif", | |
| Wa: "utmcid=", | |
| Ya: "utmcsr=", | |
| $a: "utmgclid=", | |
| Ua: "utmccn=", | |
| Xa: "utmcmd=", | |
| Za: "utmctr=", | |
| Va: "utmcct=", | |
| Hb: false, | |
| _gasoDomain: undefined, | |
| _gasoCPath: undefined, | |
| e: window, | |
| a: document, | |
| k: navigator, | |
| t: function(d) { | |
| var a = 1, | |
| c = 0, | |
| h, | |
| o; | |
| if (!_gat.q(d)) { | |
| a = 0; | |
| for (h = d[_gat.c] - 1; h >= 0; h--) { | |
| o = d.charCodeAt(h); | |
| a = (a << 6 & 268435455) + o + (o << 14); | |
| c = a & 266338304; | |
| a = c != 0 ? a ^ c >> 21 : a | |
| } | |
| } | |
| return a | |
| }, | |
| C: function(d, a, c) { | |
| var h = _gat, | |
| o = "-", | |
| k, l, s = h.q; | |
| if (!s(d) && !s(a) && !s(c)) { | |
| k = h.w(d, a); | |
| if (k > -1) { | |
| l = d.indexOf(c, k); | |
| if (l < 0) l = d[h.c]; | |
| o = h.F(d, k + h.w(a, "=") + 1, l) | |
| } | |
| } | |
| return o | |
| }, | |
| Ea: function(d) { | |
| var a = false, | |
| c = 0, | |
| h, o; | |
| if (!_gat.q(d)) { | |
| a = true; | |
| for (h = 0; h < d[_gat.c]; h++) { | |
| o = d.charAt(h); | |
| c += "." == o ? 1 : 0; | |
| a = a && c <= 1 && (0 == h && "-" == o || _gat.P(".0123456789", o)) | |
| } | |
| } | |
| return a | |
| }, | |
| d: function(d, a) { | |
| var c = encodeURIComponent; | |
| return c instanceof Function ? (a ? encodeURI(d) : c(d)) : escape(d) | |
| }, | |
| J: function(d, a) { | |
| var c = decodeURIComponent, | |
| h; | |
| d = d.split("+").join(" "); | |
| if (c instanceof Function) try { | |
| h = a ? decodeURI(d) : c(d) | |
| } catch (o) { | |
| h = unescape(d) | |
| } else h = unescape(d); | |
| return h | |
| }, | |
| Db: function(d) { | |
| return d && d.hash ? _gat.F(d.href, _gat.w(d.href, "#")) : "" | |
| }, | |
| q: function(d) { | |
| return _gat.b == d || "-" == d || "" == d | |
| }, | |
| Lb: function(d) { | |
| return d[_gat.c] > 0 && _gat.P(" \n\r\t", d) | |
| }, | |
| P: function(d, a) { | |
| return _gat.w(d, a) > -1 | |
| }, | |
| h: function(d, a) { | |
| d[d[_gat.c]] = a | |
| }, | |
| T: function(d) { | |
| return d.toLowerCase() | |
| }, | |
| z: function(d, a) { | |
| return d.split(a) | |
| }, | |
| w: function(d, a) { | |
| return d.indexOf(a) | |
| }, | |
| F: function(d, a, c) { | |
| c = _gat.b == c ? d[_gat.c] : c; | |
| return d.substring(a, c) | |
| }, | |
| uc: function() { | |
| var d = _gat.b, | |
| a = window; | |
| if (a && a.gaGlobal && a.gaGlobal.hid) d = a.gaGlobal.hid; | |
| else { | |
| d = Math.round(Math.random() * 2147483647); | |
| a.gaGlobal = a.gaGlobal ? a.gaGlobal : {}; | |
| a.gaGlobal.hid = d | |
| } | |
| return d | |
| }, | |
| wa: function() { | |
| return Math.round(Math.random() * 2147483647) | |
| }, | |
| Gc: function() { | |
| return (_gat.wa() ^ _gat.vc()) * 2147483647 | |
| }, | |
| vc: function() { | |
| var d = _gat.k, | |
| a = _gat.a, | |
| c = _gat.e, | |
| h = a[_gat.m] ? | |
| a[_gat.m] : "", | |
| o = c.history[_gat.c], | |
| k, l, s = [d.appName, d.version, d.language ? d.language : d.browserLanguage, d.platform, d.userAgent, d.javaEnabled() ? 1 : 0].join(""); | |
| if (c.screen) s += c.screen.width + "x" + c.screen.height + c.screen.colorDepth; | |
| else if (c.java) { | |
| l = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); | |
| s += l.screen.width + "x" + l.screen.height | |
| } | |
| s += h; | |
| s += a.referrer ? a.referrer : ""; | |
| k = s[_gat.c]; | |
| while (o > 0) s += o-- ^ k++; | |
| return _gat.t(s) | |
| } | |
| }); | |
| _gat.hc = function() { | |
| var d = this, | |
| a = _gat.cb; | |
| function c(h, o) { | |
| return new a(h, o) | |
| } | |
| d.db = "utm_campaign"; | |
| d.eb = "utm_content"; | |
| d.fb = "utm_id"; | |
| d.gb = "utm_medium"; | |
| d.hb = "utm_nooverride"; | |
| d.ib = "utm_source"; | |
| d.jb = "utm_term"; | |
| d.kb = "gclid"; | |
| d.pa = 0; | |
| d.I = 0; | |
| d.wb = "15768000"; | |
| d.Tb = "1800"; | |
| d.ea = []; | |
| d.ga = []; | |
| d.Ic = "cse"; | |
| d.Gb = "q"; | |
| d.ab = "google"; | |
| d.fa = [c(d.ab, d.Gb), c("yahoo", "p"), c("msn", "q"), c("bing", "q"), c("aol", "query"), c("aol", "encquery"), c("lycos", "query"), c("ask", "q"), c("altavista", "q"), c("netscape", "query"), c("cnn", "query"), c("looksmart", "qt"), c("about", | |
| "terms"), c("mamma", "query"), c("alltheweb", "q"), c("gigablast", "q"), c("voila", "rdata"), c("virgilio", "qs"), c("live", "q"), c("baidu", "wd"), c("alice", "qs"), c("yandex", "text"), c("najdi", "q"), c("aol", "q"), c("club-internet", "query"), c("mama", "query"), c("seznam", "q"), c("search", "q"), c("wp", "szukaj"), c("onet", "qt"), c("netsprint", "q"), c("google.interia", "q"), c("szukacz", "q"), c("yam", "k"), c("pchome", "q"), c("kvasir", "searchExpr"), c("sesam", "q"), c("ozu", "q"), c("terra", "query"), c("nostrum", "query"), c("mynet", "q"), | |
| c("ekolay", "q"), c("search.ilse", "search_for") | |
| ]; | |
| d.B = undefined; | |
| d.Kb = false; | |
| d.p = "/"; | |
| d.ha = 100; | |
| d.Da = "/__utm.gif"; | |
| d.ta = 1; | |
| d.ua = 1; | |
| d.G = "|"; | |
| d.sa = 1; | |
| d.qa = 1; | |
| d.pb = 1; | |
| d.g = "auto"; | |
| d.D = 1; | |
| d.Ga = 1000; | |
| d.Yc = 10; | |
| d.nc = 10; | |
| d.Zc = 0.2 | |
| }; | |
| _gat.Y = function(d, a) { | |
| var c, h, o, k, l, s, q, f = this, | |
| n = _gat, | |
| w = n.q, | |
| x = n.c, | |
| g, z = a; | |
| f.a = d; | |
| function B(i) { | |
| var b = i instanceof Array ? i.join(".") : ""; | |
| return w(b) ? "-" : b | |
| } | |
| function A(i, b) { | |
| var e = [], | |
| j; | |
| if (!w(i)) { | |
| e = n.z(i, "."); | |
| if (b) | |
| for (j = 0; j < e[x]; j++) | |
| if (!n.Ea(e[j])) e[j] = "-" | |
| } | |
| return e | |
| } | |
| function p() { | |
| return u(63072000000) | |
| } | |
| function u(i) { | |
| var b = new Date, | |
| e = new Date(b.getTime() + i); | |
| return "expires=" + e.toGMTString() + "; " | |
| } | |
| function m(i, b) { | |
| f.a[n.m] = i + "; path=" + z.p + "; " + b + f.Cc() | |
| } | |
| function r(i, b, e) { | |
| var j = f.V, | |
| t, v; | |
| for (t = 0; t < j[x]; t++) { | |
| v = j[t][0]; | |
| v += w(b) ? b : b + j[t][4]; | |
| j[t][2](n.C(i, v, e)) | |
| } | |
| } | |
| f.Jb = function() { | |
| return n.b == g || g == f.t() | |
| }; | |
| f.Ba = function() { | |
| return l ? l : "-" | |
| }; | |
| f.Wb = function(i) { | |
| l = i | |
| }; | |
| f.Ma = function(i) { | |
| g = n.Ea(i) ? i * 1 : "-" | |
| }; | |
| f.Aa = function() { | |
| return B(s) | |
| }; | |
| f.Na = function(i) { | |
| s = A(i) | |
| }; | |
| f.Hc = function() { | |
| return g ? g : "-" | |
| }; | |
| f.Cc = function() { | |
| return w(z.g) ? "" : "domain=" + z.g + ";" | |
| }; | |
| f.ya = function() { | |
| return B(c) | |
| }; | |
| f.Ub = function(i) { | |
| c = A(i, 1) | |
| }; | |
| f.K = function() { | |
| return B(h) | |
| }; | |
| f.La = function(i) { | |
| h = A(i, 1) | |
| }; | |
| f.za = function() { | |
| return B(o) | |
| }; | |
| f.Vb = function(i) { | |
| o = A(i, 1) | |
| }; | |
| f.Ca = function() { | |
| return B(k) | |
| }; | |
| f.Xb = function(i) { | |
| k = A(i); | |
| for (var b = 0; b < k[x]; b++) | |
| if (b < 4 && !n.Ea(k[b])) k[b] = "-" | |
| }; | |
| f.Dc = function() { | |
| return q | |
| }; | |
| f.Uc = function(i) { | |
| q = i | |
| }; | |
| f.pc = function() { | |
| c = []; | |
| h = []; | |
| o = []; | |
| k = []; | |
| l = n.b; | |
| s = []; | |
| g = n.b | |
| }; | |
| f.t = function() { | |
| var i = "", | |
| b; | |
| for (b = 0; b < f.V[x]; b++) i += f.V[b][1](); | |
| return n.t(i) | |
| }; | |
| f.Ha = function(i) { | |
| var b = f.a[n.m], | |
| e = false; | |
| if (b) { | |
| r(b, i, ";"); | |
| f.Ma(f.t()); | |
| e = true | |
| } | |
| return e | |
| }; | |
| f.Rc = function(i) { | |
| r(i, "", "&"); | |
| f.Ma(n.C(i, n.Ta, "&")) | |
| }; | |
| f.Wc = function() { | |
| var i = f.V, | |
| b = [], | |
| e; | |
| for (e = 0; e < i[x]; e++) n.h(b, i[e][0] + i[e][1]()); | |
| n.h(b, n.Ta + f.t()); | |
| return b.join("&") | |
| }; | |
| f.bd = function(i, b) { | |
| var e = f.V, | |
| j = z.p, | |
| t; | |
| f.Ha(i); | |
| z.p = b; | |
| for (t = 0; t < e[x]; t++) | |
| if (!w(e[t][1]())) e[t][3](); | |
| z.p = j | |
| }; | |
| f.dc = function() { | |
| m(n.r + f.ya(), p()) | |
| }; | |
| f.Pa = function() { | |
| m(n.W + f.K(), u(z.Tb * 1000)) | |
| }; | |
| f.ec = function() { | |
| m(n.ma + f.za(), "") | |
| }; | |
| f.Ra = function() { | |
| m(n.X + f.Ca(), u(z.wb * 1000)) | |
| }; | |
| f.fc = function() { | |
| m(n.oa + f.Ba(), p()) | |
| }; | |
| f.Qa = function() { | |
| m(n.na + f.Aa(), p()) | |
| }; | |
| f.cd = function() { | |
| m(n.Sa + f.Dc(), "") | |
| }; | |
| f.V = [ | |
| [n.r, f.ya, f.Ub, f.dc, "."], | |
| [n.W, f.K, f.La, f.Pa, ""], | |
| [n.ma, f.za, f.Vb, f.ec, ""], | |
| [n.oa, f.Ba, f.Wb, f.fc, ""], | |
| [n.X, f.Ca, f.Xb, f.Ra, "."], | |
| [n.na, | |
| f.Aa, f.Na, f.Qa, "." | |
| ] | |
| ] | |
| }; | |
| _gat.jc = function(d) { | |
| var a = this, | |
| c = _gat, | |
| h = d, | |
| o, k = function(l) { | |
| var s = (new Date).getTime(), | |
| q; | |
| q = (s - l[3]) * (h.Zc / 1000); | |
| if (q >= 1) { | |
| l[2] = Math.min(Math.floor(l[2] * 1 + q), h.nc); | |
| l[3] = s | |
| } | |
| return l | |
| }; | |
| a.O = function(l, s, q, f, n, w, x) { | |
| var g, z = h.D, | |
| B = q.location; | |
| if (!o) o = new c.Y(q, h); | |
| o.Ha(f); | |
| g = c.z(o.K(), "."); | |
| if (g[1] < 500 || n) { | |
| if (w) g = k(g); | |
| if (n || !w || g[2] >= 1) { | |
| if (!n && w) g[2] = g[2] * 1 - 1; | |
| g[1] = g[1] * 1 + 1; | |
| l = "?utmwv=" + _gat.lb + "&utmn=" + c.wa() + (c.q(B.hostname) ? "" : "&utmhn=" + c.d(B.hostname)) + (h.ha == 100 ? "" : "&utmsp=" + c.d(h.ha)) + l; | |
| if (0 == z || 2 == z) { | |
| var A = | |
| new Image(1, 1); | |
| A.src = h.Da + l; | |
| var p = 2 == z ? function() {} : x || function() {}; | |
| A.onload = p | |
| } | |
| if (1 == z || 2 == z) { | |
| var u = new Image(1, 1); | |
| u.src = ("https:" == B.protocol ? c.mc : c.lc) + l + "&utmac=" + s + "&utmcc=" + a.wc(q, f); | |
| u.onload = x || function() {} | |
| } | |
| } | |
| } | |
| o.La(g.join(".")); | |
| o.Pa() | |
| }; | |
| a.wc = function(l, s) { | |
| var q = [], | |
| f = [c.r, c.X, c.na, c.oa], | |
| n, w = l[c.m], | |
| x; | |
| for (n = 0; n < f[c.c]; n++) { | |
| x = c.C(w, f[n] + s, ";"); | |
| if (!c.q(x)) c.h(q, f[n] + x + ";") | |
| } | |
| return c.d(q.join("+")) | |
| } | |
| }; | |
| _gat.i = function() { | |
| this.la = [] | |
| }; | |
| _gat.i.bb = function(d, a, c, h, o, k) { | |
| var l = this; | |
| l.cc = d; | |
| l.Oa = a; | |
| l.L = c; | |
| l.sb = h; | |
| l.Pb = o; | |
| l.Qb = k | |
| }; | |
| _gat.i.bb.prototype.S = function() { | |
| var d = this, | |
| a = _gat.d; | |
| return "&" + ["utmt=item", "utmtid=" + a(d.cc), "utmipc=" + a(d.Oa), "utmipn=" + a(d.L), "utmiva=" + a(d.sb), "utmipr=" + a(d.Pb), "utmiqt=" + a(d.Qb)].join("&") | |
| }; | |
| _gat.i.$ = function(d, a, c, h, o, k, l, s) { | |
| var q = this; | |
| q.v = d; | |
| q.ob = a; | |
| q.bc = c; | |
| q.ac = h; | |
| q.Yb = o; | |
| q.ub = k; | |
| q.$b = l; | |
| q.xb = s; | |
| q.ca = [] | |
| }; | |
| _gat.i.$.prototype.mb = function(d, a, c, h, o) { | |
| var k = this, | |
| l = k.Eb(d), | |
| s = k.v, | |
| q = _gat; | |
| if (q.b == | |
| l) q.h(k.ca, new q.i.bb(s, d, a, c, h, o)); | |
| else { | |
| l.cc = s; | |
| l.Oa = d; | |
| l.L = a; | |
| l.sb = c; | |
| l.Pb = h; | |
| l.Qb = o | |
| } | |
| }; | |
| _gat.i.$.prototype.Eb = function(d) { | |
| var a, c = this.ca, | |
| h; | |
| for (h = 0; h < c[_gat.c]; h++) a = d == c[h].Oa ? c[h] : a; | |
| return a | |
| }; | |
| _gat.i.$.prototype.S = function() { | |
| var d = this, | |
| a = _gat.d; | |
| return "&" + ["utmt=tran", "utmtid=" + a(d.v), "utmtst=" + a(d.ob), "utmtto=" + a(d.bc), "utmttx=" + a(d.ac), "utmtsp=" + a(d.Yb), "utmtci=" + a(d.ub), "utmtrg=" + a(d.$b), "utmtco=" + a(d.xb)].join("&") | |
| }; | |
| _gat.i.prototype.nb = function(d, a, c, h, o, k, l, s) { | |
| var q = this, | |
| f = _gat, | |
| n = q.xa(d); | |
| if (f.b == | |
| n) { | |
| n = new f.i.$(d, a, c, h, o, k, l, s); | |
| f.h(q.la, n) | |
| } else { | |
| n.ob = a; | |
| n.bc = c; | |
| n.ac = h; | |
| n.Yb = o; | |
| n.ub = k; | |
| n.$b = l; | |
| n.xb = s | |
| } | |
| return n | |
| }; | |
| _gat.i.prototype.xa = function(d) { | |
| var a, c = this.la, | |
| h; | |
| for (h = 0; h < c[_gat.c]; h++) a = d == c[h].v ? c[h] : a; | |
| return a | |
| }; | |
| _gat.gc = function(d) { | |
| var a = this, | |
| c = "-", | |
| h = _gat, | |
| o = d; | |
| a.Ja = screen; | |
| a.qb = !self.screen && self.java ? java.awt.Toolkit.getDefaultToolkit() : h.b; | |
| a.a = document; | |
| a.e = window; | |
| a.k = navigator; | |
| a.Ka = c; | |
| a.Sb = c; | |
| a.tb = c; | |
| a.Ob = c; | |
| a.Mb = 1; | |
| a.Bb = c; | |
| function k() { | |
| var l, s, q, f, n = "ShockwaveFlash", | |
| w = "$version", | |
| x = a.k ? a.k.plugins : h.b; | |
| if (x && x[h.c] > 0) | |
| for (l = 0; l < x[h.c] && !q; l++) { | |
| s = x[l]; | |
| if (h.P(s.name, "Shockwave Flash")) q = h.z(s.description, "Shockwave Flash ")[1] | |
| } else { | |
| n = n + "." + n; | |
| try { | |
| f = new ActiveXObject(n + ".7"); | |
| q = f.GetVariable(w) | |
| } catch (g) {} | |
| if (!q) try { | |
| f = | |
| new ActiveXObject(n + ".6"); | |
| q = "WIN 6,0,21,0"; | |
| f.AllowScriptAccess = "always"; | |
| q = f.GetVariable(w) | |
| } catch (z) {} | |
| if (!q) try { | |
| f = new ActiveXObject(n); | |
| q = f.GetVariable(w) | |
| } catch (z) {} | |
| if (q) { | |
| q = h.z(h.z(q, " ")[1], ","); | |
| q = q[0] + "." + q[1] + " r" + q[2] | |
| } | |
| } | |
| return q ? q : c | |
| } | |
| a.xc = function() { | |
| var l; | |
| if (self.screen) { | |
| a.Ka = a.Ja.width + "x" + a.Ja.height; | |
| a.Sb = a.Ja.colorDepth + "-bit" | |
| } else if (a.qb) try { | |
| l = a.qb.getScreenSize(); | |
| a.Ka = l.width + "x" + l.height | |
| } catch (s) {} | |
| a.Ob = h.T(a.k && a.k.language ? a.k.language : (a.k && a.k.browserLanguage ? a.k.browserLanguage : c)); | |
| a.Mb = | |
| a.k && a.k.javaEnabled() ? 1 : 0; | |
| a.Bb = o ? k() : c; | |
| a.tb = h.d(a.a.characterSet ? a.a.characterSet : (a.a.charset ? a.a.charset : c)) | |
| }; | |
| a.Xc = function() { | |
| return "&" + ["utmcs=" + h.d(a.tb), "utmsr=" + a.Ka, "utmsc=" + a.Sb, "utmul=" + a.Ob, "utmje=" + a.Mb, "utmfl=" + h.d(a.Bb)].join("&") | |
| } | |
| }; | |
| _gat.n = function(d, a, c, h, o) { | |
| var k = this, | |
| l = _gat, | |
| s = l.q, | |
| q = l.b, | |
| f = l.P, | |
| n = l.C, | |
| w = l.T, | |
| x = l.z, | |
| g = l.c; | |
| k.a = a; | |
| k.f = d; | |
| k.Rb = c; | |
| k.ja = h; | |
| k.o = o; | |
| function z(p) { | |
| return s(p) || "0" == p || !f(p, "://") | |
| } | |
| function B(p) { | |
| var u = ""; | |
| p = w(x(p, "://")[1]); | |
| if (f(p, "/")) { | |
| p = x(p, "/")[1]; | |
| if (f(p, "?")) u = x(p, "?")[0] | |
| } | |
| return u | |
| } | |
| function A(p) { | |
| var u = ""; | |
| u = w(x(p, "://")[1]); | |
| if (f(u, "/")) u = x(u, "/")[0]; | |
| return u | |
| } | |
| k.Fc = function(p) { | |
| var u = k.Fb(), | |
| m = k.o; | |
| return new l.n.s(n(p, m.fb + "=", "&"), n(p, m.ib + "=", "&"), n(p, m.kb + "=", "&"), k.ba(p, m.db, "(not set)"), k.ba(p, m.gb, "(not set)"), | |
| k.ba(p, m.jb, u && !s(u.R) ? l.J(u.R) : q), k.ba(p, m.eb, q)) | |
| }; | |
| k.Ib = function(p) { | |
| var u = A(p), | |
| m = B(p); | |
| if (f(u, k.o.ab)) { | |
| p = x(p, "?").join("&"); | |
| if (f(p, "&" + k.o.Gb + "=")) | |
| if (m == k.o.Ic) return true | |
| } | |
| return false | |
| }; | |
| k.Fb = function() { | |
| var p, u, m = k.Rb, | |
| r, i, b = k.o.fa; | |
| if (z(m) || k.Ib(m)) return; | |
| p = A(m); | |
| for (r = 0; r < b[g]; r++) { | |
| i = b[r]; | |
| if (f(p, w(i.zb))) { | |
| m = x(m, "?").join("&"); | |
| if (f(m, "&" + i.Nb + "=")) { | |
| u = x(m, "&" + i.Nb + "=")[1]; | |
| if (f(u, "&")) u = x(u, "&")[0]; | |
| return new l.n.s(q, i.zb, q, "(organic)", "organic", u, q) | |
| } | |
| } | |
| } | |
| }; | |
| k.ba = function(p, u, m) { | |
| var r = n(p, u + "=", "&"), | |
| i = !s(r) ? | |
| l.J(r) : (!s(m) ? m : "-"); | |
| return i | |
| }; | |
| k.Nc = function(p) { | |
| var u = k.o.ea, | |
| m = false, | |
| r, i; | |
| if (p && "organic" == p.da) { | |
| r = w(l.J(p.R)); | |
| for (i = 0; i < u[g]; i++) m = m || w(u[i]) == r | |
| } | |
| return m | |
| }; | |
| k.Ec = function() { | |
| var p = "", | |
| u = "", | |
| m = k.Rb; | |
| if (z(m) || k.Ib(m)) return; | |
| p = w(x(m, "://")[1]); | |
| if (f(p, "/")) { | |
| u = l.F(p, l.w(p, "/")); | |
| if (f(u, "?")) u = x(u, "?")[0]; | |
| p = x(p, "/")[0] | |
| } | |
| if (0 == l.w(p, "www.")) p = l.F(p, 4); | |
| return new l.n.s(q, p, q, "(referral)", "referral", q, u) | |
| }; | |
| k.sc = function(p) { | |
| var u = ""; | |
| if (k.o.pa) { | |
| u = l.Db(p); | |
| u = "" != u ? u + "&" : u | |
| } | |
| u += p.search; | |
| return u | |
| }; | |
| k.zc = function() { | |
| return new l.n.s(q, | |
| "(direct)", q, "(direct)", "(none)", q, q) | |
| }; | |
| k.Oc = function(p) { | |
| var u = false, | |
| m, r, i = k.o.ga; | |
| if (p && "referral" == p.da) { | |
| m = w(l.d(p.ia)); | |
| for (r = 0; r < i[g]; r++) u = u || f(m, w(i[r])) | |
| } | |
| return u | |
| }; | |
| k.U = function(p) { | |
| return q != p && p.Fa() | |
| }; | |
| k.yc = function(p, u) { | |
| var m = "", | |
| r = "-", | |
| i, b, e = 0, | |
| j, t, v = k.f; | |
| if (!p) return ""; | |
| t = k.a[l.m] ? k.a[l.m] : ""; | |
| m = k.sc(k.a.location); | |
| if (k.o.I && p.Jb()) { | |
| r = p.Ca(); | |
| if (!s(r) && !f(r, ";")) { | |
| p.Ra(); | |
| return "" | |
| } | |
| } | |
| r = n(t, l.X + v + ".", ";"); | |
| i = k.Fc(m); | |
| if (k.U(i)) { | |
| b = n(m, k.o.hb + "=", "&"); | |
| if ("1" == b && !s(r)) return "" | |
| } | |
| if (!k.U(i)) { | |
| i = k.Fb(); | |
| if (!s(r) && | |
| k.Nc(i)) return "" | |
| } | |
| if (!k.U(i) && u) { | |
| i = k.Ec(); | |
| if (!s(r) && k.Oc(i)) return "" | |
| } | |
| if (!k.U(i)) | |
| if (s(r) && u) i = k.zc(); | |
| if (!k.U(i)) return ""; | |
| if (!s(r)) { | |
| var y = x(r, "."), | |
| E = new l.n.s; | |
| E.Cb(y.slice(4).join(".")); | |
| j = w(E.ka()) == w(i.ka()); | |
| e = y[3] * 1 | |
| } | |
| if (!j || u) { | |
| var F = n(t, l.r + v + ".", ";"), | |
| I = F.lastIndexOf("."), | |
| G = I > 9 ? l.F(F, I + 1) * 1 : 0; | |
| e++; | |
| G = 0 == G ? 1 : G; | |
| p.Xb([v, k.ja, G, e, i.ka()].join(".")); | |
| p.Ra(); | |
| return "&utmcn=1" | |
| } else return "&utmcr=1" | |
| } | |
| }; | |
| _gat.n.s = function(d, a, c, h, o, k, l) { | |
| var s = this; | |
| s.v = d; | |
| s.ia = a; | |
| s.ra = c; | |
| s.L = h; | |
| s.da = o; | |
| s.R = k; | |
| s.vb = l | |
| }; | |
| _gat.n.s.prototype.ka = | |
| function() { | |
| var d = this, | |
| a = _gat, | |
| c = [], | |
| h = [ | |
| [a.Wa, d.v], | |
| [a.Ya, d.ia], | |
| [a.$a, d.ra], | |
| [a.Ua, d.L], | |
| [a.Xa, d.da], | |
| [a.Za, d.R], | |
| [a.Va, d.vb] | |
| ], | |
| o, k; | |
| if (d.Fa()) | |
| for (o = 0; o < h[a.c]; o++) | |
| if (!a.q(h[o][1])) { | |
| k = h[o][1].split("+").join("%20"); | |
| k = k.split(" ").join("%20"); | |
| a.h(c, h[o][0] + k) | |
| } | |
| return c.join("|") | |
| }; | |
| _gat.n.s.prototype.Fa = function() { | |
| var d = this, | |
| a = _gat.q; | |
| return !(a(d.v) && a(d.ia) && a(d.ra)) | |
| }; | |
| _gat.n.s.prototype.Cb = function(d) { | |
| var a = this, | |
| c = _gat, | |
| h = function(o) { | |
| return c.J(c.C(d, o, "|")) | |
| }; | |
| a.v = h(c.Wa); | |
| a.ia = h(c.Ya); | |
| a.ra = h(c.$a); | |
| a.L = h(c.Ua); | |
| a.da = | |
| h(c.Xa); | |
| a.R = h(c.Za); | |
| a.vb = h(c.Va) | |
| }; | |
| _gat.Z = function() { | |
| var d = this, | |
| a = _gat, | |
| c = {}, | |
| h = "k", | |
| o = "v", | |
| k = [h, o], | |
| l = "(", | |
| s = ")", | |
| q = "*", | |
| f = "!", | |
| n = "'", | |
| w = {}; | |
| w[n] = "'0"; | |
| w[s] = "'1"; | |
| w[q] = "'2"; | |
| w[f] = "'3"; | |
| var x = 1; | |
| function g(m, r, i, b) { | |
| if (a.b == c[m]) c[m] = {}; | |
| if (a.b == c[m][r]) c[m][r] = []; | |
| c[m][r][i] = b | |
| } | |
| function z(m, r, i) { | |
| return a.b != c[m] && a.b != c[m][r] ? c[m][r][i] : a.b | |
| } | |
| function B(m, r) { | |
| if (a.b != c[m] && a.b != c[m][r]) { | |
| c[m][r] = a.b; | |
| var i = true, | |
| b; | |
| for (b = 0; b < k[a.c]; b++) | |
| if (a.b != c[m][k[b]]) { | |
| i = false; | |
| break | |
| } | |
| if (i) c[m] = a.b | |
| } | |
| } | |
| function A(m) { | |
| var r = "", | |
| i = false, | |
| b, e; | |
| for (b = 0; b < k[a.c]; b++) { | |
| e = m[k[b]]; | |
| if (a.b != | |
| e) { | |
| if (i) r += k[b]; | |
| r += p(e); | |
| i = false | |
| } else i = true | |
| } | |
| return r | |
| } | |
| function p(m) { | |
| var r = [], | |
| i, b; | |
| for (b = 0; b < m[a.c]; b++) | |
| if (a.b != m[b]) { | |
| i = ""; | |
| if (b != x && a.b == m[b - 1]) { | |
| i += b.toString(); | |
| i += f | |
| } | |
| i += u(m[b]); | |
| a.h(r, i) | |
| } | |
| return l + r.join(q) + s | |
| } | |
| function u(m) { | |
| var r = "", | |
| i, b, e; | |
| for (i = 0; i < m[a.c]; i++) { | |
| b = m.charAt(i); | |
| e = w[b]; | |
| r += a.b != e ? e : b | |
| } | |
| return r | |
| } | |
| d.Kc = function(m) { | |
| return a.b != c[m] | |
| }; | |
| d.N = function() { | |
| var m = [], | |
| r; | |
| for (r in c) | |
| if (a.b != c[r]) a.h(m, r.toString() + A(c[r])); | |
| return m.join("") | |
| }; | |
| d.Sc = function(m) { | |
| if (m == a.b) return d.N(); | |
| var r = [m.N()], | |
| i; | |
| for (i in c) | |
| if (a.b != | |
| c[i] && !m.Kc(i)) a.h(r, i.toString() + A(c[i])); | |
| return r.join("") | |
| }; | |
| d._setKey = function(m, r, i) { | |
| if (typeof i != "string") return false; | |
| g(m, h, r, i); | |
| return true | |
| }; | |
| d._setValue = function(m, r, i) { | |
| if (typeof i != "number" && (a.b == Number || !(i instanceof Number))) return false; | |
| if (Math.round(i) != i || i == NaN || i == Infinity) return false; | |
| g(m, o, r, i.toString()); | |
| return true | |
| }; | |
| d._getKey = function(m, r) { | |
| return z(m, h, r) | |
| }; | |
| d._getValue = function(m, r) { | |
| return z(m, o, r) | |
| }; | |
| d._clearKey = function(m) { | |
| B(m, h) | |
| }; | |
| d._clearValue = function(m) { | |
| B(m, o) | |
| } | |
| }; | |
| _gat.ic = function(d, a) { | |
| var c = this; | |
| c.jd = a; | |
| c.Pc = d; | |
| c._trackEvent = function(h, o, k) { | |
| return a._trackEvent(c.Pc, h, o, k) | |
| } | |
| }; | |
| _gat.kc = function(d) { | |
| var a = this, | |
| c = _gat, | |
| h = c.b, | |
| o = c.q, | |
| k = c.w, | |
| l = c.F, | |
| s = c.C, | |
| q = c.P, | |
| f = c.z, | |
| n = "location", | |
| w = c.c, | |
| x = h, | |
| g = new c.hc, | |
| z = false; | |
| a.a = document; | |
| a.e = window; | |
| a.ja = Math.round((new Date).getTime() / 1000); | |
| a.H = d; | |
| a.yb = a.a.referrer; | |
| a.va = h; | |
| a.j = h; | |
| a.A = h; | |
| a.M = false; | |
| a.aa = h; | |
| a.rb = ""; | |
| a.l = h; | |
| a.Ab = h; | |
| a.f = h; | |
| a.u = h; | |
| function B() { | |
| if ("auto" == g.g) { | |
| var b = a.a.domain; | |
| if ("www." == l(b, 0, 4)) b = l(b, 4); | |
| g.g = b | |
| } | |
| g.g = c.T(g.g) | |
| } | |
| function A() { | |
| var b = g.g, | |
| e = k(b, "www.google.") * k(b, ".google.") * k(b, "google."); | |
| return e || "/" != g.p || k(b, "google.org") > -1 | |
| } | |
| function p(b, | |
| e, j) { | |
| if (o(b) || o(e) || o(j)) return "-"; | |
| var t = s(b, c.r + a.f + ".", e), | |
| v; | |
| if (!o(t)) { | |
| v = f(t, "."); | |
| v[5] = v[5] ? v[5] * 1 + 1 : 1; | |
| v[3] = v[4]; | |
| v[4] = j; | |
| t = v.join(".") | |
| } | |
| return t | |
| } | |
| function u() { | |
| return "file:" != a.a[n].protocol && A() | |
| } | |
| function m(b) { | |
| if (!b || "" == b) return ""; | |
| while (c.Lb(b.charAt(0))) b = l(b, 1); | |
| while (c.Lb(b.charAt(b[w] - 1))) b = l(b, 0, b[w] - 1); | |
| return b | |
| } | |
| function r(b, e, j) { | |
| if (!o(b())) { | |
| e(c.J(b())); | |
| if (!q(b(), ";")) j() | |
| } | |
| } | |
| function i(b) { | |
| var e, j = "" != b && a.a[n].host != b; | |
| if (j) | |
| for (e = 0; e < g.B[w]; e++) j = j && k(c.T(b), c.T(g.B[e])) == -1; | |
| return j | |
| } | |
| a.Bc = function() { | |
| if (!g.g || | |
| "" == g.g || "none" == g.g) { | |
| g.g = ""; | |
| return 1 | |
| } | |
| B(); | |
| return g.pb ? c.t(g.g) : 1 | |
| }; | |
| a.tc = function(b, e) { | |
| if (o(b)) b = "-"; | |
| else { | |
| e += g.p && "/" != g.p ? g.p : ""; | |
| var j = k(b, e); | |
| b = j >= 0 && j <= 8 ? "0" : ("[" == b.charAt(0) && "]" == b.charAt(b[w] - 1) ? "-" : b) | |
| } | |
| return b | |
| }; | |
| a.Ia = function(b) { | |
| var e = "", | |
| j = a.a; | |
| e += a.aa ? a.aa.Xc() : ""; | |
| e += g.qa ? a.rb : ""; | |
| e += g.ta && !o(j.title) ? "&utmdt=" + c.d(j.title) : ""; | |
| e += "&utmhid=" + c.uc() + "&utmr=" + a.va + "&utmp=" + a.Tc(b); | |
| return e | |
| }; | |
| a.Tc = function(b) { | |
| var e = a.a[n]; | |
| b = h != b && "" != b ? c.d(b, true) : c.d(e.pathname + unescape(e.search), true); | |
| return b | |
| }; | |
| a.$c = | |
| function(b) { | |
| if (a.Q()) { | |
| var e = ""; | |
| if (a.l != h && a.l.N().length > 0) e += "&utme=" + c.d(a.l.N()); | |
| e += a.Ia(b); | |
| x.O(e, a.H, a.a, a.f) | |
| } | |
| }; | |
| a.qc = function() { | |
| var b = new c.Y(a.a, g); | |
| return b.Ha(a.f) ? b.Wc() : h | |
| }; | |
| a._getLinkerUrl = function(b, e) { | |
| var j = f(b, "#"), | |
| t = b, | |
| v = a.qc(); | |
| if (v) | |
| if (e && 1 >= j[w]) t += "#" + v; | |
| else if (!e || 1 >= j[w]) | |
| if (1 >= j[w]) t += (q(b, "?") ? "&" : "?") + v; | |
| else t = j[0] + (q(b, "?") ? "&" : "?") + v + "#" + j[1]; | |
| return t | |
| }; | |
| a.Zb = function() { | |
| var b; | |
| if (a.A && a.A[w] >= 10 && !q(a.A, "=")) { | |
| a.u.Uc(a.A); | |
| a.u.cd(); | |
| c._gasoDomain = g.g; | |
| c._gasoCPath = g.p; | |
| b = a.a.createElement("script"); | |
| b.type = "text/javascript"; | |
| b.id = "_gasojs"; | |
| b.src = "/web/20140802003648/https://www.google.com/analytics/reporting/overlay_js?gaso=" + a.A + "&" + c.wa(); | |
| a.a.getElementsByTagName("head")[0].appendChild(b) | |
| } | |
| }; | |
| a.Jc = function() { | |
| var b = a.a[c.m], | |
| e = a.ja, | |
| j = a.u, | |
| t = a.f + "", | |
| v = a.e, | |
| y = v ? v.gaGlobal : h, | |
| E, F = q(b, c.r + t + "."), | |
| I = q(b, c.W + t), | |
| G = q(b, c.ma + t), | |
| C, D = [], | |
| H = "", | |
| K = false, | |
| J; | |
| b = o(b) ? "" : b; | |
| if (g.I) { | |
| E = c.Db(a.a[n]); | |
| if (g.pa && !o(E)) H = E + "&"; | |
| H += a.a[n].search; | |
| if (!o(H) && q(H, c.r)) { | |
| j.Rc(H); | |
| if (!j.Jb()) j.pc(); | |
| C = j.ya() | |
| } | |
| r(j.Ba, j.Wb, j.fc); | |
| r(j.Aa, j.Na, j.Qa) | |
| } | |
| if (!o(C)) | |
| if (o(j.K()) || | |
| o(j.za())) { | |
| C = p(H, "&", e); | |
| a.M = true | |
| } else { | |
| D = f(j.K(), "."); | |
| t = D[0] | |
| } | |
| else if (F) | |
| if (!I || !G) { | |
| C = p(b, ";", e); | |
| a.M = true | |
| } else { | |
| C = s(b, c.r + t + ".", ";"); | |
| D = f(s(b, c.W + t, ";"), ".") | |
| } | |
| else { | |
| C = [t, c.Gc(), e, e, e, 1].join("."); | |
| a.M = true; | |
| K = true | |
| } | |
| C = f(C, "."); | |
| if (v && y && y.dh == t) { | |
| C[4] = y.sid ? y.sid : C[4]; | |
| if (K) { | |
| C[3] = y.sid ? y.sid : C[4]; | |
| if (y.vid) { | |
| J = f(y.vid, "."); | |
| C[1] = J[0]; | |
| C[2] = J[1] | |
| } | |
| } | |
| } | |
| j.Ub(C.join(".")); | |
| D[0] = t; | |
| D[1] = D[1] ? D[1] : 0; | |
| D[2] = undefined != D[2] ? D[2] : g.Yc; | |
| D[3] = D[3] ? D[3] : C[4]; | |
| j.La(D.join(".")); | |
| j.Vb(t); | |
| if (!o(j.Hc())) j.Ma(j.t()); | |
| j.dc(); | |
| j.Pa(); | |
| j.ec() | |
| }; | |
| a.Lc = | |
| function() { | |
| x = new c.jc(g) | |
| }; | |
| a._initData = function() { | |
| var b; | |
| if (!z) { | |
| a.Lc(); | |
| a.f = a.Bc(); | |
| a.u = new c.Y(a.a, g) | |
| } | |
| if (u()) a.Jc(); | |
| if (!z) { | |
| if (u()) { | |
| a.va = a.tc(a.Ac(), a.a.domain); | |
| if (g.sa) { | |
| a.aa = new c.gc(g.ua); | |
| a.aa.xc() | |
| } | |
| if (g.qa) { | |
| b = new c.n(a.f, a.a, a.va, a.ja, g); | |
| a.rb = b.yc(a.u, a.M) | |
| } | |
| } | |
| a.l = new c.Z; | |
| a.Ab = new c.Z; | |
| z = true | |
| } | |
| if (!c.Hb) a.Mc() | |
| }; | |
| a._visitCode = function() { | |
| a._initData(); | |
| var b = s(a.a[c.m], c.r + a.f + ".", ";"), | |
| e = f(b, "."); | |
| return e[w] < 4 ? "" : e[1] | |
| }; | |
| a._cookiePathCopy = function(b) { | |
| a._initData(); | |
| if (a.u) a.u.bd(a.f, b) | |
| }; | |
| a.Mc = function() { | |
| var b = a.a[n].hash, | |
| e; | |
| e = b && "" != b && 0 == k(b, "#gaso=") ? s(b, "gaso=", "&") : s(a.a[c.m], c.Sa, ";"); | |
| if (e[w] >= 10) { | |
| a.A = e; | |
| if (a.e.addEventListener) a.e.addEventListener("load", a.Zb, false); | |
| else a.e.attachEvent("onload", a.Zb) | |
| } | |
| c.Hb = true | |
| }; | |
| a.Q = function() { | |
| return a._visitCode() % 10000 < g.ha * 100 | |
| }; | |
| a.Vc = function() { | |
| var b, e, j = a.a.links; | |
| if (!g.Kb) { | |
| var t = a.a.domain; | |
| if ("www." == l(t, 0, 4)) t = l(t, 4); | |
| g.B.push("." + t) | |
| } | |
| for (b = 0; b < j[w] && (g.Ga == -1 || b < g.Ga); b++) { | |
| e = j[b]; | |
| if (i(e.host)) | |
| if (!e.gatcOnclick) { | |
| e.gatcOnclick = e.onclick ? e.onclick : a.Qc; | |
| e.onclick = function(v) { | |
| var y = !this.target || this.target == "_self" || this.target == "_top" || this.target == "_parent"; | |
| y = y && !a.oc(v); | |
| a.ad(v, this, y); | |
| return y ? false : (this.gatcOnclick ? this.gatcOnclick(v) : true) | |
| } | |
| } | |
| } | |
| }; | |
| a.Qc = function() {}; | |
| a._trackPageview = function(b) { | |
| if (u()) { | |
| a._initData(); | |
| if (g.B) a.Vc(); | |
| a.$c(b); | |
| a.M = false | |
| } | |
| }; | |
| a._trackTrans = function() { | |
| var b = a.f, | |
| e = [], | |
| j, t, v, y; | |
| a._initData(); | |
| if (a.j && a.Q()) { | |
| for (j = 0; j < a.j.la[w]; j++) { | |
| t = a.j.la[j]; | |
| c.h(e, t.S()); | |
| for (v = 0; v < t.ca[w]; v++) c.h(e, t.ca[v].S()) | |
| } | |
| for (y = 0; y < e[w]; y++) x.O(e[y], a.H, a.a, b, true) | |
| } | |
| }; | |
| a._setTrans = | |
| function() { | |
| var b = a.a, | |
| e, j, t, v, y = b.getElementById ? b.getElementById("utmtrans") : (b.utmform && b.utmform.utmtrans ? b.utmform.utmtrans : h); | |
| a._initData(); | |
| if (y && y.value) { | |
| a.j = new c.i; | |
| v = f(y.value, "UTM:"); | |
| g.G = !g.G || "" == g.G ? "|" : g.G; | |
| for (e = 0; e < v[w]; e++) { | |
| v[e] = m(v[e]); | |
| j = f(v[e], g.G); | |
| for (t = 0; t < j[w]; t++) j[t] = m(j[t]); | |
| if ("T" == j[0]) a._addTrans(j[1], j[2], j[3], j[4], j[5], j[6], j[7], j[8]); | |
| else if ("I" == j[0]) a._addItem(j[1], j[2], j[3], j[4], j[5], j[6]) | |
| } | |
| } | |
| }; | |
| a._addTrans = function(b, e, j, t, v, y, E, F) { | |
| a.j = a.j ? a.j : new c.i; | |
| return a.j.nb(b, e, | |
| j, t, v, y, E, F) | |
| }; | |
| a._addItem = function(b, e, j, t, v, y) { | |
| var E; | |
| a.j = a.j ? a.j : new c.i; | |
| E = a.j.xa(b); | |
| if (!E) E = a._addTrans(b, "", "", "", "", "", "", ""); | |
| E.mb(e, j, t, v, y) | |
| }; | |
| a._setVar = function(b) { | |
| if (b && "" != b && A()) { | |
| a._initData(); | |
| var e = new c.Y(a.a, g), | |
| j = a.f; | |
| e.Na(j + "." + c.d(b)); | |
| e.Qa(); | |
| if (a.Q()) x.O("&utmt=var", a.H, a.a, a.f) | |
| } | |
| }; | |
| a._link = function(b, e) { | |
| if (g.I && b) { | |
| a._initData(); | |
| a.a[n].href = a._getLinkerUrl(b, e) | |
| } | |
| }; | |
| a._linkByPost = function(b, e) { | |
| if (g.I && b && b.action) { | |
| a._initData(); | |
| b.action = a._getLinkerUrl(b.action, e) | |
| } | |
| }; | |
| a._setXKey = function(b, e, | |
| j) { | |
| a.l._setKey(b, e, j) | |
| }; | |
| a._setXValue = function(b, e, j) { | |
| a.l._setValue(b, e, j) | |
| }; | |
| a._getXKey = function(b, e) { | |
| return a.l._getKey(b, e) | |
| }; | |
| a._getXValue = function(b, e) { | |
| return a.l.getValue(b, e) | |
| }; | |
| a._clearXKey = function(b) { | |
| a.l._clearKey(b) | |
| }; | |
| a._clearXValue = function(b) { | |
| a.l._clearValue(b) | |
| }; | |
| a._createXObj = function() { | |
| a._initData(); | |
| return new c.Z | |
| }; | |
| a._sendXEvent = function(b) { | |
| var e = ""; | |
| a._initData(); | |
| if (a.Q()) { | |
| e += "&utmt=event&utme=" + c.d(a.l.Sc(b)) + a.Ia(); | |
| x.O(e, a.H, a.a, a.f, false, true) | |
| } | |
| }; | |
| a._createEventTracker = function(b) { | |
| a._initData(); | |
| return new c.ic(b, a) | |
| }; | |
| a._trackEvent = function(b, e, j, t) { | |
| var v = true, | |
| y = a.Ab; | |
| if (h != b && h != e && "" != b && "" != e) { | |
| y._clearKey(5); | |
| y._clearValue(5); | |
| v = y._setKey(5, 1, b) ? v : false; | |
| v = y._setKey(5, 2, e) ? v : false; | |
| v = h == j || y._setKey(5, 3, j) ? v : false; | |
| v = h == t || y._setValue(5, 1, t) ? v : false; | |
| if (v) a._sendXEvent(y) | |
| } else v = false; | |
| return v | |
| }; | |
| a.ad = function(b, e, j) { | |
| a._initData(); | |
| if (a.Q()) { | |
| var t = new c.Z; | |
| t._setKey(6, 1, e.href); | |
| var v = j ? function() { | |
| a.rc(b, e) | |
| } : undefined; | |
| x.O("&utmt=event&utme=" + c.d(t.N()) + a.Ia(), a.H, a.a, a.f, false, true, v) | |
| } | |
| }; | |
| a.rc = function(b, | |
| e) { | |
| if (!b) b = a.e.event; | |
| var j = true; | |
| if (e.gatcOnclick) j = e.gatcOnclick(b); | |
| if (j || typeof j == "undefined") | |
| if (!e.target || e.target == "_self") a.e.location = e.href; | |
| else if (e.target == "_top") a.e.top.document.location = e.href; | |
| else if (e.target == "_parent") a.e.parent.document.location = e.href | |
| }; | |
| a.oc = function(b) { | |
| if (!b) b = a.e.event; | |
| var e = b.shiftKey || b.ctrlKey || b.altKey; | |
| if (!e) | |
| if (b.modifiers && a.e.Event) e = b.modifiers & a.e.Event.CONTROL_MASK || b.modifiers & a.e.Event.SHIFT_MASK || b.modifiers & a.e.Event.ALT_MASK; | |
| return e | |
| }; | |
| a._setDomainName = | |
| function(b) { | |
| g.g = b | |
| }; | |
| a.dd = function() { | |
| return g.g | |
| }; | |
| a._addOrganic = function(b, e) { | |
| c.h(g.fa, new c.cb(b, e)) | |
| }; | |
| a._clearOrganic = function() { | |
| g.fa = [] | |
| }; | |
| a.hd = function() { | |
| return g.fa | |
| }; | |
| a._addIgnoredOrganic = function(b) { | |
| c.h(g.ea, b) | |
| }; | |
| a._clearIgnoredOrganic = function() { | |
| g.ea = [] | |
| }; | |
| a.ed = function() { | |
| return g.ea | |
| }; | |
| a._addIgnoredRef = function(b) { | |
| c.h(g.ga, b) | |
| }; | |
| a._clearIgnoredRef = function() { | |
| g.ga = [] | |
| }; | |
| a.fd = function() { | |
| return g.ga | |
| }; | |
| a._setAllowHash = function(b) { | |
| g.pb = b ? 1 : 0 | |
| }; | |
| a._setCampaignTrack = function(b) { | |
| g.qa = b ? 1 : 0 | |
| }; | |
| a._setClientInfo = function(b) { | |
| g.sa = | |
| b ? 1 : 0 | |
| }; | |
| a._getClientInfo = function() { | |
| return g.sa | |
| }; | |
| a._setCookiePath = function(b) { | |
| g.p = b | |
| }; | |
| a._setTransactionDelim = function(b) { | |
| g.G = b | |
| }; | |
| a._setCookieTimeout = function(b) { | |
| g.wb = b | |
| }; | |
| a._setDetectFlash = function(b) { | |
| g.ua = b ? 1 : 0 | |
| }; | |
| a._getDetectFlash = function() { | |
| return g.ua | |
| }; | |
| a._setDetectTitle = function(b) { | |
| g.ta = b ? 1 : 0 | |
| }; | |
| a._getDetectTitle = function() { | |
| return g.ta | |
| }; | |
| a._setLocalGifPath = function(b) { | |
| g.Da = b | |
| }; | |
| a._getLocalGifPath = function() { | |
| return g.Da | |
| }; | |
| a._setLocalServerMode = function() { | |
| g.D = 0 | |
| }; | |
| a._setRemoteServerMode = function() { | |
| g.D = 1 | |
| }; | |
| a._setLocalRemoteServerMode = | |
| function() { | |
| g.D = 2 | |
| }; | |
| a.gd = function() { | |
| return g.D | |
| }; | |
| a._getServiceMode = function() { | |
| return g.D | |
| }; | |
| a._setSampleRate = function(b) { | |
| g.ha = b | |
| }; | |
| a._setSessionTimeout = function(b) { | |
| g.Tb = b | |
| }; | |
| a._setAllowLinker = function(b) { | |
| g.I = b ? 1 : 0 | |
| }; | |
| a._setAllowAnchor = function(b) { | |
| g.pa = b ? 1 : 0 | |
| }; | |
| a._setCampNameKey = function(b) { | |
| g.db = b | |
| }; | |
| a._setCampContentKey = function(b) { | |
| g.eb = b | |
| }; | |
| a._setCampIdKey = function(b) { | |
| g.fb = b | |
| }; | |
| a._setCampMediumKey = function(b) { | |
| g.gb = b | |
| }; | |
| a._setCampNOKey = function(b) { | |
| g.hb = b | |
| }; | |
| a._setCampSourceKey = function(b) { | |
| g.ib = b | |
| }; | |
| a._setCampTermKey = function(b) { | |
| g.jb = | |
| b | |
| }; | |
| a._setCampCIdKey = function(b) { | |
| g.kb = b | |
| }; | |
| a._getAccount = function() { | |
| return a.H | |
| }; | |
| a._getVersion = function() { | |
| return _gat.lb | |
| }; | |
| a.kd = function(b) { | |
| g.B = []; | |
| if (b) g.B = b | |
| }; | |
| a.md = function(b) { | |
| g.Kb = b | |
| }; | |
| a.ld = function(b) { | |
| g.Ga = b | |
| }; | |
| a._setReferrerOverride = function(b) { | |
| a.yb = b | |
| }; | |
| a.Ac = function() { | |
| return a.yb | |
| } | |
| }; | |
| _gat._getTracker = function(d) { | |
| var a = new _gat.kc(d); | |
| return a | |
| }; | |
| (function() { | |
| if (!window.Seadragon) { | |
| var msg = "Seadragon Progress Bar requires Seadragon Ajax!"; | |
| alert(msg); | |
| throw new Error(msg); | |
| } else if (Seadragon.ProgressBar) { | |
| return; | |
| } | |
| var DEFAULTS = {}; | |
| DEFAULTS.barImage = "images/bramus/custom1_bar.gif"; | |
| DEFAULTS.boxImage = "images/bramus/custom1_box.gif"; | |
| var PB = function(elmt, options) { | |
| this.outer = Seadragon.Utils.getElement(elmt); | |
| this.container = Seadragon.Utils.makeNeutralElement("div"); | |
| this.imgBar = Seadragon.Utils.makeNeutralElement("img"); | |
| this.imgBox = Seadragon.Utils.makeNeutralElement("img"); | |
| this.spring = new Seadragon.Spring(); | |
| this.animating = false; | |
| this.initElements(options || {}); | |
| }; | |
| var PBproto = PB.prototype; | |
| PBproto.initElements = function(options) { | |
| var o = this.outer; | |
| var c = this.container; | |
| var iBar = this.imgBar; | |
| var iBox = this.imgBox; | |
| c.title = "0%"; | |
| iBar.src = options.barImage || DEFAULTS.barImage; | |
| iBox.src = options.boxImage || DEFAULTS.boxImage; | |
| var cStyle = c.style; | |
| var iBarStyle = iBar.style; | |
| var iBoxStyle = iBox.style; | |
| cStyle.width = "100%"; | |
| cStyle.height = "100%"; | |
| cStyle.position = "relative"; | |
| cStyle.overflow = "hidden"; | |
| iBarStyle.position = iBoxStyle.position = "absolute"; | |
| iBarStyle.height = iBoxStyle.height = "100%"; | |
| iBarStyle.top = iBoxStyle.top = "0px"; | |
| iBoxStyle.width = "100%"; | |
| iBoxStyle.left = "0px"; | |
| iBarStyle.width = "200%"; | |
| iBarStyle.right = "0%"; | |
| c.appendChild(iBar); | |
| c.appendChild(iBox); | |
| o.innerHTML = ""; | |
| o.appendChild(c); | |
| }; | |
| PBproto.update = function() { | |
| var target = this.spring.getTarget(); | |
| this.spring.update(); | |
| var current = this.spring.getCurrent(); | |
| var percentage = Math.round(current); | |
| this.container.title = percentage + "%"; | |
| this.imgBar.style.right = -percentage + "%"; | |
| this.animating = current != target; | |
| if (this.animating) { | |
| this.scheduleUpdate(); | |
| } | |
| }; | |
| PBproto.scheduleUpdate = function() { | |
| var pb = this; | |
| window.setTimeout(function() { | |
| pb.update(); | |
| }, 1); | |
| }; | |
| PBproto.getPercentage = function(current) { | |
| if (current) { | |
| return this.spring.getCurrent(); | |
| } else { | |
| return this.spring.getTarget(); | |
| } | |
| }; | |
| PBproto.setPercentage = function(percentage, immediately) { | |
| this.spring.update(); | |
| percentage = Math.max(percentage, 0); | |
| percentage = Math.min(percentage, 100); | |
| if (immediately) { | |
| this.spring.resetTo(percentage); | |
| } else { | |
| this.spring.springTo(percentage); | |
| } | |
| if (!this.animating) { | |
| this.update(); | |
| } | |
| }; | |
| Seadragon.ProgressBar = PB; | |
| })(); | |
| (function() { | |
| if (!window.Seadragon || !Seadragon.ComboViewer) { | |
| throw new Error("missing Seadragon combo viewer component"); | |
| } else if (typeof Seadragon.tinydziEmbed == "function") { | |
| return; | |
| } | |
| Seadragon.Strings.setString("TinyDZI.Tooltips.AboutButton", "About Zoom.it"); | |
| Seadragon.Strings.setString("TinyDZI.About.Header", "If you like it, Zoom.it"); | |
| Seadragon.Strings.setString("TinyDZI.About.Description", "Explore this Deep Zoom Image by clicking to zoom and dragging to pan (or by spinning your scroll wheel). " + "\n\nShare this image or create your own at:"); | |
| Seadragon.Strings.setString("TinyDZI.About.ReturnLink", "/web/20140802003648/http://zoom.it/{0}"); | |
| Seadragon.Strings.setString("TinyDZI.About.PrivacyLinkText", "Privacy"); | |
| Seadragon.Strings.setString("TinyDZI.About.PrivacyLinkUrl", "/web/20140802003648/http://go.microsoft.com/fwlink/?LinkID=74170"); | |
| Seadragon.Strings.setString("TinyDZI.About.FeedbackLinkText", "FAQ"); | |
| Seadragon.Strings.setString("TinyDZI.About.FeedbackLinkUrl", "/web/20140802003648/http://zoom.it/pages/faq/"); | |
| Seadragon.Strings.setString("TinyDZI.Errors.NoId", "Sorry, we can't find this image. Please check the URL."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.None", "Sorry, we can't find this image. Please check the URL."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Internal", "Sorry, an unexpected error occurred."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Abuse", "This image has been blocked for violating the Zoom.it Code of Conduct."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Type", "We couldn't find an image at that URL."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Http", "We got a {0} error at the URL you gave us."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Network", "We couldn't reach the URL you gave us."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.SiteDownMaintenance", "Sorry, we're down for maintenance. Please check back later."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.SiteDownOverload", "Sorry, we're experiencing heavy load. Please check back later."); | |
| Seadragon.Strings.setString("TinyDZI.Errors.Unknown", "Sorry, an unknown error occurred."); | |
| Seadragon.Strings.setString("TinyDZI.Retry.ChangeText", "Change the URL"); | |
| Seadragon.Strings.setString("TinyDZI.Retry.EnterText", "Change the URL"); | |
| Seadragon.Strings.setString("TinyDZI.Retry.RetryText", "try again"); | |
| Seadragon.Strings.setString("TinyDZI.Retry.Structure", " {0} or {1}?"); | |
| Seadragon.Config.tinydziRoot = "/web/20140802003648/http://zoom.it/"; | |
| var HEAD = document.getElementsByTagName("head")[0]; | |
| var CLASS_NAME = "__seadragon"; | |
| var URL_STATUS = "server/status.ashx"; | |
| var URL_IMAGE_INFO = "server/imageinfo.ashx"; | |
| var URL_RETRY = "server/retry.ashx"; | |
| var ARG_ID = "id"; | |
| var ARG_FORMAT = "format"; | |
| var ARG_CALLBACK = "callback"; | |
| var PB_IMAGE_PATH = "../progressbars/"; | |
| var PB_BOX_IMAGE = "percentImage-black.png"; | |
| var PB_BAR_IMAGE = "percentImage_back5.png"; | |
| var JSON_ID = "Id"; | |
| var JSON_URL = "Url"; | |
| var JSON_STAGE = "Stage"; | |
| var JSON_STAGE_TEXT = "StageText"; | |
| var JSON_PROGRESS = "Progress"; | |
| var JSON_ERROR_DETAILS = "ErrorDetails"; | |
| var JSON_SITE_DOWN = "SiteDown"; | |
| var JSON_SOURCE_URL = "Source"; | |
| var JSON_TITLE = "Title"; | |
| var JSON_ATTRIBUTION_TEXT = "AttributionText"; | |
| var JSON_ATTRIBUTION_LINK = "AttributionLink"; | |
| var JSON_IMAGE_WIDTH = "Width"; | |
| var JSON_IMAGE_HEIGHT = "Height"; | |
| var JSON_TILE_SIZE = "TileSize"; | |
| var JSON_TILE_OVERLAP = "TileOverlap"; | |
| var JSON_TILE_FORMAT = "TileFormat"; | |
| var SITE_DOWN_MAINTENANCE = 1; | |
| var SITE_DOWN_OVERLOAD = 2; | |
| var STAGE_ERROR_INTERNAL = -100; | |
| var STAGE_ERROR_ABUSE = -90; | |
| var STAGE_ERROR_TYPE = -20; | |
| var STAGE_ERROR_HTTP = -15; | |
| var STAGE_ERROR_NETWORK = -10; | |
| var STAGE_ERROR_UNKNOWN = -1; | |
| var STAGE_NONE = 0; | |
| var STAGE_QUEUED = 10; | |
| var STAGE_BEGINNING = 20; | |
| var STAGE_DOWNLOADING = 40; | |
| var STAGE_CONVERTING = 70; | |
| var STAGE_FINALIZING = 90; | |
| var STAGE_READY = 100; | |
| var nextId = 0; | |
| function makeHttpGetUrl(url, params) { | |
| var s = [url]; | |
| var hasQ = url.indexOf('?') >= 0; | |
| for (var key in params) { | |
| if (params.hasOwnProperty(key)) { | |
| var value = params[key]; | |
| if (hasQ) { | |
| s.push('&'); | |
| } else { | |
| s.push('?'); | |
| hasQ = true; | |
| } | |
| s.push(key); | |
| s.push('='); | |
| s.push(value); | |
| } | |
| } | |
| return s.join(''); | |
| } | |
| function makeJsonpRequest(url) { | |
| var script = document.createElement("script"); | |
| script.type = "text/javascript"; | |
| script.src = url; | |
| HEAD.appendChild(script); | |
| return script; | |
| } | |
| function makeRandomCallback(actualCallback) { | |
| var name = "_jsonCallback" + | |
| Math.round(Math.random() * 100000000).toString(); | |
| window[name] = function() { | |
| actualCallback.apply(this, arguments); | |
| window[name] = undefined; | |
| }; | |
| return name; | |
| } | |
| function makeContainer(width, height) { | |
| var html = []; | |
| var id = CLASS_NAME + (++nextId); | |
| html.push('<div id="'); | |
| html.push(id); | |
| html.push('" class="'); | |
| html.push(CLASS_NAME); | |
| html.push('" style="width: '); | |
| html.push(width || "auto"); | |
| html.push('; height: '); | |
| html.push(height || "400px"); | |
| html.push('; border: 1px solid black; background: black; color: white; '); | |
| html.push('margin: 0px; padding: 0px;"></div>'); | |
| document.write(html.join('')); | |
| return document.getElementById(id); | |
| } | |
| function setTextCss(textStyle) { | |
| textStyle.color = "white"; | |
| textStyle.fontFamily = 'sans-serif'; | |
| textStyle.fontSize = "16px"; | |
| textStyle.fontSizeAdjust = "none"; | |
| textStyle.fontStyle = "normal"; | |
| textStyle.fontStretch = "normal"; | |
| textStyle.fontVariant = "normal"; | |
| textStyle.fontWeight = "normal"; | |
| textStyle.lineHeight = "1em"; | |
| textStyle.marginTop = "0.25em"; | |
| textStyle.marginBottom = "0.25em"; | |
| textStyle.textAlign = "center"; | |
| textStyle.textDecoration = "none"; | |
| } | |
| function isErrorStage(stage) { | |
| return stage < 0; | |
| } | |
| var Worker = function(width, height, contentId) { | |
| this.contentId = contentId; | |
| this.sourceUrl = null; | |
| this.container = makeContainer(width, height); | |
| this.containerInner = null; | |
| this.progressBar = null; | |
| this.progressTextElmt = null; | |
| this.attributionText = null; | |
| this.attributionLink = null; | |
| }; | |
| Worker.prototype.initialize = function(statusJson, imageInfoJson) { | |
| var haveStatus = !!statusJson && !!statusJson[JSON_STAGE_TEXT]; | |
| var statusReady = haveStatus && !!statusJson[JSON_URL] && statusJson[JSON_STAGE] == STAGE_READY; | |
| var haveImageInfo = !!imageInfoJson && !!imageInfoJson[JSON_TILE_FORMAT]; | |
| this.attributionText = statusJson[JSON_ATTRIBUTION_TEXT]; | |
| this.attributionLink = statusJson[JSON_ATTRIBUTION_LINK]; | |
| this.sourceUrl = statusJson[JSON_SOURCE_URL]; | |
| if (statusReady && haveImageInfo) { | |
| this.handleImageInfo(statusJson[JSON_URL], imageInfoJson); | |
| return; | |
| } | |
| this.containerInner = Seadragon.Utils.makeNeutralElement("span"); | |
| this.container.appendChild(Seadragon.Utils.makeCenteredNode(this.containerInner)); | |
| if (!this.contentId) { | |
| this.switchToError(Seadragon.Strings.getString("TinyDZI.Errors.NoId"), false); | |
| return; | |
| } | |
| if (statusReady) { | |
| this.switchToLoading(); | |
| this.fetchImageInfo(statusJson[JSON_URL]); | |
| return; | |
| } | |
| this.switchToProgress(); | |
| if (haveStatus) { | |
| this.handleStatusResponse(statusJson); | |
| } else { | |
| this.scheduleFetchStatus(); | |
| } | |
| }; | |
| Worker.prototype.fetchImageInfo = function(dziUrl) { | |
| var script = null; | |
| var worker = this; | |
| var tempCallbackName = makeRandomCallback(function(imageInfoJson) { | |
| worker.handleImageInfo(dziUrl, imageInfoJson); | |
| script.parentNode.removeChild(script); | |
| }); | |
| var url = Seadragon.Config.tinydziRoot + URL_IMAGE_INFO; | |
| var params = {}; | |
| params[ARG_ID] = this.contentId; | |
| params[ARG_FORMAT] = "json"; | |
| params[ARG_CALLBACK] = tempCallbackName; | |
| params["__rand__"] = Math.random(); | |
| script = makeJsonpRequest(makeHttpGetUrl(url, params)); | |
| }; | |
| Worker.prototype.fetchStatus = function(retrying) { | |
| var script = null; | |
| var worker = this; | |
| var tempCallbackName = makeRandomCallback(function(statusJson) { | |
| worker.handleStatusResponse(statusJson, retrying); | |
| script.parentNode.removeChild(script); | |
| }); | |
| var url = Seadragon.Config.tinydziRoot + | |
| (retrying ? URL_RETRY : URL_STATUS); | |
| var params = {}; | |
| params[ARG_ID] = this.contentId; | |
| params[ARG_FORMAT] = "json"; | |
| params[ARG_CALLBACK] = tempCallbackName; | |
| params["__rand__"] = Math.random(); | |
| script = makeJsonpRequest(makeHttpGetUrl(url, params)); | |
| }; | |
| Worker.prototype.scheduleFetchStatus = function() { | |
| var worker = this; | |
| window.setTimeout(function() { | |
| worker.fetchStatus(); | |
| }, 1000); | |
| }; | |
| Worker.prototype.handleImageInfo = function(dziUrl, imageInfoJson) { | |
| this.switchToViewer({ | |
| url: dziUrl, | |
| width: imageInfoJson[JSON_IMAGE_WIDTH], | |
| height: imageInfoJson[JSON_IMAGE_HEIGHT], | |
| tileSize: imageInfoJson[JSON_TILE_SIZE], | |
| tileOverlap: imageInfoJson[JSON_TILE_OVERLAP], | |
| tileFormat: imageInfoJson[JSON_TILE_FORMAT] | |
| }); | |
| }; | |
| Worker.prototype.handleStatusResponse = function(statusJson, retrying) { | |
| var stage = statusJson[JSON_STAGE]; | |
| var siteDownCode = statusJson[JSON_SITE_DOWN]; | |
| var errorDetails = statusJson[JSON_ERROR_DETAILS]; | |
| if (retrying && siteDownCode && isErrorStage(stage)) { | |
| var stringName = (siteDownCode == SITE_DOWN_OVERLOAD) ? "TinyDZI.Errors.SiteDownOverload" : "TinyDZI.Errors.SiteDownMaintenance"; | |
| this.switchToError(Seadragon.Strings.getString(stringName), false); | |
| return; | |
| } | |
| var allowRetry = !siteDownCode; | |
| this.sourceUrl = statusJson[JSON_SOURCE_URL]; | |
| switch (stage) { | |
| case STAGE_ERROR_INTERNAL: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Internal", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| case STAGE_ERROR_ABUSE: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Abuse", errorDetails); | |
| this.switchToError(msg, false); | |
| return; | |
| case STAGE_ERROR_TYPE: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Type", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| case STAGE_ERROR_HTTP: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Http", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| case STAGE_ERROR_NETWORK: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Network", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| case STAGE_ERROR_UNKNOWN: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Unknown", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| case STAGE_NONE: | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.None", errorDetails); | |
| this.switchToError(msg, false); | |
| return; | |
| case STAGE_READY: | |
| this.progressBar.setPercentage(100); | |
| this.progressTextElmt.innerHTML = "Loading..."; | |
| this.attributionText = statusJson[JSON_ATTRIBUTION_TEXT]; | |
| this.attributionLink = statusJson[JSON_ATTRIBUTION_LINK]; | |
| this.fetchImageInfo(statusJson[JSON_URL]); | |
| return; | |
| } | |
| if (isErrorStage(stage)) { | |
| var msg = Seadragon.Strings.getString("TinyDZI.Errors.Unknown", errorDetails); | |
| this.switchToError(msg, allowRetry); | |
| return; | |
| } | |
| this.progressTextElmt.innerHTML = statusJson[JSON_STAGE_TEXT] + "..."; | |
| this.progressBar.setPercentage(Math.round(100 * (statusJson[JSON_PROGRESS] || 0))); | |
| this.scheduleFetchStatus(); | |
| }; | |
| Worker.prototype.switchToError = function(errorMsg, allowRetry) { | |
| var errorElmt = Seadragon.Utils.makeNeutralElement("div"); | |
| var errorElmtStyle = errorElmt.style; | |
| setTextCss(errorElmtStyle); | |
| errorElmtStyle.color = "#f84"; | |
| errorElmtStyle.margin = "0em 2em"; | |
| errorElmt.appendChild(document.createTextNode(errorMsg)); | |
| this.containerInner.innerHTML = ""; | |
| this.containerInner.appendChild(errorElmt); | |
| if (!allowRetry) { | |
| return; | |
| } | |
| var createLink = Seadragon.Utils.makeNeutralElement("a"); | |
| var retryLink = Seadragon.Utils.makeNeutralElement("a"); | |
| var root = Seadragon.Config.tinydziRoot; | |
| if (this.sourceUrl) { | |
| createLink.href = [root, "pages/create/?url=", window.encodeURIComponent(this.sourceUrl)].join(''); | |
| createLink.appendChild(document.createTextNode(Seadragon.Strings.getString("TinyDZI.Retry.ChangeText"))); | |
| } else { | |
| createLink.href = [root, "pages/create/"].join(''); | |
| createLink.appendChild(document.createTextNode(Seadragon.Strings.getString("TinyDZI.Retry.EnterText"))); | |
| } | |
| retryLink.href = [root, this.contentId].join(''); | |
| retryLink.appendChild(document.createTextNode(Seadragon.Strings.getString("TinyDZI.Retry.RetryText"))); | |
| var createLinkStyle = createLink.style; | |
| var retryLinkStyle = retryLink.style; | |
| setTextCss(createLinkStyle); | |
| setTextCss(retryLinkStyle); | |
| createLinkStyle.color = retryLinkStyle.color = "#ff0"; | |
| createLinkStyle.textDecoration = retryLinkStyle.textDecoration = "none"; | |
| createLinkStyle.whiteSpace = retryLinkStyle.whiteSpace = "nowrap"; | |
| errorElmt.appendChild(document.createTextNode(" ")); | |
| errorElmt.appendChild(createLink) | |
| errorElmt.appendChild(document.createTextNode(" or ")); | |
| errorElmt.appendChild(retryLink); | |
| errorElmt.appendChild(document.createTextNode("?")); | |
| var worker = this; | |
| Seadragon.Utils.addEvent(retryLink, "click", function(event) { | |
| Seadragon.Utils.cancelEvent(event); | |
| worker.switchToProgress(); | |
| worker.fetchStatus(true); | |
| }); | |
| }; | |
| Worker.prototype.switchToLoading = function() { | |
| var loadingSpan = Seadragon.Utils.makeNeutralElement("span"); | |
| var loadingSpanStyle = loadingSpan.style; | |
| setTextCss(loadingSpanStyle); | |
| loadingSpan.appendChild(document.createTextNode("Loading...")); | |
| this.containerInner.innerHTML = ""; | |
| this.containerInner.appendChild(loadingSpan); | |
| }; | |
| Worker.prototype.switchToProgress = function() { | |
| var pBarDiv = Seadragon.Utils.makeNeutralElement("div"); | |
| var pTextDiv = Seadragon.Utils.makeNeutralElement("div"); | |
| var pBarStyle = pBarDiv.style; | |
| var pTextStyle = pTextDiv.style; | |
| pBarStyle.width = "250px"; | |
| pBarStyle.height = "15px"; | |
| pBarStyle.maxWidth = "50%"; | |
| pBarStyle.margin = "auto"; | |
| pBarStyle.paddingBottom = "5px"; | |
| pTextDiv.innerHTML = " "; | |
| setTextCss(pTextStyle); | |
| this.progressBar = new Seadragon.ProgressBar(pBarDiv, { | |
| barImage: Seadragon.Config.imagePath + PB_IMAGE_PATH + PB_BAR_IMAGE, | |
| boxImage: Seadragon.Config.imagePath + PB_IMAGE_PATH + PB_BOX_IMAGE | |
| }); | |
| this.progressTextElmt = pTextDiv; | |
| this.containerInner.innerHTML = ""; | |
| this.containerInner.appendChild(pBarDiv); | |
| this.containerInner.appendChild(pTextDiv); | |
| }; | |
| Worker.prototype.switchToViewer = function(dziInfo) { | |
| var id = this.contentId; | |
| var attrText = this.attributionText; | |
| var attrLink = this.attributionLink || this.sourceUrl; | |
| Seadragon.ComboViewer.createAndOpenDzi(this.container, dziInfo, function(viewer, wasCalledBefore) { | |
| viewer.setAboutHeader(Seadragon.Strings.getString("TinyDZI.About.Header", id)); | |
| viewer.setAboutDescription(Seadragon.Strings.getString("TinyDZI.About.Description", id)); | |
| viewer.setAboutMainLink(Seadragon.Strings.getString("TinyDZI.About.ReturnLink", id)); | |
| viewer.addAboutFooterLink(Seadragon.Strings.getString("TinyDZI.About.PrivacyLinkUrl", id), Seadragon.Strings.getString("TinyDZI.About.PrivacyLinkText", id)); | |
| viewer.addAboutFooterLink(Seadragon.Strings.getString("TinyDZI.About.FeedbackLinkUrl", id), Seadragon.Strings.getString("TinyDZI.About.FeedbackLinkText", id)); | |
| viewer.setLogoTooltip(Seadragon.Strings.getString("TinyDZI.Tooltips.AboutButton", id)); | |
| if (attrText) { | |
| viewer.setLogoCaption(attrText, attrLink); | |
| } | |
| if (!wasCalledBefore) { | |
| var callback = Seadragon.tinydziEmbed.onViewerCreate; | |
| if (typeof callback === "function") { | |
| callback(id, viewer); | |
| } | |
| viewer.onFirstInteraction = function() { | |
| var callback = Seadragon.tinydziEmbed.onFirstInteraction; | |
| if (typeof callback === "function") { | |
| callback(id, viewer); | |
| } | |
| }; | |
| } | |
| viewer.onResize = function(viewer) { | |
| var callback = Seadragon.tinydziEmbed.onViewerResize; | |
| if (typeof callback === "function") { | |
| callback(id, viewer); | |
| } | |
| }; | |
| }); | |
| }; | |
| Seadragon.tinydziEmbed = function(width, height, contentId, statusJson, imageInfoJson) { | |
| new Worker(width, height, contentId).initialize(statusJson, imageInfoJson); | |
| }; | |
| Seadragon.tinydziEmbed.onViewerCreate = null; | |
| Seadragon.tinydziEmbed.onFirstInteraction = null; | |
| Seadragon.tinydziEmbed.onViewerResize = null; | |
| })(); | |
| (function() { | |
| var BASE = "/web/20140802003648/http://zoom.it/"; | |
| var PUBLIC = "/web/20140802003648/http://zoom.it/"; | |
| Seadragon.Config.imagePath = BASE + "images/seajax/"; | |
| Seadragon.Config.xapPath = BASE + "scripts/"; | |
| Seadragon.Config.tinydziRoot = BASE; | |
| Seadragon.Strings.setString("About.LogoUrl", PUBLIC); | |
| Seadragon.Strings.setString("About.MainUrl", PUBLIC + "pages/create/"); | |
| Seadragon.Strings.setString("TinyDZI.About.ReturnLink", PUBLIC + "{0}"); | |
| try { | |
| Seadragon.Tracker = Seadragon.Tracker || _gat._getTracker("UA-5779771-7"); | |
| Seadragon.Tracker._setReferrerOverride(window.location.href); | |
| } catch (e) {} | |
| Seadragon.tinydziEmbed.onViewerCreate = function(id, viewer) { | |
| if (!Seadragon.Tracker) { | |
| return; | |
| } | |
| // track whether this embed is silverlight or ajax | |
| Seadragon.Tracker._trackPageview("/tracking/embed/" + id + "/viewer-is-" + | |
| (viewer.isSilverlight ? "silverlight" : "seajax")); | |
| }; | |
| Seadragon.tinydziEmbed.onFirstInteraction = function(id, viewer) { | |
| if (!Seadragon.Tracker) { | |
| return; | |
| } | |
| // track that first interaction occurred! | |
| Seadragon.Tracker._trackPageview("/tracking/embed/" + id + | |
| "/first-user-interaction"); | |
| }; | |
| })(); | |
| Seadragon.tinydziEmbed("auto", "400px", "h", { | |
| "AttributionLink": null, | |
| "AttributionText": null, | |
| "ErrorDetails": "", | |
| "Id": "h", | |
| "Progress": 1, | |
| "SiteDown": 0, | |
| "Source": "http:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/36\/SeattleI5Skyline.jpg", | |
| "Stage": 100, | |
| "StageText": "Ready", | |
| "Title": null, | |
| "Type": 1, | |
| "TypeText": "Image", | |
| "Url": "http:\/\/cache.zoom.it\/content\/h.dzi" | |
| }, { | |
| "Height": 2405, | |
| "Id": "h", | |
| "TileFormat": "jpg", | |
| "TileOverlap": 1, | |
| "TileSize": 254, | |
| "Width": 4013 | |
| }); | |
| try { | |
| Seadragon.Tracker._trackPageview("/h.js?width=auto&height=400px"); | |
| } catch (e) {} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment