/*! Crocodoc Viewer - v0.10.8 | (c) 2015 Box */ !function(a){"use strict";a.Crocodoc=function(a){return"object"!=typeof exports?a(jQuery):void(module.exports=a)}(function(b){function c(){a.loadSVG=function(b){var c=new a.DOMParser,d=c.parseFromString(b,"image/svg+xml"),e=document.importNode(d.documentElement,!0);e.setAttribute("width","100%"),e.setAttribute("height","100%"),document.body?document.body.appendChild(e):document.documentElement.appendChild(e)}}var d="crocodoc-",e="data-svg-version",f=d+"viewer",g=d+"doc",h=d+"viewport",i=d+"viewer-logo",j=d+"draggable",k=d+"dragging",l=d+"text-selected",m=d+"text-disabled",n=d+"links-disabled",o=d+"mobile",p=d+"ielt9",q=d+"supports-svg",r=d+"window-as-viewport",s=d+"layout-",t=d+"current-page",u=d+"preceding-page",v=d+"page",w=v+"-inner",x=v+"-content",y=v+"-svg",z=v+"-text",A=v+"-link",B=v+"-links",C=v+"-autoscale",D=v+"-loading",E=v+"-error",F=v+"-visible",C=v+"-autoscale",G=v+"-prev",H=v+"-next",I=v+"-before",J=v+"-after",K=v+"-before-buffer",L=v+"-after-buffer",M=[H,J,G,I,K,L].join(" "),N='
',O='
',P=1024,Q="fitwidth",R="fitheight",S="auto",T="in",U="out",V="previous",W="next",X="vertical",Y="vertical-single-column",Z="horizontal",$="presentation",_="presentation-two-page",ab="text",bb="converting",cb="not loaded",db="loading",eb="loaded",fb="error",gb="padding-",hb=gb+"top",ib=gb+"right",jb=gb+"left",kb=gb+"bottom",lb=.95,mb=.99,nb=100,ob=32,pb=8,qb=1e3,rb="image/svg+xml",sb="",tb='",ub=1,vb=2,wb=3,xb=4,yb=5,zb=6,Ab=7,Bb=8;if("undefined"==typeof b)throw new Error("jQuery is required");var Cb=function(){function a(c,d,e){var f;for(e=e||c,f=0;f"+d[f]);b[d[f]]&&a(c,b[d[f]].mixins,e+"->"+d[f])}}var b={},c={};return{ZOOM_FIT_WIDTH:Q,ZOOM_FIT_HEIGHT:R,ZOOM_AUTO:S,ZOOM_IN:T,ZOOM_OUT:U,SCROLL_PREVIOUS:V,SCROLL_NEXT:W,LAYOUT_VERTICAL:X,LAYOUT_VERTICAL_SINGLE_COLUMN:Y,LAYOUT_HORIZONTAL:Z,LAYOUT_PRESENTATION:$,LAYOUT_PRESENTATION_TWO_PAGE:_,LAYOUT_TEXT:ab,ASSET_REQUEST_RETRIES:1,viewerTemplate:N,pageTemplate:O,components:b,utilities:c,createViewer:function(a,b){return new Cb.Viewer(a,b)},getViewer:function(a){return Cb.Viewer.get(a)},addComponent:function(c,d,e){d instanceof Function&&(e=d,d=[]),a(c,d),b[c]={mixins:d,creator:e}},createComponent:function(a,c){var d=b[a];if(d){for(var e=[],f=0;fc;++c)e=g[c],e&&(h=e.messages||[],-1!==f.inArray(a,h)&&f.isFn(e.onmessage)&&e.onmessage.call(e,a,b))}function d(){for(var a;h.length;)a=h.shift(),c(a.name,a.data);h=null}function e(a){f.isFn(a.destroy)&&!a._destroyed&&(a.destroy(),a._destroyed=!0)}var f=Cb.getUtility("common"),g=[],h=[],i={},j=!1;a.dataProviders=a.dataProviders||{},this.createComponent=function(a){var b=Cb.createComponent(a,this);return b&&(b.componentName=a,g.push(b)),b},this.destroyComponent=function(a){var b,c;for(b=0,c=g.length;c>b;++b)if(a===g[b]){e(a),g.splice(b,1);break}},this.destroy=function(){var a,b,c,d=g.slice();for(a=0,b=d.length;b>a;++a)c=d[a],e(c);g=[],i={}},this.broadcast=function(a,b){j?c(a,b):h.push({name:a,data:b})},this.getUtility=function(a){return Cb.getUtility(a)},this.getConfig=function(){return a},this.ready=function(){j||(j=!0,d())},this.get=function(c,d){var e=a.dataProviders[c]||c,f=this.getDataProvider(e);return f?f.get(c,d):b.Deferred().reject("data-provider not found").promise()},this.getDataProvider=function(a){var b;return i[a]?b=i[a]:(b=this.createComponent("data-provider-"+a),i[a]=b),b}}}(),function(){function a(a,b){var c=!1;return{type:a,data:b,preventDefault:function(){c=!0},isDefaultPrevented:function(){return c}}}Cb.EventTarget=function(){this._handlers={}},Cb.EventTarget.prototype={constructor:Cb.EventTarget,on:function(a,b){"undefined"==typeof this._handlers[a]&&(this._handlers[a]=[]),this._handlers[a].push(b)},fire:function(b,c){var d,e,f,g=a(b,c);if(d=this._handlers[g.type],d instanceof Array)for(d=d.concat(),e=0,f=d.length;f>e;e++)d[e]&&d[e].call(this,g);if(d=this._handlers.all,d instanceof Array)for(d=d.concat(),e=0,f=d.length;f>e;e++)d[e]&&d[e].call(this,g);return g},off:function(a,b){var c,d,e=this._handlers[a];if(e instanceof Array){if(!b)return void(e.length=0);for(c=0,d=e.length;d>c;c++)if(e[c]===b||e[c].handler===b){e.splice(c,1);break}}},one:function(a,b){var c=this,d=function(e){c.off(a,d),b.call(c,e)};d.handler=b,this.on(a,d)}}}(),function(){var a=0,c={};Cb.Viewer=function(d,e){function f(){l.init()}Cb.EventTarget.call(this);var g,h=Cb.getUtility("common"),i=b(d),j=h.extend(!0,{},Cb.Viewer.defaults,e),k=new Cb.Scope(j),l=k.createComponent("viewer-base");if(0===i.length)throw new Error("Invalid container element");this.id=j.id=++a,j.api=this,j.$el=i,c[this.id]=this,this.destroy=function(){delete c[j.id],k.broadcast("destroy"),k.destroy()},this.load=function(){l.loadAssets()},this.setLayout=function(a){g=null,g=l.setLayout(a)},this.zoom=function(a){var b=parseFloat(a);g&&(b&&(a=b/(j.pageScale||1)),g.setZoom(a))},this.scrollTo=function(a){g&&h.isFn(g.scrollTo)&&g.scrollTo(a)},this.scrollBy=function(a,b){g&&g.scrollBy(a,b)},this.focus=function(){g&&g.focus()},this.enableTextSelection=function(){i.toggleClass(m,!1),j.enableTextSelection||(j.enableTextSelection=!0,k.broadcast("textenabledchange",{enabled:!0}))},this.disableTextSelection=function(){i.toggleClass(m,!0),j.enableTextSelection&&(j.enableTextSelection=!1,k.broadcast("textenabledchange",{enabled:!1}))},this.enableLinks=function(){j.enableLinks||(i.removeClass(n),j.enableLinks=!0)},this.disableLinks=function(){j.enableLinks&&(i.addClass(n),j.enableLinks=!1)},this.updateLayout=function(){g&&g.update()},f()},Cb.Viewer.prototype=new Cb.EventTarget,Cb.Viewer.prototype.constructor=Cb.Viewer,Cb.Viewer.get=function(a){return c[a]},Cb.Viewer.defaults={url:null,layout:X,zoom:S,page:1,enableTextSelection:!0,enableLinks:!0,enableDragging:!1,queryParams:null,plugins:{},useWindowAsViewport:!1,conversionIsComplete:!0,template:{svg:"page-{{page}}.svg",img:"page-{{page}}.png",html:"text-{{page}}.html",css:"stylesheet.css",json:"info.json"},dataProviders:{metadata:"metadata",stylesheet:"stylesheet","page-svg":"page-svg","page-text":"page-text","page-img":"page-img"},pageStart:null,pageEnd:null,autoloadFirstPage:!0,zoomLevels:[.25,.5,.75,1,1.25,1.5,2,3]}}(),Cb.addDataProvider("metadata",function(a){function b(a){return d.parseJSON(a)}var c=a.getUtility("ajax"),d=a.getUtility("common"),e=a.getConfig();return{get:function(){var a=this.getURL(),d=c.fetch(a,Cb.ASSET_REQUEST_RETRIES);return d.then(b).promise({abort:d.abort})},getURL:function(){var a=e.template.json;return e.url+a+e.queryString}}}),Cb.addDataProvider("page-img",function(a){var c=a.getUtility("common"),d=a.getConfig();return{get:function(a,c){function d(){f.setAttribute("src",i)}function e(){f&&f.removeAttribute("src")}var f=this.getImage(),g=Cb.ASSET_REQUEST_RETRIES,h=!1,i=this.getURL(c),j=b.Deferred();return f.onload=function(){h=!0,j.resolve(f)},f.onerror=function(){g>0?(g--,e(),d()):(f=null,h=!1,j.reject({error:"image failed to load",resource:i}))},d(),j.promise({abort:function(){h||(e(),j.reject())}})},getURL:function(a){var b=c.template(d.template.img,{page:a});return d.url+b+d.queryString},getImage:function(){return new Image}}}),Cb.addDataProvider("page-svg",function(a){function b(a,b){var c="";return g.firefox&&!h.isSubpxSupported()&&(c+=""),a=a.replace(l,c)}function c(c){if(!j){var f,g=i.queryString.replace("&","&");return f=e.countInStr(c,'xlink:href="data:image'),f>d&&(c=c.replace(/]*>/gi,"")),c=c.replace(/href="([^"#:]*)"/g,function(a,b){return'href="'+i.url+b+g+'"'}),a.get("stylesheet").then(function(a){return b(c,a)})}}var d=1e3,e=a.getUtility("common"),f=a.getUtility("ajax"),g=a.getUtility("browser"),h=a.getUtility("subpx"),i=a.getConfig(),j=!1,k={},l=/]*>(\s*<\/xhtml:link>)?/i;return{get:function(a,b){var d,e=this.getURL(b);return k[b]?k[b]:(d=f.fetch(e,Cb.ASSET_REQUEST_RETRIES),k[b]=d.then(c).promise({abort:function(){d.abort(),k&&delete k[b]}}),k[b])},getURL:function(a){var b=e.template(i.template.svg,{page:a});return i.url+b+i.queryString},destroy:function(){j=!0,e=f=h=g=i=k=null}}}),Cb.addDataProvider("page-text",function(a){function b(a){if(!g){var b=d.countInStr(a,"c?"":a=a.replace(/=200&&300>a||304===a}function f(a){return a=j.extend(!0,{},a||{}),a.method=a.method||"GET",a.headers=a.headers||[],a.data=a.data||"","string"!=typeof a.data&&(a.data=b.param(a.data),"GET"!==a.method&&(a.data=a.data,a.headers.push(["Content-Type","application/x-www-form-urlencoded"]))),a}function g(a,b){var c;for(c=0;c0?(c--,f=e()):i.reject(a)}function e(){return h.request(a,{success:function(){var b,c;if(!g){if(c=this.rawRequest,202===this.status&&j.isFn(c.getResponseHeader)&&(b=parseInt(c.getResponseHeader("retry-after")),b>0))return void setTimeout(e,1e3*b);this.responseText?i.resolve(this.responseText):d({error:"empty response",status:this.status,resource:a})}},fail:function(){g||d({error:this.statusText,status:this.status,resource:a})}})}var f,g=!1,h=this,i=b.Deferred();return f=e(),i.promise({abort:function(){g=!0,f.abort()}})}}}),Cb.addUtility("browser",function(){var a,b=navigator.userAgent,c={},d=/ip(hone|od|ad)/i.test(b),e=/android/i.test(b),f=/blackberry/i.test(b),g=/webos/i.test(b),h=/silk|kindle/i.test(b),i=/MSIE|Trident/i.test(b);return i&&(c.ie=!0,a=/MSIE/i.test(b)?/MSIE\s+(\d+\.\d+)/i.exec(b):/Trident.*rv[ :](\d+\.\d+)/.exec(b),c.version=a&&parseFloat(a[1]),c.ielt9=c.version<9,c.ielt10=c.version<10,c.ielt11=c.version<11),d&&(c.ios=!0,a=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),c.version=a&&parseFloat(a[1]+"."+a[2])),c.mobile=/mobile/i.test(b)||d||e||f||g||h,c.firefox=/firefox/i.test(b),/safari/i.test(b)&&(c.chrome=/chrome/i.test(b),c.safari=!c.chrome),c.safari&&(a=navigator.appVersion.match(/Version\/(\d+(\.\d+)?)/),c.version=a&&parseFloat(a[1])),c}),Cb.addUtility("common",function(){var c=1.33333,d={};return d.extend=b.extend,d.each=b.each,d.map=b.map,d.param=b.param,d.parseJSON=b.parseJSON,d.stringifyJSON="undefined"!=typeof a.JSON?a.JSON.stringify:function(){throw new Error("JSON.stringify not supported")},b.extend(d,{bisectLeft:function(a,b,c){for(var d,e,f=0,g=a.length;g>f;)e=Math.floor((f+g)/2),d=c?a[e][c]:a[e],b>d?f=e+1:g=e;return f},bisectRight:function(a,b,c){for(var d,e,f=0,g=a.length;g>f;)e=Math.floor((f+g)/2),d=c?a[e][c]:a[e],d>b?g=e:f=e+1;return f},clamp:function(a,b,c){return b>a?b:a>c?c:a},sign:function(a){var b=parseInt(a,10);return b?0>b?-1:1:b},isFn:function(a){return"function"==typeof a},inArray:function(a,c){return d.isFn(c.indexOf)?c.indexOf(a):b.inArray(a,c)},constrainRange:function(a,b,c){var e=b-a;return 0>e?{min:-1,max:-1}:(a=d.clamp(a,0,c),b=d.clamp(a+e,0,c),e>b-a&&(a=d.clamp(b-e,0,c)),{min:a,max:b})},now:function(){return(new Date).getTime()},throttle:function(a,b){function c(){i=d.now(),g=null,h=b.apply(e,f)}var e,f,g,h,i=0;return function(){var j=d.now(),k=a-(j-i);return e=this,f=arguments,0>=k?(clearTimeout(g),g=null,i=j,h=b.apply(e,f)):g||(g=setTimeout(c,k)),h}},debounce:function(a,b){function c(){var j=d.now()-h;a>j?g=setTimeout(c,a-j):(g=null,i=b.apply(e,f),e=f=null)}var e,f,g,h,i;return function(){return e=this,f=arguments,h=d.now(),g||(g=setTimeout(c,a)),i}},insertCSS:function(a){var b=document.createElement("style"),c=document.createTextNode(a);try{b.setAttribute("type","text/css"),b.appendChild(c)}catch(d){}return document.getElementsByTagName("head")[0].appendChild(b),b},appendCSSRule:function(a,b,c){var d;return a.insertRule?a.insertRule(b+"{"+c+"}",a.cssRules.length):(d=a.addRule(b,c,a.rules.length),0>d&&(d=a.rules.length-1),d)},deleteCSSRule:function(a,b){a.deleteRule?a.deleteRule(b):a.removeRule(b)},getSelectedNode:function(){var b,c,d;return a.getSelection?(c=a.getSelection(),c.rangeCount&&(d=c.getRangeAt(0),d.collapsed||(b=c.anchorNode.parentNode))):document.selection&&(b=document.selection.createRange().parentElement()),b},getComputedStyle:function(b){return"getComputedStyle"in a?a.getComputedStyle(b):b.currentStyle},calculatePtSize:function(){var a,b,e=1e4,f=document.createElement("div");return f.style.display="block",f.style.position="absolute",f.style.width=e+"pt",document.body.appendChild(f),a=d.getComputedStyle(f),b=a&&a.width?parseFloat(a.width)/e:c,document.body.removeChild(f),b},countInStr:function(a,b){for(var c,d=0;c=a.indexOf(b,c)+1;)d++;return d},template:function(a,b){var c;for(c in b)b.hasOwnProperty(c)&&(a=a.replace(new RegExp("\\{\\{"+c+"\\}\\}","g"),b[c]));return a}})}),Cb.addUtility("subpx",function(c){function d(){if(!b.support.leadingWhitespace)return!1;var c=b(g.template(f,{size:12.5})).appendTo(document.documentElement).get(0),d=b(c).css("font-size"),e=b(c).width();b(c).remove(),c=b(g.template(f,{size:12.6})).appendTo(document.documentElement).get(0);var h=b(c).css("font-size"),i=b(c).width();if(b(c).remove(),!("ontouchstart"in a)){if(d===h)return!1;if(e===i)return!1}return!0}var e="crocodoc-subpx-fix",f=''+new Array(100).join("A")+"",g=c.getUtility("common"),h=d();return{fix:function(a){if(!h&&void 0!==document.body.style.zoom){var c=b("
").addClass(e);b(a).wrap(c)}return a},isSubpxSupported:function(){return h}}}),Cb.addUtility("support",function(){function b(a){var b,e,f,g=document.createElement("div");if(a in g.style)return a;if(b=a.charAt(0).toUpperCase()+a.substr(1),a in g.style)return a;for(e=0;e-1?a+"&"+b:a+"?"+b},parse:function(a){var b,c=document.createElement("a");return c.href=a,d.ie&&a!==c.href&&(a=c.href,c.href=a),b=c.pathname,/^\//.test(b)||(b="/"+b),{href:c.href,protocol:c.protocol,host:c.host,hostname:c.hostname,port:c.port,pathname:b,hash:c.hash,search:c.search}}}}),Cb.addComponent("controller-paged",function(a){function c(){var a=j.metadata;j.numPages=a.numpages,j.pageStart?j.pageStart<0&&(j.pageStart=a.numpages+j.pageStart):j.pageStart=1,j.pageStart=n.clamp(j.pageStart,1,a.numpages),j.pageEnd?j.pageEnd<0&&(j.pageEnd=a.numpages+j.pageEnd):j.pageEnd=a.numpages,j.pageEnd=n.clamp(j.pageEnd,j.pageStart,a.numpages),j.numPages=j.pageEnd-j.pageStart+1}function d(){var a,c,d,e,f,g,h,i,k=n.calculatePtSize(),l=j.metadata.dimensions,m="";for(j.pageScale=P/(l.width*k),d=j.zoomLevels[j.zoomLevels.length-1],e=3/j.pageScale;e>d;)d+=d/2,j.zoomLevels.push(d);for(l.exceptions=l.exceptions||{},a=j.pageStart-1;ab;b++)c=a.createComponent("page"),c.init(j.$pages.eq(b-f),{index:b,status:e(b),enableLinks:j.enableLinks,links:i[b],pageScale:j.pageScale}),d.push(c);j.pages=d}function g(){var a,b,c,d,e=j.pageStart,f=j.pageEnd,g=j.metadata.links||[],h=[];for(a=0,b=j.metadata.numpages;b>a;++a)h[a]=[];for(a=0,b=g.length;b>a;++a)if(c=g[a],!(c.pagenumf)){if(c.destination){if(d=c.destination.pagenum,e>d||d>f)continue;c.destination.pagenum=d-(e-1)}h[c.pagenum-1].push(c)}return h}function h(){i()}function i(){var a=n.getSelectedNode(),c=b(a).closest("."+v);k.find("."+l).removeClass(l),a&&k.has(a)&&c.addClass(l)}var j,k,m,n=a.getUtility("common");return{init:function(){j=a.getConfig(),k=j.$el,b(document).on("mouseup",h),c(),d(),f(),m=a.createComponent("lazy-loader"),m.init(j.pages)},destroy:function(){b(document).off("mouseup",h)}}}),Cb.addComponent("controller-text",function(a){var c;return{init:function(){var d=a.getConfig();d.$textContainer=b(),c=a.get("page-text",1).then(function(a){var c=d.$doc.parent();d.$doc=b(a),c.html(d.$doc)})},destroy:function(){c.abort()}}}),Cb.addComponent("dragger",function(c){function d(a){g.scrollTop(h.top-(a.clientY-i.y)),g.scrollLeft(h.left-(a.clientX-i.x)),a.preventDefault()}function e(a){c.broadcast("dragend"),j.off("mousemove",d),j.off("mouseup",e),a.preventDefault()}function f(a){c.broadcast("dragstart"),h={top:g.scrollTop(),left:g.scrollLeft()},i={x:a.clientX,y:a.clientY},j.on("mousemove",d),j.on("mouseup",e),a.preventDefault()}var g,h,i,j=b(a);return{init:function(a){g=b(a),g.on("mousedown",f)},destroy:function(){g.off("mousedown",f),g.off("mousemove",d),j.off("mouseup",e)}}}),Cb.addComponent("layout-base",function(b){var c=b.getUtility("common");return{messages:["resize","scroll","scrollend"],onmessage:function(a,b){switch(a){case"resize":this.handleResize(b);break;case"scroll":this.handleScroll(b);break;case"scrollend":this.handleScrollEnd(b)}},init:function(){var a=b.getConfig();this.config=a,this.$el=a.$el,this.$doc=a.$doc,this.$viewport=a.$viewport,this.$pages=a.$pages,this.numPages=a.numPages,this.layoutClass=s+a.layout,this.$el.addClass(this.layoutClass),this.initState()},initState:function(){var b=this.$viewport[0],c=b;b===a&&(c=document.documentElement),this.state={scrollTop:b.scrollTop,scrollLeft:b.scrollLeft,viewportDimensions:{clientWidth:c.clientWidth,clientHeight:c.clientHeight,offsetWidth:c.offsetWidth,offsetHeight:c.offsetHeight},zoomState:{zoom:1,prevZoom:0,zoomMode:null},initialWidth:0,initialHeight:0,totalWidth:0,totalHeight:0},this.zoomLevels=[]},destroy:function(){this.$doc.removeAttr("style"),this.$el.removeClass(this.layoutClass)},setZoom:function(){},calculateNextZoomLevel:function(a){var b,c=!1,d=this.state.zoomState.zoom,e=this.zoomLevels;if(a===Cb.ZOOM_IN){for(b=0;bd){c=e[b];break}}else if(a===Cb.ZOOM_OUT)for(b=e.length-1;b>=0;--b)if(e[b]a.tallestPage.actualHeight?Math.min(b,c):d.mobile?c:Math.min(1,c)},calculateCurrentPage:function(){var a,b,d=this.state,e=d.pages;return a=c.bisectRight(e,d.scrollLeft,"x0")-1,b=c.bisectRight(e,d.scrollLeft+e[a].width/2,"x0")-1,1+b},calculateNextPage:function(){return this.state.currentPage+1},calculatePreviousPage:function(){return this.state.currentPage-1},handleResize:function(a){b.handleResize.call(this,a),this.updateCurrentPage()},handleScroll:function(a){b.handleScroll.call(this,a),this.updateCurrentPage()},updateLayout:function(){var a=this.state,b=a.zoomState,c=b.zoom,d=a.sumWidths,e=Math.floor(a.tallestPage.totalActualHeight*c),f=Math.max(d,a.viewportDimensions.clientWidth),g=Math.max(e,a.viewportDimensions.clientHeight);this.$doc.css({height:g,lineHeight:g+"px",width:f})}})}),Cb.addComponent("layout-paged",["layout-base"],function(a,b){function c(a,b){var c,d,g,h,i=a.state,j="."+a.config.namespace+" ."+C,k=a.config.stylesheet,l=i.pages,m=b*a.config.pageScale,n=100/m;for(h=f.csstransform?f.csstransform+":scale("+m+");width:"+n+"%;height:"+n+"%;":f.csszoom?"zoom:"+m:"",i.previousStyleIndex&&e.deleteCSSRule(k,i.previousStyleIndex),i.previousStyleIndex=e.appendCSSRule(k,j,h),c=0,d=l.length;d>c;++c)g=l[c],a.$pages.eq(c).css({width:g.actualWidth*b,height:g.actualHeight*b,paddingTop:g.paddingTop*b,paddingRight:g.paddingRight*b,paddingBottom:g.paddingBottom*b,paddingLeft:g.paddingLeft*b})}function d(a,b){if(!b||0===b.length)return 1/0;var c=e.map(b,function(b){return a[b].y1});return Math.max.apply(Math,c)}var e=a.getUtility("common"),f=a.getUtility("support");return b.extend({init:function(){b.init.call(this),this.updatePageStates(),this.updateZoomLevels()},initState:function(){b.initState.call(this),e.extend(this.state,{pages:[],widestPage:{index:0,actualWidth:0},tallestPage:{index:0,actualHeight:0},sumWidths:0,sumHeights:0,rows:[],currentPage:null,visiblePages:[],fullyVisiblePages:[]})},destroy:function(){b.destroy.call(this),this.$pages.css("padding","")},update:function(){this.updatePageStates(!0),this.setZoom()},setZoom:function(b){var c,d,f=this.state,g=this.parseZoomValue(b),h=f.zoomState,i=h.zoom;c=this.calculateZoomMode(b,g),g=e.clamp(g,f.minZoom,f.maxZoom),a.broadcast("beforezoom",e.extend({page:f.currentPage,visiblePages:e.extend([],f.visiblePages),fullyVisiblePages:e.extend([],f.fullyVisiblePages)},h)),h.prevZoom=i,h.zoom=g,h.zoomMode=c,this.applyZoom(g),h.canZoomIn=this.calculateNextZoomLevel(Cb.ZOOM_IN)!==!1,h.canZoomOut=this.calculateNextZoomLevel(Cb.ZOOM_OUT)!==!1,this.updatePageStates(),this.updateLayout(),d=b===Cb.ZOOM_AUTO||b===Cb.ZOOM_FIT_WIDTH||b===Cb.ZOOM_FIT_HEIGHT,this.updateScrollPosition(d),this.updatePageStates(),this.updateVisiblePages(!0),a.broadcast("zoom",e.extend({page:f.currentPage,visiblePages:e.extend([],f.visiblePages),fullyVisiblePages:e.extend([],f.fullyVisiblePages),isDraggable:this.isDraggable()},h))},parseZoomValue:function(a){var b=parseFloat(a),c=this.state,d=c.zoomState,e=d.zoom,f=e;if(b)f=b;else switch(a){case Cb.ZOOM_FIT_WIDTH:case Cb.ZOOM_FIT_HEIGHT:case Cb.ZOOM_AUTO:f=this.calculateZoomValue(a);break;case Cb.ZOOM_IN:case Cb.ZOOM_OUT:f=this.calculateNextZoomLevel(a)||e;break;default:f=e?d.zoomMode?this.calculateZoomValue(d.zoomMode):e:this.calculateZoomValue(this.config.zoom||Cb.ZOOM_AUTO)}return f},calculateZoomMode:function(a,b){switch(b){case this.calculateZoomValue(Cb.ZOOM_AUTO):return"string"!=typeof a||a!==Cb.ZOOM_FIT_WIDTH&&a!==Cb.ZOOM_FIT_HEIGHT?Cb.ZOOM_AUTO:a;case this.calculateZoomValue(Cb.ZOOM_FIT_WIDTH):return Cb.ZOOM_FIT_WIDTH;case this.calculateZoomValue(Cb.ZOOM_FIT_HEIGHT):return Cb.ZOOM_FIT_HEIGHT;default:return null}},updateZoomLevels:function(){function a(a){var b=c/a;return a===c?!1:lb>b?!0:e.inArray(a,i)>-1&&mb>b?!0:!1}var b,c,d=this.config.zoomLevels.slice()||[1],f=this.calculateZoomValue(Cb.ZOOM_AUTO),g=this.calculateZoomValue(Cb.ZOOM_FIT_WIDTH),h=this.calculateZoomValue(Cb.ZOOM_FIT_HEIGHT),i=[g,h];for(this.state.minZoom=this.config.minZoom||d[0],this.state.maxZoom=this.config.maxZoom||d[d.length-1],f!==g&&f!==h&&i.push(f),d=d.concat(i),d.sort(function(a,b){return a-b}),this.zoomLevels=[],c=0,b=0;b1)c=this.calculatePreviousPage();else if(a===Cb.SCROLL_NEXT&&b.currentPageb;++b)d=this.$pages.eq(b),bf.max?a&&d.hasClass(F)&&d.removeClass(F):(a&&!d.hasClass(F)&&d.addClass(F),e.visiblePages.push(b+1)),b>=g.min&&b<=g.max&&e.fullyVisiblePages.push(b+1)},updatePageStates:function(a){var b,c,e,f,g,h=this.state,i=h.pages,j=h.rows,k=this.$viewport.scrollTop(),l=this.$viewport.scrollLeft(),m=0,n=0,o=0,p=0;for(j.length=h.sumWidths=h.sumHeights=h.totalWidth=h.totalHeight=0,h.widestPage.totalActualWidth=h.tallestPage.totalActualHeight=0,b=0,c=this.$pages.length;c>b;++b)g=this.$pages.eq(b),f=g[0],e=i[b],(!e||a)&&(g.css("padding",""),e={index:b,paddingLeft:parseFloat(g.css(jb)),paddingRight:parseFloat(g.css(ib)),paddingTop:parseFloat(g.css(hb)),paddingBottom:parseFloat(g.css(kb))}),e.actualWidth||(e.actualWidth=parseFloat(f.getAttribute("data-width"))),e.actualHeight||(e.actualHeight=parseFloat(f.getAttribute("data-height"))),e.totalActualWidth=e.actualWidth+e.paddingLeft+e.paddingRight,e.totalActualHeight=e.actualHeight+e.paddingTop+e.paddingBottom,e.width=f.offsetWidth,e.height=f.offsetHeight,e.x0=f.offsetLeft,e.y0=f.offsetTop,e.x1=e.width+e.x0,e.y1=e.height+e.y0,n&&d(i,j[m])<=e.y0+2&&m++,n=e.y1,j[m]||(j[m]=[]),e.totalActualWidth>h.widestPage.totalActualWidth&&(h.widestPage=e),e.totalActualHeight>h.tallestPage.totalActualHeight&&(h.tallestPage=e),h.sumWidths+=e.width,h.sumHeights+=e.height,e.rowIndex=m,i[b]=e,j[m].push(b),i[o].x0+i[o].widthn||g>o?this.$el.addClass("crocodoc-scrollable"):this.$el.removeClass("crocodoc-scrollable")},updatePageMargins:function(){var a,b,c,d,e,f,g,h,i,j=this.state,k=j.viewportDimensions.clientWidth,l=j.viewportDimensions.clientHeight;for(a=0,b=this.$pages.length;b>a;++a)d=this.$pages.eq(a),c=j.pages[a],i=this.twoPageMode?a%2===1?c.paddingRight:c.paddingLeft:c.paddingRight+c.paddingLeft,e=(c.actualWidth+i)*j.zoomState.zoom,f=(c.actualHeight+c.paddingTop+c.paddingBottom)*j.zoomState.zoom,this.twoPageMode?(g=Math.max(0,(k-2*e)/2),a%2===1&&(g+=e)):g=(k-e)/2,h=(l-f)/2,g=Math.max(g,0),h=Math.max(h,0),d.css({marginLeft:g,marginTop:h})},updatePageClasses:function(){var a=this.$pages,b=this.state.currentPage-1,c=b+1,d=b-1,e=20;a.removeClass(M),this.twoPageMode?(c=b+2,d=b-2,a.slice(Math.max(d,0),b).addClass(G),a.slice(c,c+2).addClass(H)):(d>=0&&a.eq(d).addClass(G),ca.tallestPage.actualHeight?Math.min(1,b,c):d.mobile?b:Math.min(1,b)},calculateCurrentPage:function(){var a,b,d,e,f,g=this.state,h=g.pages;return a=c.bisectRight(h,g.scrollTop,"y0")-1,0>a?1:(f=g.scrollTop+h[a].height/2,b=c.bisectRight(h,f,"y0")-1,d=h[b].rowIndex,e=g.rows[d],1+e[0])},calculateNextPage:function(){var a=this.state,b=a.pages[a.currentPage-1],c=b.rowIndex,d=a.rows[c+1];return d&&d[0]+1||a.currentPage},calculatePreviousPage:function(){var a=this.state,b=a.pages[a.currentPage-1],c=b.rowIndex,d=a.rows[c-1];return d&&d[0]+1||a.currentPage},handleResize:function(a){b.handleResize.call(this,a),this.updateCurrentPage()},handleScroll:function(a){b.handleScroll.call(this,a),this.updateCurrentPage()},updateLayout:function(){var a,b,c=this.state,d=c.zoomState.zoom;a=Math.floor(c.widestPage.totalActualWidth*d),b=a<=c.viewportDimensions.clientWidth?"auto":a,this.$doc.css({width:b})}})}),Cb.addComponent("lazy-loader",function(a){function c(a){a=a||w;var b=A.page-1,c=b-a,d=b+a;return s.constrainRange(c,d,o-1)}function d(){var a;clearTimeout(r),v.length>0?(a=v.shift(),n[a]?u.loadPage(a,function(a){a===!1?d():r=setTimeout(d,nb)}):d()):f()}function e(){clearTimeout(r),x=!1,r=setTimeout(d,nb)}function f(){clearTimeout(r),x=!0}function g(a){v.push(a),x&&e()}function h(){v.length=0,f()}function i(a,b){var d=c(b);return a>=d.min&&a<=d.max?!0:!1}function j(a){var b=n[a];if(b){if(i(a))return!0;if(l(a))return!0}return!1}function k(a,b){return i(a,b)?!1:l(a)?!1:!0}function l(a){return s.inArray(a+1,A.visiblePages)>-1}function m(a,b){for(var c=s.sign(b-a);a!==b;)u.queuePageToLoad(a),a+=c;u.queuePageToLoad(a)}var n,o,p,q,r,s=a.getUtility("common"),t=a.getUtility("browser"),u={},v=[],w=1,x=!0,y=1,z=!1,A={page:1,visiblePages:[1]};return s.extend(u,{messages:["beforezoom","pageavailable","pagefocus","ready","scroll","scrollend","zoom"],onmessage:function(a,b){switch(a){case"beforezoom":this.handleBeforeZoom(b);break;case"pageavailable":this.handlePageAvailable(b);break;case"pagefocus":this.handlePageFocus(b);break;case"ready":this.handleReady();break;case"scroll":this.handleScroll();break;case"scrollend":this.handleScrollEnd();break;case"zoom":this.handleZoom(b)}},init:function(a){n=a,o=n.length,w=t.mobile||t.ielt10?pb:ob,w=Math.min(w,o)},destroy:function(){this.cancelAllLoading()},updateLayoutState:function(a){y=s.sign(a.page-A.page),A=a},loadNecessaryPages:s.debounce(100,function(){this.cancelAllLoading(),this.queuePageToLoad(A.page-1),this.loadVisiblePages(),this.loadPagesInRange(w)}),loadPagesInRange:function(a){var b=A.page-1;a>0&&(a=c(a),y>=0?(m(b+1,a.max),m(b-1,a.min)):(m(b-1,a.min),m(b+1,a.max)))},loadVisiblePages:function(){var a,b;for(a=0,b=A.visiblePages.length;b>a;++a)this.queuePageToLoad(A.visiblePages[a]-1)},queuePageToLoad:function(a){j(a)&&(n[a].preload(),g(a))},cancelAllLoading:function(){clearTimeout(q),clearTimeout(p),h()},loadPage:function(a,c){b.when(n[a]&&n[a].load()).always(c)},unloadPage:function(a){var b=n[a];b&&b.unload()},unloadUnnecessaryPages:function(a){var b,c;for(b=0,c=n.length;c>b;++b)k(b,a)&&this.unloadPage(b)},handleReady:function(){z=!0,this.loadVisiblePages(),q=setTimeout(function(){u.loadNecessaryPages()},qb)},handlePageAvailable:function(a){if(z){var b;if(a.all===!0&&(a.upto=o),a.page)this.queuePageToLoad(a.page-1);else if(a.upto)for(b=0;b").addClass(A),g=a.bbox[0],h=a.bbox[1],i={};if(f.ie&&b("").appendTo(c).on("click",d),c.css({left:g+"pt",top:h+"pt",width:a.bbox[2]-g+"pt",height:a.bbox[3]-h+"pt"}),a.uri){if(!/^http|^mailto/.test(a.uri))return;i.href=encodeURI(a.uri),i.target="_blank"}else a.destination&&(i.href="#page-"+a.destination.pagenum);c.attr(i),c.data("link",a),c.appendTo(e)}function d(c){var d=f.ie?c.target.parentNode:c.target,e=b(d),g=e.data("link");g&&a.broadcast("linkclick",g),c.preventDefault()}var e,f=a.getUtility("browser");return{init:function(a,c){e=b(a),this.createLinks(c),f.ie||e.on("click","."+A,d)},destroy:function(){e.empty().off("click"),e=f=null},createLinks:function(a){var b,d;for(b=0,d=a.length;d>b;++b)c(a[b])}}}),Cb.addComponent("page-svg",function(c){function d(){switch(v){case ub:case Ab:return b("