/*!
* Monocle - A silky, tactile browser-based ebook JavaScript library.
*
* Copyright 2012, Joseph Pearson
* Licensed under the MIT license.
*/
Monocle={VERSION:"2.3.1"};Monocle.Dimensions={};Monocle.Controls={};Monocle.Flippers={};Monocle.Panels={};Monocle.Env=function(){var API={constructor:Monocle.Env};var k=API.constants=API.constructor;var p=API.properties={resultCallback:null};var css=Monocle.Browser.css;var activeTestName=null;var frameLoadCallback=null;var testFrame=null;var testFrameCntr=null;var testFrameSize=100;var surveyCallback=null;function survey(cb){surveyCallback=cb;runNextTest()}function runNextTest(){var test=envTests.shift();if(!test){return completed()}activeTestName=test[0];try{test[1]()}catch(e){result(e)}}function result(val){API[activeTestName]=val;if(p.resultCallback){p.resultCallback(activeTestName,val)}runNextTest();return val}function completed(){Monocle.defer(removeTestFrame);if(typeof surveyCallback=="function"){surveyCallback(API)}}function testForFunction(str){return function(){result(typeof eval(str)=="function")}}function testNotYetImplemented(rslt){return function(){result(rslt)}}function loadTestFrame(cb,src){if(!testFrame){testFrame=createTestFrame()}frameLoadCallback=cb;src=src||4;if(typeof src=="number"){var pgs=[];for(var i=1,ii=src;i<=ii;++i){pgs.push("
Page "+i+"
")}var divStyle=["display:inline-block","line-height:"+testFrameSize+"px","width:"+testFrameSize+"px"].join(";");src='javascript:\'"+pgs.join("")+"'"}testFrame.src=src}function createTestFrame(){testFrameCntr=document.createElement("div");testFrameCntr.style.cssText=["width:"+testFrameSize+"px","height:"+testFrameSize+"px","overflow:hidden","position:absolute","visibility:hidden"].join(";");document.body.appendChild(testFrameCntr);var fr=document.createElement("iframe");testFrameCntr.appendChild(fr);fr.setAttribute("scrolling","no");fr.style.cssText=["width:100%","height:100%","border:none","background:#900"].join(";");fr.addEventListener("load",function(){if(!fr.contentDocument||!fr.contentDocument.body){return}var bd=fr.contentDocument.body;bd.style.cssText=(["margin:0","padding:0","position:absolute","height:100%","width:100%","-webkit-column-width:"+testFrameSize+"px","-webkit-column-gap:0","-webkit-column-fill:auto","-moz-column-width:"+testFrameSize+"px","-moz-column-gap:0","-moz-column-fill:auto","-o-column-width:"+testFrameSize+"px","-o-column-gap:0","-o-column-fill:auto","column-width:"+testFrameSize+"px","column-gap:0","column-fill:auto"].join(";"));if(bd.scrollHeight>testFrameSize){bd.style.cssText+=["min-width:200%","overflow:hidden"].join(";");if(bd.scrollHeight<=testFrameSize){bd.className="column-force"}else{bd.className="column-failed "+bd.scrollHeight}}frameLoadCallback(fr)},false);return fr}function removeTestFrame(){if(testFrameCntr&&testFrameCntr.parentNode){testFrameCntr.parentNode.removeChild(testFrameCntr)}}function columnedWidth(fr){var bd=fr.contentDocument.body;var de=fr.contentDocument.documentElement;return Math.max(bd.scrollWidth,de.scrollWidth)}var envTests=[["supportsW3CEvents",testForFunction("window.addEventListener")],["supportsCustomEvents",testForFunction("document.createEvent")],["supportsColumns",function(){result(css.supportsPropertyWithAnyPrefix("column-width"))}],["supportsTransform",function(){result(css.supportsProperty(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"]))}],["supportsTransition",function(){result(css.supportsPropertyWithAnyPrefix("transition"))}],["supportsXPath",testForFunction("document.evaluate")],["supportsQuerySelector",testForFunction("document.querySelector")],["supportsTransform3d",function(){result(css.supportsMediaQueryProperty("transform-3d")&&css.supportsProperty(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]))}],["supportsOfflineCache",function(){result(typeof window.applicationCache!="undefined")}],["supportsLocalStorage",function(){result(typeof window.localStorage!="undefined"&&typeof window.localStorage.getItem=="function")}],["touch",function(){result(("ontouchstart" in window)||css.supportsMediaQueryProperty("touch-enabled"))}],["embedded",function(){result(top!=self)}],["brokenIframeTouchModel",function(){result(Monocle.Browser.iOSVersionBelow("4.2"))}],["floatsIgnoreColumns",function(){if(!Monocle.Browser.is.WebKit){return result(false)}match=navigator.userAgent.match(/AppleWebKit\/([\d\.]+)/);if(!match){return result(false)}return result(match[1]<"534.30")}],["widthsIgnoreTranslate",function(){loadTestFrame(function(fr){var firstWidth=columnedWidth(fr);var s=fr.contentDocument.body.style;var props=css.toDOMProps("transform");for(var i=0,ii=props.length;i=0)}],["scrollToApplyStyle",function(){result(Monocle.Browser.iOSVersionBelow("4"))}],["forceColumns",function(){loadTestFrame(function(fr){var bd=fr.contentDocument.body;result(bd.className?true:false)})}],["findNodesByScrolling",function(){result(typeof document.body.getBoundingClientRect!=="function")}],["sheafIsScroller",function(){loadTestFrame(function(fr){result(fr.parentNode.scrollWidth>testFrameSize)})}],["stickySlideOut",function(){result(Monocle.Browser.is.MobileSafari)}],["roundPageDimensions",function(){result(!Monocle.Browser.is.IE)}],["documentElementHasScrollbars",function(){result(Monocle.Browser.is.IE)}],["offscreenRenderingClipped",function(){result(Monocle.Browser.iOSVersionBelow("6"))}]];function isCompatible(){return(API.supportsW3CEvents&&API.supportsCustomEvents&&API.supportsColumns&&API.supportsTransform&&!API.brokenIframeTouchModel)}API.survey=survey;API.isCompatible=isCompatible;return API};Monocle.CSS=function(){var b={constructor:Monocle.CSS};var d=b.constants=b.constructor;var a=b.properties={guineapig:document.createElement("div")};function g(o){var m=[o];var n=d.engines.indexOf(Monocle.Browser.engine);if(n){var k=d.prefixes[n];if(k){m.push(k+o)}}return m}function i(p,o){var n=g(p);for(var k=0,m=n.length;k0;--m){o[m]=f(o[m])}var n=[o.join("")];var p=d.engines.indexOf(Monocle.Browser.engine);if(p){var k=d.domprefixes[p];if(k){o[0]=f(o[0]);n.push(k+o.join(""))}}return n}function e(m){for(var k in m){if(a.guineapig.style[m[k]]!==undefined){return true}}return false}function l(k){return e(c(k))}function h(o){var m="monocle_guineapig";a.guineapig.id=m;var n=document.createElement("style");n.textContent=o+"{#"+m+"{height:3px}}";(document.head||document.getElementsByTagName("head")[0]).appendChild(n);document.documentElement.appendChild(a.guineapig);var k=a.guineapig.offsetHeight===3;n.parentNode.removeChild(n);a.guineapig.parentNode.removeChild(a.guineapig);return k}function j(k){return h("@media ("+d.prefixes.join(k+"),(")+"monocle__)")}function f(k){return k?k.charAt(0).toUpperCase()+k.substr(1):""}b.toCSSProps=g;b.toCSSDeclaration=i;b.toDOMProps=c;b.supportsProperty=e;b.supportsPropertyWithAnyPrefix=l;b.supportsMediaQuery=h;b.supportsMediaQueryProperty=j;return b};Monocle.CSS.engines=["W3C","WebKit","Gecko","Opera","IE","Konqueror"];Monocle.CSS.prefixes=["","-webkit-","-moz-","-o-","-ms-","-khtml-"];Monocle.CSS.domprefixes=["","Webkit","Moz","O","ms","Khtml"];if(typeof window.console=="undefined"){window.console={messages:[]};window.console.log=function(a){this.messages.push(a)};window.console.warn=window.console.log}window.console.compatDir=function(b){var c=function(e){var d=[];for(x in e){d.push(x+": "+e[x])}return d.join(";\n")};var a=c(b);window.console.log(a);return a};window.console.deprecation=function(a){console.warn("[DEPRECATION]: "+a);if(typeof console.trace=="function"){console.trace()}};Monocle.defer=function(a,b){if(a&&typeof a=="function"){return setTimeout(a,b||0)}};Monocle.Browser={};Monocle.Browser.uaMatch=function(b){var a=navigator.userAgent;if(typeof b=="string"){return a.indexOf(b)>=0}return !!a.match(b)};Monocle.Browser.is={IE:!!(window.attachEvent&&!Monocle.Browser.uaMatch("Opera")),Opera:Monocle.Browser.uaMatch("Opera"),WebKit:Monocle.Browser.uaMatch(/Apple\s?WebKit/),Gecko:Monocle.Browser.uaMatch("Gecko")&&!Monocle.Browser.uaMatch("KHTML"),MobileSafari:Monocle.Browser.uaMatch(/AppleWebKit.*Mobile/)};if(Monocle.Browser.is.IE){Monocle.Browser.engine="IE"}else{if(Monocle.Browser.is.Opera){Monocle.Browser.engine="Opera"}else{if(Monocle.Browser.is.WebKit){Monocle.Browser.engine="WebKit"}else{if(Monocle.Browser.is.Gecko){Monocle.Browser.engine="Gecko"}else{console.warn("Unknown engine; assuming W3C compliant.");Monocle.Browser.engine="W3C"}}}}Monocle.Browser.on={iPhone:Monocle.Browser.is.MobileSafari&&screen.width==320,iPad:Monocle.Browser.is.MobileSafari&&screen.width==768,UIWebView:(Monocle.Browser.is.MobileSafari&&!Monocle.Browser.uaMatch("Safari")&&!navigator.standalone),BlackBerry:Monocle.Browser.uaMatch("BlackBerry"),Android:(Monocle.Browser.uaMatch("Android")||Monocle.Browser.uaMatch(/Linux;.*EBRD/)),MacOSX:(Monocle.Browser.uaMatch("Mac OS X")&&!Monocle.Browser.is.MobileSafari),Kindle3:Monocle.Browser.uaMatch(/Kindle\/3/)};if(Monocle.Browser.is.MobileSafari){(function(){var a=navigator.userAgent.match(/ OS ([\d_]+)/);if(a){Monocle.Browser.iOSVersion=a[1].replace(/_/g,".")}else{console.warn("Unknown MobileSafari user agent: "+navigator.userAgent)}})()}Monocle.Browser.iOSVersionBelow=function(a){return !!Monocle.Browser.iOSVersion&&Monocle.Browser.iOSVersion1){return}d.start(f(h,h.targetTouches[0]))}}if(d.move){e.touchmove=function(h){if(h.touches.length>1){return}d.move(f(h,h.targetTouches[0]))}}if(d.end){e.touchend=function(h){d.end(f(h,h.changedTouches[0]))}}if(d.cancel){e.touchcancel=function(h){d.cancel(f(h,h.changedTouches[0]))}}for(etype in e){Monocle.Events.listen(g,etype,e[etype],a)}}return e};Monocle.Events.deafenForContact=function(b,a){for(evtType in a){Monocle.Events.deafen(b,evtType,a[evtType])}};Monocle.Events.listenForTap=function(f,e,c){var b;var g;if(Monocle.Browser.on.Kindle3){Monocle.Events.listen(f,"click",function(){})}var a=function(){b=null;if(c&&f.dom){f.dom.removeClass(c)}};var d=function(h){if(!b){return}if(h.type.match(/^mouse/)){return}if(Monocle.Browser.is.MobileSafari&&Monocle.Browser.iOSVersion<"3.2"){return}if(g&&!c){var i=f.getBoundingClientRect();if(i.left!=g.left||i.top!=g.top){a()}}if(h.m.registrantX<0||h.m.registrantX>f.offsetWidth||h.m.registrantY<0||h.m.registrantY>f.offsetHeight){a()}};return Monocle.Events.listenForContact(f,{start:function(h){b=[h.m.pageX,h.m.pageY];if(f.getBoundingClientRect){g=f.getBoundingClientRect()}if(c&&f.dom){f.dom.addClass(c)}},move:d,end:function(h){d(h);if(b){h.m.pageXStart=b[0];h.m.pageYStart=b[1];e(h)}a()},cancel:a},{useCapture:false})};Monocle.Events.deafenForTap=Monocle.Events.deafenForContact;Monocle.Events.afterTransition=function(d,b){var e="transitionend";if(Monocle.Browser.is.WebKit){e="webkitTransitionEnd"}else{if(Monocle.Browser.is.Opera){e="oTransitionEnd"}}var a=null,c=null;a=function(){b();c()};c=function(){Monocle.Events.deafen(d,e,a)};Monocle.Events.listen(d,e,a);return c};Monocle.Styles={rulesToString:function(b){if(typeof b!="string"){var a=[];for(var c in b){a.push(c+": "+b[c]+";")}b=a.join(" ")}return b},applyRules:function(a,b){b=Monocle.Styles.rulesToString(b);a.style.cssText+=";"+b;return a.style.cssText},affix:function(b,d,c){var e=b.style?b.style:b;var a=Monocle.Browser.css.toDOMProps(d);while(a.length){e[a.shift()]=c}},setX:function(c,a){var b=c.style;if(typeof a=="number"){a+="px"}if(Monocle.Browser.env.supportsTransform3d){b.webkitTransform="translate3d("+a+", 0, 0)"}else{b.webkitTransform="translateX("+a+")"}b.MozTransform=b.OTransform=b.transform="translateX("+a+")";return a},setY:function(b,c){var a=b.style;if(typeof c=="number"){c+="px"}if(Monocle.Browser.env.supportsTransform3d){a.webkitTransform="translate3d(0, "+c+", 0)"}else{a.webkitTransform="translateY("+c+")"}a.MozTransform=a.OTransform=a.transform="translateY("+c+")";return c},getX:function(e){var a=document.defaultView.getComputedStyle(e,null);var d=/matrix\([^,]+,[^,]+,[^,]+,[^,]+,\s*([^,]+),[^\)]+\)/;var c=Monocle.Browser.css.toDOMProps("transform");var b=null;while(c.length&&!b){b=a[c.shift()]}return parseInt(b.match(d)[1])},transitionFor:function(d,b,e,c,g){var a=Monocle.Browser.css.toDOMProps("transition");var h=Monocle.Browser.css.toCSSProps(b);c=c||"linear";g=(g||0)+"ms";for(var f=0,j=a.length;flastPageNum){if(p==m.lastCIndex){k.page=lastPageNum;k.boundaryend=true}else{k.load=true;k.componentId=m.componentIds[p+1];k.page-=lastPageNum}}}return k}function d(y,z){z=o(y,z);if(z&&!z.load){var k={locus:z,page:y};if(z.boundarystart){y.m.reader.dispatchEvent("monocle:boundarystart",k)}else{if(z.boundaryend){y.m.reader.dispatchEvent("monocle:boundaryend",k)}else{var p=m.components[m.componentIds.indexOf(z.componentId)];y.m.place=y.m.place||new Monocle.Place();y.m.place.setPlace(p,z.page);var k={page:y,locus:z,pageNumber:y.m.place.pageNumber(),componentId:z.componentId};y.m.reader.dispatchEvent("monocle:pagechange",k)}}}return z}function w(y,A,C,z){var B=m.componentIds.indexOf(A.componentId);if(!A.load||B<0){A=o(y,A)}if(!A){return}if(!A.load){C(A);return}var E=function(){A=d(y,A);if(!A){return}else{if(A.load){w(y,A,C,z)}else{C(A)}}};var p=function(){z?z(E):E()};var D=function(G){G.applyTo(y,p);for(var F=1;F<=m.preloadWindow;++F){g(B+F,F*r.PRELOAD_INTERVAL)}};var k=function(F){z?z(function(){D(F)}):D(F)};v(B,k,y)}function i(k,p,A,y,z){p=d(k,p);if(!p){if(z){z()}}else{if(p.load){w(k,p,A,y)}else{A(p)}}}function v(B,p,A){if(m.components[B]){return p(m.components[B])}var k=m.components[B];var y={page:A,component:k,index:B};A.m.reader.dispatchEvent("monocle:componentloading",y);var C=function(D){y.component=D;A.m.reader.dispatchEvent("monocle:componentloaded",y);p(D)};var z=function(){console.warn("Failed to load component: "+k);A.m.reader.dispatchEvent("monocle:componentfailed",y);try{var D=A.m.activeFrame.m.component;y.cmptId=D.properties.id;p(D)}catch(E){console.warn("Failed to fall back to previous component.")}};n(B,C,z)}function a(p){if(m.components[p]){return}var k=m.componentIds[p];if(!k){return}if(m.cmptLoadQueue[k]){return}n(p)}function g(p,k){Monocle.defer(function(){a(p)},k)}function n(A,p,C){var k=m.componentIds[A];var D={success:p,failure:C};if(m.cmptLoadQueue[k]){return m.cmptLoadQueue[k]=D}else{m.cmptLoadQueue[k]=D}var z=function(){e(k,"failure")};var B=function(E){if(E===false){return z()}m.components[A]=new Monocle.Component(q,k,A,c(k),E);e(k,"success",m.components[A])};var y=m.dataSource.getComponent(k,B);if(y&&!m.components[A]){B(y)}else{if(y===false){z()}}}function e(k,y,p){if(typeof m.cmptLoadQueue[k][y]=="function"){m.cmptLoadQueue[k][y](p)}m.cmptLoadQueue[k]=null}function c(p){if(m.chapters[p]){return m.chapters[p]}m.chapters[p]=[];var A=new RegExp("^"+decodeURIComponent(p)+"(#(.+)|$)");var z;var k=function(C){if(z=decodeURIComponent(C.src).match(A)){m.chapters[p].push({title:C.title,fragment:z[2]||null})}if(C.children){for(var B=0;B=0){b=f[e];g-=f[e];if(g>=0){e+=1;if(e>=f.length){console.error("Unable to calculate locus from percentage: "+g);return}}}var d=(g+b)/b;return{componentId:h[e],percent:d}};Monocle.Component=function(n,u,i,g,y){var v={constructor:Monocle.Component};var A=v.constants=v.constructor;var t=v.properties={book:n,id:u,index:i,chapters:g,source:y};function C(p,F){l(p.m.reader);var k={page:p,source:t.source};p.m.reader.dispatchEvent("monocle:componentchanging",k);var E=function(){o(p,p.m.activeFrame,function(){F(p,v)})};Monocle.defer(function(){e(p,E)})}function e(k,E){var p=k.m.activeFrame;p.m.component=v;p.style.visibility="hidden";p.whenDocumentReady=function(){var G=p.contentDocument;var F={page:k,document:G,component:v};k.m.reader.dispatchEvent("monocle:componentmodify",F);p.whenDocumentReady=null};if(t.source.html){return r(t.source.html||t.source,p,E)}else{if(t.source.url){return a(t.source.url,p,E)}else{if(t.source.doc){return f(t.source.doc,p,E)}}}}function r(E,p,F){var k=function(){Monocle.Events.deafen(p,"load",k);Monocle.defer(F)};Monocle.Events.listen(p,"load",k);p.contentDocument.open("text/html","replace");p.contentDocument.write(E);p.contentDocument.close();p.whenDocumentReady()}function a(k,F,G){if(!k.match(/^\//)){k=m(k)}var p=function(){Monocle.Events.deafen(F,"load",p);F.whenDocumentReady()};var E=function(){Monocle.Events.deafen(F,"load",E);Monocle.defer(G)};Monocle.Events.listen(F,"load",p);Monocle.Events.listen(F,"load",E);F.contentWindow.location.replace(k)}function f(k,I,J){var G=I.contentDocument;if(Monocle.Browser.is.WebKit){var H=k.querySelector("base");if(H){var p=G.querySelector("head");if(!p){try{p=G.createElement("head");B(G.documentElement,p)}catch(F){p=G.body}}var E=G.createElement("base");E.setAttribute("href",H.href);p.appendChild(E)}}G.replaceChild(G.importNode(k.documentElement,true),G.documentElement);Monocle.defer(J)}function o(k,p,E){j(k,function(){p.style.visibility="visible";D(k);var G=p.contentDocument;var F={page:k,document:G,component:v};k.m.reader.dispatchEvent("monocle:componentchange",F);E()})}function j(k,p){k.m.dimensions.update(function(E){t.pageLength=E;if(typeof p=="function"){p()}})}function D(k){if(t.chapters[0]&&typeof t.chapters[0].percent=="number"){return}var G=k.m.activeFrame.contentDocument;for(var p=0;p=t.chapters[k].percent){F=t.chapters[k]}else{return F}}return F}function d(p,k){if(!p){return 1}for(var E=0;E","im"))){var E=c(J);if(E){t.source.html=t.source.html.replace(new RegExp("(]*>)|>)","im"),'$1')}}if(t.source.doc&&!t.source.doc.querySelector("base")){var L=t.source.doc.querySelector("head")||t.source.doc.body;var E=c(J);if(L&&E){var G=t.source.doc.createElement("base");G.setAttribute("href",E);B(L,G)}}}function c(k){var p={cmptId:t.id,cmptURI:m(t.id)};if(k.dispatchEvent("monocle:component:baseuri",p,true)){return p.cmptURI}}function m(k){var p=document.createElement("a");p.setAttribute("href",k);result=p.href;delete (p);return result}function B(p,k){p.firstChild?p.insertBefore(k,p.firstChild):p.appendChild(k)}v.applyTo=C;v.updateDimensions=j;v.chapterForPage=h;v.pageForChapter=d;v.pageForXPath=b;v.pageForSelector=z;v.lastPageNumber=w;return v};Monocle.Selection=function(g){var d={constructor:Monocle.Selection};var e=d.constants=d.constructor;var c=d.properties={reader:g,lastSelection:[]};function f(){if(e.SELECTION_POLLING_INTERVAL){setInterval(n,e.SELECTION_POLLING_INTERVAL)}}function n(){var k=0,o=null;while(o=g.dom.find("component",k++)){if(o.contentWindow){a(o.contentWindow,k)}}}function a(r,o){var q=r.getSelection();var p=c.lastSelection[o]||{};var k=c.lastSelection[o]={selected:b(r),range:q.rangeCount?q.getRangeAt(0):null,string:q.toString()};if(k.selected){k.rangeStartContainer=k.range.startContainer;k.rangeEndContainer=k.range.endContainer;k.rangeStartOffset=k.range.startOffset;k.rangeEndOffset=k.range.endOffset;if(!j(k,p)){c.reader.dispatchEvent("monocle:selection",k)}}else{if(p.selected){c.reader.dispatchEvent("monocle:deselection",p)}}}function j(o,k){return(o.rangeStartContainer==k.rangeStartContainer&&o.rangeEndContainer==k.rangeEndContainer&&o.rangeStartOffset==k.rangeStartOffset&&o.rangeEndOffset==k.rangeEndOffset)}function i(){var k=0,o=null;while(o=g.dom.find("component",k++)){m(o.contentWindow)}}function m(o){o=o||window;if(!b(o)){return}if(Monocle.Browser.iOSVersion&&!Monocle.Browser.iOSVersionBelow(5)){h(function(){l(function(){var p=document.createElement("input");p.style.cssText=["position: absolute","top: 0","left: 0","width: 0","height: 0"].join(";");document.body.appendChild(p);p.focus();document.body.removeChild(p)})})}var k=o.getSelection();k.removeAllRanges();o.document.body.scrollLeft=0;o.document.body.scrollTop=0}function l(k){var p=window.scrollX,o=window.scrollY;k();window.scrollTo(p,o)}function h(q){var r=document.querySelector("head");var o=r.querySelector("meta[name=viewport]");var t=function(z){var y=document.createElement("meta");y.setAttribute("name","viewport");y.setAttribute("content",z);r.appendChild(y);return y};if(o){var k=o.getAttribute("content");var u=/user-scalable\s*=\s*([^,$\s])*/;var w=k.match(u);if(w&&["no","0"].indexOf(w[1])>=0){q()}else{var p=k.replace(u,"");p+=p?", ":"";p+="user-scalable=no";r.removeChild(o);var v=t(p);q();r.removeChild(v);r.appendChild(o)}}else{var v=t("user-scalable=no");q();v.setAttribute("content","user-scalable=yes")}}function b(k){return !k.getSelection().isCollapsed}d.deselect=i;f();return d};Monocle.Selection.SELECTION_POLLING_INTERVAL=250;Monocle.Billboard=function(h){var c={constructor:Monocle.Billboard};var d=c.constants=c.constructor;var a=c.properties={reader:h,cntr:null};function j(o,m){a.reader.dispatchEvent("monocle:modal:on");if(a.cntr){return console.warn("Modal billboard already showing.")}var m=m||{};var n=o;a.cntr=h.dom.append("div",d.CLS.cntr);if(typeof o=="string"){var l=o;a.inner=n=a.cntr.dom.append("iframe",d.CLS.inner);n.setAttribute("src",l)}else{a.inner=a.cntr.dom.append("div",d.CLS.inner);a.inner.appendChild(n)}a.dims=[n.naturalWidth||n.offsetWidth,n.naturalHeight||n.offsetHeight];if(m.closeButton!=false){var k=a.cntr.dom.append("div",d.CLS.closeButton);Monocle.Events.listenForTap(k,g)}i(m.align||"left top");a.reader.listen("monocle:resize",i);e(m.from);Monocle.defer(b)}function g(k){e();Monocle.Events.afterTransition(a.cntr,f)}function b(){Monocle.Styles.transitionFor(a.cntr,"transform",d.ANIM_MS,"ease-in");Monocle.Styles.affix(a.cntr,"transform","translate(0, 0) scale(1)")}function e(m){a.from=m||a.from||[0,0];var k=a.from[0]+"px";var l=a.from[1]+"px";Monocle.Styles.affix(a.cntr,"transform","translate("+k+","+l+") scale(0)")}function f(){a.cntr.parentNode.removeChild(a.cntr);a.cntr=a.inner=null;a.reader.deafen("monocle:resize",i);a.reader.dispatchEvent("monocle:modal:off")}function i(q){a.alignment=(typeof q=="string")?q:a.alignment;if(!a.alignment){return}if(a.dims[0]>a.inner.offsetWidth||a.dims[1]>a.inner.offsetHeight){a.cntr.dom.addClass(d.CLS.oversized)}else{a.cntr.dom.removeClass(d.CLS.oversized)}var p=a.alignment.split(/\s+/);var m=0,n=0;var k=(a.inner.scrollWidth-a.inner.offsetWidth);var o=(a.inner.scrollHeight-a.inner.offsetHeight);if(p[0].match(/^\d+$/)){m=Math.max(0,parseInt(p[0])-(a.inner.offsetWidth/2))}else{if(p[0]=="center"){m=k/2}else{if(p[0]=="right"){m=k}}}if(p[1]&&p[1].match(/^\d+$/)){n=Math.max(0,parseInt(p[1])-(a.inner.offsetHeight/2))}else{if(!p[1]||p[1]=="center"){n=o/2}else{if(p[1]=="bottom"){n=o}}}a.inner.scrollLeft=m;a.inner.scrollTop=n}c.show=j;c.hide=g;c.align=i;return c};Monocle.Billboard.CLS={cntr:"billboard_container",inner:"billboard_inner",closeButton:"billboard_close",oversized:"billboard_oversized"};Monocle.Billboard.ANIM_MS=400;Monocle.Controls.Panel=function(){var d={constructor:Monocle.Controls.Panel};var i=d.constants=d.constructor;var c=d.properties={evtCallbacks:{}};function g(k){c.div=k.dom.make("div",i.CLS.panel);c.div.dom.setStyles(i.DEFAULT_STYLES);Monocle.Events.listenForContact(c.div,{start:b,move:e,end:h,cancel:o},{useCapture:false});return c.div}function a(k){c.direction=k}function f(k){c.evtCallbacks=k}function m(){c.evtCallbacks={}}function b(k){c.contact=true;k.m.offsetX+=c.div.offsetLeft;k.m.offsetY+=c.div.offsetTop;l();j("start",k)}function e(k){if(!c.contact){return}j("move",k)}function h(k){if(!c.contact){return}Monocle.Events.deafenForContact(c.div,c.listeners);n();c.contact=false;j("end",k)}function o(k){if(!c.contact){return}Monocle.Events.deafenForContact(c.div,c.listeners);n();c.contact=false;j("cancel",k)}function j(p,k){if(c.evtCallbacks[p]){c.evtCallbacks[p](c.direction,k.m.offsetX,k.m.offsetY,d)}k.preventDefault()}function l(){if(c.expanded){return}c.div.dom.addClass(i.CLS.expanded);c.expanded=true}function n(k){if(!c.expanded){return}c.div.dom.removeClass(i.CLS.expanded);c.expanded=false}d.createControlElements=g;d.listenTo=f;d.deafen=m;d.expand=l;d.contract=n;d.setDirection=a;return d};Monocle.Controls.Panel.CLS={panel:"panel",expanded:"controls_panel_expanded"};Monocle.Controls.Panel.DEFAULT_STYLES={position:"absolute",height:"100%"};Monocle.Panels.TwoPane=function(d,f){var c={constructor:Monocle.Panels.TwoPane};var b=c.constants=c.constructor;var e=c.properties={};function a(){e.panels={forwards:new Monocle.Controls.Panel(),backwards:new Monocle.Controls.Panel()};for(dir in e.panels){d.properties.reader.addControl(e.panels[dir]);e.panels[dir].listenTo(f);e.panels[dir].setDirection(d.constants[dir.toUpperCase()]);var g={width:b.WIDTH};g[(dir=="forwards"?"right":"left")]=0;e.panels[dir].properties.div.dom.setStyles(g)}}a();return c};Monocle.Panels.TwoPane.WIDTH="50%";Monocle.Panels.IMode=function(e,a){var d={constructor:Monocle.Panels.IMode};var f=d.constants=d.constructor;var c=d.properties={};function i(){c.flipper=e;c.reader=e.properties.reader;c.panels={forwards:new Monocle.Controls.Panel(),backwards:new Monocle.Controls.Panel()};c.divs={};for(dir in c.panels){c.reader.addControl(c.panels[dir]);c.divs[dir]=c.panels[dir].properties.div;c.panels[dir].listenTo(a);c.panels[dir].setDirection(e.constants[dir.toUpperCase()]);c.divs[dir].style.width="33%";c.divs[dir].style[dir=="forwards"?"right":"left"]=0}c.panels.central=new Monocle.Controls.Panel();c.reader.addControl(c.panels.central);c.divs.central=c.panels.central.properties.div;c.divs.central.dom.setStyles({left:"33%",width:"34%"});l({end:h});for(dir in c.panels){c.divs[dir].dom.addClass("panels_imode_panel");c.divs[dir].dom.addClass("panels_imode_"+dir+"Panel")}c.toggleIcon={createControlElements:function(k){var n=k.dom.make("div","panels_imode_toggleIcon");Monocle.Events.listenForTap(n,g);return n}};c.reader.addControl(c.toggleIcon,null,{hidden:true})}function l(k){c.menuCallbacks=k;c.panels.central.listenTo(c.menuCallbacks)}function j(){c.interactive?g():h()}function h(){if(c.interactive){return}c.panels.central.contract();var n=c.reader.visiblePages()[0];var p=n.m.sheafDiv;var o=p.offsetLeft;var k=n.offsetWidth-(p.offsetLeft+p.offsetWidth);o=Math.floor(((o-2)/n.offsetWidth)*10000/100)+"%";k=Math.floor(((k-2)/n.offsetWidth)*10000/100)+"%";b(function(){c.divs.forwards.style.width=k;c.divs.backwards.style.width=o;Monocle.Styles.affix(c.divs.central,"transform","translateY(-100%)")});c.reader.showControl(c.toggleIcon);c.interactive=true;if(e.interactiveMode){e.interactiveMode(true)}}function g(){if(!c.interactive){return}c.panels.central.contract();c.reader.selection.deselect();b(function(){c.divs.forwards.style.width="33%";c.divs.backwards.style.width="33%";Monocle.Styles.affix(c.divs.central,"transform","translateY(0)")});c.reader.hideControl(c.toggleIcon);c.interactive=false;if(e.interactiveMode){e.interactiveMode(false)}}function b(n){var k=Monocle.Panels.IMode.CAMEO_DURATION+"ms ease-in";Monocle.Styles.affix(c.divs.forwards,"transition","width "+k);Monocle.Styles.affix(c.divs.backwards,"transition","width "+k);Monocle.Styles.affix(c.divs.central,"transition","-webkit-transform "+k);for(var o in c.panels){c.panels[o].deafen()}for(var p in c.divs){c.divs[p].style.opacity=1}if(typeof WebkitTransitionEvent!="undefined"){c.cameoListener=Monocle.Events.listen(c.divs.central,"webkitTransitionEnd",m)}else{setTimeout(m,f.CAMEO_DURATION)}n()}function m(){setTimeout(function(){var k="opacity linear "+Monocle.Panels.IMode.LINGER_DURATION+"ms";Monocle.Styles.affix(c.divs.forwards,"transition",k);Monocle.Styles.affix(c.divs.backwards,"transition",k);Monocle.Styles.affix(c.divs.central,"transition",k);for(var n in c.divs){c.divs[n].style.opacity=0}c.panels.forwards.listenTo(a);c.panels.backwards.listenTo(a);c.panels.central.listenTo(c.menuCallbacks)},Monocle.Panels.IMode.LINGER_DURATION);if(c.cameoListener){Monocle.Events.deafen(c.divs.central,"webkitTransitionEnd",m)}}d.toggle=j;d.modeOn=h;d.modeOff=g;d.menuCallbacks=l;i();return d};Monocle.Panels.IMode.CAMEO_DURATION=250;Monocle.Panels.IMode.LINGER_DURATION=250;Monocle.Panels.eInk=function(d,g){var c={constructor:Monocle.Panels.eInk};var b=c.constants=c.constructor;var f=c.properties={flipper:d};function a(){f.panel=new Monocle.Controls.Panel();f.reader=f.flipper.properties.reader;f.reader.addControl(f.panel);f.panel.listenTo({end:function(j,i){if(iv()?w.FORWARDS:w.BACKWARDS;F("start",k)}function z(k){F("move",k);k.preventDefault()}function B(k){r.action.endX=k.m.readerX;r.action.endY=k.m.readerY;F("end",k);r.action={}}function l(k){if(E(k)){return e()}r.action.startX=k.m.readerX;r.action.startY=k.m.readerY;r.action.screenX=k.m.screenX;r.action.screenY=k.m.screenY;j(a,A)}function a(k){if(y()){return}if(E(k)){return e()}k.preventDefault()}function A(p){if(y()){return}if(E(p)){return e()}r.action.endX=p.m.readerX;r.action.endY=p.m.readerY;if(Math.abs(r.action.endX-r.action.startX)v()?w.FORWARDS:w.BACKWARDS}else{r.action.dir=r.action.startX>r.action.endX?w.FORWARDS:w.BACKWARDS}var G=r.parts.reader.getBoundingClientRect();var k={start:{x:r.action.startX,y:r.action.startY},end:{x:r.action.endX,y:r.action.endY},max:{x:G.right-G.left,y:G.bottom-G.top}};if(r.reader.dispatchEvent("monocle:magic:contact",k,true)){F("start",p);F("end",p)}r.action={}}function q(k,p){return function(G){o(k,G,p)}}function o(H,k,J){if(typeof r.action.screenX!="undefined"){k.m.readerX=r.action.startX+(k.m.screenX-r.action.screenX);k.m.readerY=r.action.startY+(k.m.screenY-r.action.screenY)}else{var G=document.documentElement.getBoundingClientRect();var p=r.parts.reader.getBoundingClientRect();p={left:p.left-G.left,top:p.top-G.top};if(k.view==window){k.m.readerX=Math.round(k.m.pageX-p.left);k.m.readerY=Math.round(k.m.pageY-p.top)}else{var I=H.getBoundingClientRect();I={left:I.left-G.left,top:I.top-G.top};k.m.readerX=Math.round((I.left-p.left)+k.m.clientX);k.m.readerY=Math.round((I.top-p.top)+k.m.clientY)}}J(k)}function v(){return r.parts.reader.offsetWidth/2}function e(){r.action={};d()}function E(k){var p=k.target.ownerDocument.defaultView;return(k.defaultPrevented||!p.getSelection().isCollapsed)}function y(){return typeof r.action.startX=="undefined"}function F(p,k){if(r.evtCallbacks[p]){r.evtCallbacks[p](r.action.dir,k.m.readerX,k.m.readerY,u)}}u.enable=n;u.disable=h;c();return u};Monocle.Panels.Magic.LEEWAY=3;Monocle.Panels.Magic.FORWARDS=1;Monocle.Panels.Magic.BACKWARDS=-1;Monocle.Dimensions.Columns=function(e){var c={constructor:Monocle.Dimensions.Columns};var g=c.constants=c.constructor;var b=c.properties={page:e,reader:e.m.reader,length:0,width:0};g.GAP=Monocle.Browser.env.forceColumns?0:20;function h(k){n();Monocle.defer(function(){b.length=l();if(Monocle.DEBUG){console.log("page["+b.page.m.pageIndex+"] -> "+b.length+" ("+b.page.m.activeFrame.m.component.properties.id+")")}k(b.length)})}function n(){var q=f();var k=d();b.width=q.width;var p=Monocle.Styles.rulesToString(g.STYLE.columned);p+=Monocle.Browser.css.toCSSDeclaration("column-width",q.col+"px");p+=Monocle.Browser.css.toCSSDeclaration("column-gap",g.GAP+"px");p+=Monocle.Browser.css.toCSSDeclaration("column-fill","auto");p+=Monocle.Browser.css.toCSSDeclaration("transform","translateX(0)");if(Monocle.Browser.env.forceColumns&&k.scrollHeight>q.height){p+=Monocle.Styles.rulesToString(g.STYLE["column-force"]);if(Monocle.DEBUG){console.warn("Force columns ("+k.scrollHeight+" > "+q.height+")")}}if(k.style.cssText!=p){b.page.m.offset=0;if(Monocle.Browser.env.documentElementHasScrollbars){k.ownerDocument.documentElement.style.overflow="hidden"}k.style.cssText=p;if(Monocle.Browser.env.scrollToApplyStyle){k.scrollLeft=0}}}function d(){return b.page.m.activeFrame.contentDocument.body}function m(){var p=d();var q=b.page.m.activeFrame.contentDocument.documentElement;var k=Math.max(p.scrollWidth,q.scrollWidth);if(!Monocle.Browser.env.widthsIgnoreTranslate&&b.page.m.offset){k+=b.page.m.offset}return k}function f(){var p=b.page.m.sheafDiv;var k=p.clientWidth;if(p.getBoundingClientRect){k=p.getBoundingClientRect().width}if(Monocle.Browser.env.roundPageDimensions){k=Math.round(k)}return{col:k,width:k+g.GAP,height:p.clientHeight}}function l(){return Math.ceil(m()/f().width)}function j(k){return f().width*(k.page-1)}function i(k,q){var p=j(k);b.page.m.offset=p;o(p,q);return p}function o(q,p){var k=d();if(p){Monocle.Styles.affix(k,"transition",p)}Monocle.Styles.affix(k,"transform","translateX(-"+q+"px)")}function a(u){if(!u){return 0}var t=b.page.m.activeFrame.contentDocument;var w=0;if(Monocle.Browser.env.findNodesByScrolling){o(0);var r=s=b.page.m.activeFrame.contentWindow;var v=[[r,r.scrollX,r.scrollY],[window,window.scrollX,window.scrollY]];if(Monocle.Browser.env.sheafIsScroller){var p=b.page.m.sheafDiv;var k=p.scrollLeft;u.scrollIntoView();w=p.scrollLeft}else{var p=r;var k=p.scrollX;u.scrollIntoView();w=p.scrollX}while(s=v.shift()){s[0].scrollTo(s[1],s[2])}o(b.page.m.offset)}else{w=u.getBoundingClientRect().left;w-=t.body.getBoundingClientRect().left}w+=1;var q=w/(b.length*b.width);return q}c.update=h;c.percentageThroughOfNode=a;c.locusToOffset=j;c.translateToLocus=i;return c};Monocle.Dimensions.Columns.STYLE={columned:{margin:"0",padding:"0",height:"100%",width:"100%",position:"absolute"},"column-force":{"min-width":"200%",overflow:"hidden"}};Monocle.Flippers.Slider=function(l){var B={constructor:Monocle.Flippers.Slider};var N=B.constants=B.constructor;var K=B.properties={reader:l,pageCount:2,activeIndex:1,turnData:{}};function h(){K.reader.listen("monocle:componentchanging",u)}function r(k){k.m.dimensions=new Monocle.Dimensions.Columns(k);Monocle.Styles.setX(k,0)}function Q(){return[I()]}function o(k){R(true);R(false);if(typeof k!="function"){k=N.DEFAULT_PANELS_CLASS;if(!k){console.warn("Invalid panel class.")}}K.panels=new k(B,{start:D,move:w,end:y,cancel:y})}function R(k){K.reader.dispatchEvent("monocle:interactive:"+(k?"on":"off"))}function a(k){k=k||I();return k.m?k.m.place:null}function d(k,S){var p=function(){m(function(){if(typeof S=="function"){S()}P()})};A(I(),k,p)}function A(k,p,S){K.reader.getBook().setOrLoadPageAt(k,p,function(T){k.m.dimensions.translateToLocus(T);Monocle.defer(S)})}function I(){return K.reader.dom.find("page",K.activeIndex)}function L(){return K.reader.dom.find("page",(K.activeIndex+1)%2)}function J(){I().style.zIndex=1;L().style.zIndex=2;return K.activeIndex=(K.activeIndex+1)%2}function D(p,S){if(K.turnData.lifting||K.turnData.releasing){return}K.reader.selection.deselect();K.turnData.points={start:S,min:S,max:S};K.turnData.lifting=true;var k=a();if(p==N.FORWARDS){if(k.onLastPageOfBook()){K.reader.dispatchEvent("monocle:boundaryend",{locus:a().getLocus({direction:p}),page:I()});n();return}i(S)}else{if(p==N.BACKWARDS){if(k.onFirstPageOfBook()){K.reader.dispatchEvent("monocle:boundarystart",{locus:a().getLocus({direction:p}),page:I()});n();return}M(S)}else{console.warn("Invalid direction: "+p)}}}function w(k,p){if(!K.turnData.points){return}if(K.turnData.lifting||K.turnData.releasing){return}C(p);O(p,null,"0")}function y(k,p){if(!K.turnData.points){return}if(K.turnData.lifting){K.turnData.releaseArgs=[k,p];return}if(K.turnData.releasing){return}C(p);K.turnData.releasing=true;if(k==N.FORWARDS){if(K.turnData.points.tap||K.turnData.points.start-p>60||K.turnData.points.min>=p){b(g)}else{F(H)}}else{if(k==N.BACKWARDS){if(K.turnData.points.tap||p-K.turnData.points.start>60||K.turnData.points.max<=p){F(c)}else{b(z)}}else{console.warn("Invalid direction: "+k)}}}function C(k){K.turnData.points.min=Math.min(K.turnData.points.min,k);K.turnData.points.max=Math.max(K.turnData.points.max,k);K.turnData.points.tap=K.turnData.points.max-K.turnData.points.min<10}function i(k){t(k)}function M(p){var S=L(),k=I();if(Monocle.Browser.env.offscreenRenderingClipped){A(S,a(k).getLocus({direction:N.BACKWARDS}),function(){J();j(S,function(){t(p)})})}else{j(S,function(){J();A(S,a(k).getLocus({direction:N.BACKWARDS}),function(){t(p)})})}}function g(){var k=I(),p=L();if(K.interactive){A(k,a().getLocus({direction:N.FORWARDS}),function(){v(k,function(){m(P)})})}else{J();v(k,function(){m(P)})}}function c(){if(K.interactive){A(L(),a().getLocus(),function(){J();m(P)})}else{P()}}function H(){q()}function z(){J();v(L(),function(){m(q)})}function m(k){A(L(),a().getLocus({direction:N.FORWARDS}),k)}function t(k){K.turnData.lifting=false;K.reader.dispatchEvent("monocle:turning");var p=K.turnData.releaseArgs;if(p){K.turnData.releaseArgs=null;y(p[0],p[1])}else{if(k){O(k)}}}function P(){K.reader.dispatchEvent("monocle:turn");n()}function q(){K.reader.dispatchEvent("monocle:turn:cancel");n()}function n(){f();K.turnData={}}function G(T,X,aa,Y){var U,W;if(!aa.duration){U=0}else{U=parseInt(aa.duration)}if(Monocle.Browser.env.supportsTransition){Monocle.Styles.transitionFor(T,"transform",U,aa.timing,aa.delay);if(Monocle.Browser.env.supportsTransform3d){Monocle.Styles.affix(T,"transform","translate3d("+X+"px,0,0)")}else{Monocle.Styles.affix(T,"transform","translateX("+X+"px)")}if(typeof Y=="function"){if(U&&Monocle.Styles.getX(T)!=X){Monocle.Events.afterTransition(T,Y)}else{Monocle.defer(Y)}}}else{T.currX=T.currX||0;var V=function(){T.currX=X;Monocle.Styles.setX(T,X);if(typeof Y=="function"){Y()}};if(!U){V()}else{var p=(new Date()).getTime();var Z=40;var S=(X-T.currX)*(Z/U);var k=function(){var ac=T.currX+S;var ad=((new Date()).getTime()-p)>=U;var ab=(ac>X&&T.currXX);if(ad||ab){V()}else{Monocle.Styles.setX(T,ac);T.currX=ac;setTimeout(k,Z)}};k()}}}function v(k,p){opts={duration:(Monocle.Browser.env.stickySlideOut?1:0)};G(k,0,opts,p)}function j(k,p){G(k,0-k.offsetWidth,{duration:0},p)}function F(k){G(I(),0,e(),k)}function b(k){G(I(),0-I().offsetWidth,e(),k)}function O(k,S,p){G(I(),Math.min(0,k-I().offsetWidth),{duration:p||N.FOLLOW_DURATION},S)}function e(){var p={timing:"ease-in",duration:320};var k=(new Date()).getTime();if(K.lastSlide&&k-K.lastSlide<1500){p.duration*=0.5}K.lastSlide=k;return p}function E(){if(K.waitControl){return}K.waitControl={createControlElements:function(k){return k.dom.make("div","flippers_slider_wait")}};K.reader.addControl(K.waitControl,"page")}function u(){E();K.reader.dom.find("flippers_slider_wait",0).style.opacity=1;K.reader.dom.find("flippers_slider_wait",1).style.opacity=1}function f(){E();K.reader.dom.find("flippers_slider_wait",0).style.opacity=0;K.reader.dom.find("flippers_slider_wait",1).style.opacity=0}B.pageCount=K.pageCount;B.addPage=r;B.getPlace=a;B.moveTo=d;B.listenForInteraction=o;B.visiblePages=Q;B.interactiveMode=R;h();return B};Monocle.Flippers.Slider.DEFAULT_PANELS_CLASS=Monocle.Panels.TwoPane;Monocle.Flippers.Slider.FORWARDS=1;Monocle.Flippers.Slider.BACKWARDS=-1;Monocle.Flippers.Slider.FOLLOW_DURATION=100;Monocle.Flippers.Scroller=function(g,i){var c={constructor:Monocle.Flippers.Scroller};var e=c.constants=c.constructor;var b=c.properties={pageCount:1,duration:300};function f(){b.reader=g;b.setPageFn=i}function h(k){k.m.dimensions=new Monocle.Dimensions.Columns(k)}function j(){return b.reader.dom.find("page")}function l(k){if(typeof k!="function"){k=e.DEFAULT_PANELS_CLASS}b.panels=new k(c,{end:m})}function m(k){if(b.turning){return}b.reader.selection.deselect();n({page:o().pageNumber()+k});b.reader.dispatchEvent("monocle:turning")}function o(){return j().m.place}function n(k,q){var p=d;if(typeof q=="function"){p=function(r){d(r);q(r)}}b.reader.getBook().setOrLoadPageAt(j(),k,p)}function d(w){if(w.boundarystart||w.boundaryend){return}b.turning=true;var A=j().m.dimensions;var y=j().m.activeFrame;var u=y.contentDocument.body;var v=true;if(b.activeComponent!=y.m.component){b.activeComponent=y.m.component;A.translateToLocus(w,"none");Monocle.defer(a)}else{if(Monocle.Browser.env.supportsTransition){A.translateToLocus(w,b.duration+"ms ease-in 0ms");Monocle.Events.afterTransition(u,a)}else{var z=A.locusToOffset(w);var r=0-z;var p=(new Date()).getTime();var B=40;var q=b.currX||0;var t=(r-q)*(B/b.duration);var k=function(){var C=q+t;if((new Date()).getTime()-p>b.duration||Math.abs(q-r)<=Math.abs((q+t)-r)){Monocle.Styles.setX(u,r);a()}else{Monocle.Styles.setX(u,C);q=C;setTimeout(k,B)}b.currX=C};k()}}}function a(){b.turning=false;b.reader.dispatchEvent("monocle:turn")}c.pageCount=b.pageCount;c.addPage=h;c.getPlace=o;c.moveTo=n;c.listenForInteraction=l;f();return c};Monocle.Flippers.Scroller.speed=200;Monocle.Flippers.Scroller.rate=20;Monocle.Flippers.Scroller.FORWARDS=1;Monocle.Flippers.Scroller.BACKWARDS=-1;Monocle.Flippers.Scroller.DEFAULT_PANELS_CLASS=Monocle.Panels.TwoPane;Monocle.Flippers.Instant=function(f){var b={constructor:Monocle.Flippers.Instant};var d=b.constants=b.constructor;var a=b.properties={pageCount:1};function e(){a.reader=f}function g(k){k.m.dimensions=new Monocle.Dimensions.Columns(k)}function l(){return h().m.place}function m(k,o){var n=c;if(typeof o=="function"){n=function(p){c(p);o(p)}}a.reader.getBook().setOrLoadPageAt(h(),k,n)}function i(k){if(typeof k!="function"){if(Monocle.Browser.on.Kindle3){k=Monocle.Panels.eInk}k=k||d.DEFAULT_PANELS_CLASS}if(!k){throw ("Panels not found.")}a.panels=new k(b,{end:j})}function h(){return a.reader.dom.find("page")}function j(k){a.reader.selection.deselect();m({page:l().pageNumber()+k});a.reader.dispatchEvent("monocle:turning")}function c(k){h().m.dimensions.translateToLocus(k);Monocle.defer(function(){a.reader.dispatchEvent("monocle:turn")})}b.pageCount=a.pageCount;b.addPage=g;b.getPlace=l;b.moveTo=m;b.listenForInteraction=i;e();return b};Monocle.Flippers.Instant.FORWARDS=1;Monocle.Flippers.Instant.BACKWARDS=-1;Monocle.Flippers.Instant.DEFAULT_PANELS_CLASS=Monocle.Panels.TwoPane;