(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.About.Description","Use your mouse and scroll wheel to pan and zoom around the image. "+"View, share or create your own at:");Seadragon.Strings.setString("TinyDZI.About.ReturnLink","http://seadragon.com/view/{0}");Seadragon.Strings.setString("TinyDZI.About.PrivacyLinkText","Privacy");Seadragon.Strings.setString("TinyDZI.About.PrivacyLinkUrl","http://go.microsoft.com/fwlink/?LinkID=74170");Seadragon.Strings.setString("TinyDZI.About.FeedbackLinkText","Feedback");Seadragon.Strings.setString("TinyDZI.About.FeedbackLinkUrl","http://getsatisfaction.com/livelabs/products/livelabs_seadragoncom/");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 Seadragon.com Code of Conduct.");Seadragon.Strings.setString("TinyDZI.Errors.Type","We couldn't find an image at that URL. "+"Please make sure the URL points directly to an image file and not to a page that contains one.");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="http://seadragon.com/";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 getTilesUrl(dziUrl){var urlParts=dziUrl.split('/');var filename=urlParts[urlParts.length-1];var lastDot=filename.lastIndexOf('.');if(lastDot>-1){urlParts[urlParts.length-1]=filename.slice(0,lastDot);}
return urlParts.join('/')+"_files/";}
function isErrorStage(stage){return stage<0;}
var Worker=function(width,height,contentId,fullPage){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;this.fullPage=fullPage||false;};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(dziUrl,new Seadragon.DziTileSource(imageInfoJson[JSON_IMAGE_WIDTH],imageInfoJson[JSON_IMAGE_HEIGHT],imageInfoJson[JSON_TILE_SIZE],imageInfoJson[JSON_TILE_OVERLAP],getTilesUrl(dziUrl),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,"create/?url=",window.encodeURIComponent(this.sourceUrl)].join('');createLink.appendChild(document.createTextNode(Seadragon.Strings.getString("TinyDZI.Retry.ChangeText")));}else{createLink.href=[root,"create/"].join('');createLink.appendChild(document.createTextNode(Seadragon.Strings.getString("TinyDZI.Retry.EnterText")));}
retryLink.href=[root,"view/",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="&nbsp;";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(dziUrl,dziTileSource){var id=this.contentId;var attrText=this.attributionText;var attrLink=this.attributionLink||this.sourceUrl;var fullPage=this.fullPage;Seadragon.ComboViewer.createAndOpenDziTileSource(this.container,dziUrl,dziTileSource,function(viewer){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));if(attrText){viewer.setLogoCaption(attrText,attrLink);}
viewer.setFullPage(fullPage);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);}};});};Seadragon.tinydziEmbed=function(width,height,contentId,statusJson,imageInfoJson,fullPage){new Worker(width,height,contentId,fullPage).initialize(statusJson,imageInfoJson);};Seadragon.tinydziEmbed.onViewerCreate=null;Seadragon.tinydziEmbed.onFirstInteraction=null;})();