This repository has been archived on 2023-12-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ae75/www/plaquette-digitale-AE75/data/fluidbook.js
2020-11-02 15:46:52 +01:00

1 line
264 KiB
JavaScript

function isMobile(returnTrueIfTouch){if(returnTrueIfTouch==undefined){returnTrueIfTouch=true}var ua=navigator.userAgent;var devices=["iphone","ipad","ipod","droid","blackberry","mobile","htc","samsung","nokia","archos","galaxy","motorola","pad","tab","slate","motorola","symbian","phone","nintendo","playstation","touch","webos","ericsson"];var pattern;if(Modernizr.ftouch&&returnTrueIfTouch){return true}for(i=0;i<devices.length;i++){pattern=new RegExp(devices[i],"i");if(ua.search(pattern)>-1){return true}}return false}function parseGet(){var couples=window.location.search.substr(1).split("&");var res=new Array;var couple=new Array;for(var i=0;i<couples.length;i++){couple=couples[i].split("=");res[couple[0]]=couple[1]}return res}function getBaseURL(removeQuery){if(removeQuery===undefined){removeQuery=false}var l=window.location.toString();var e=l.split("#");var l=e[0];if(removeQuery){e=l.split("?");l=e[0]}if(l.indexOf(".")!=-1){e=l.split("/");e.pop();l=e.join("/")}return l}function getSpriteIcon(icon,attrs){var a=[];var iconSymbol=$('svg symbol[id="'+icon+'"]');if(iconSymbol.length>1){$('svg symbol[id="'+icon+'"]:not(:last)').remove();iconSymbol=$('svg symbol[id="'+icon+'"]')}if(iconSymbol.length==0){return""}if(attrs==undefined){attrs={}}if(attrs.viewBox==null){attrs.viewBox=iconSymbol.get(0).attributes.viewBox.value}if(attrs.class==null){attrs.class=icon}else{attrs.class+=" "+icon}attrs.class+=" nav-icon svg-icon";$.each(attrs,function(k,v){a.push(k+'="'+v+'"')});return"<svg "+a.join(" ")+'><use xlink:href="#'+icon+'" /></svg>'}function relativeToAbsoluteURL(relative){var link=document.createElement("a");link.href=relative;return link.href}function blur(){if($(":focus").length>0){var tmp=document.createElement("input");document.body.appendChild(tmp);tmp.focus();document.body.removeChild(tmp)}}function array_diff(a,b){return a.filter(function(i){return b.indexOf(i)<0})}function getIframeDocument(iframe){iframe=$(iframe).get(0);var doc=iframe.contentWindow||iframe.contentDocument;if(doc.document){doc=doc.document}return doc}function FluidbookNetworkControl(fluidbook){this.fluidbook=fluidbook;this.pauseDate=null;this.pauseQueue=[];this.pausePriorityQueue=[];this.afterProcessingQueue=[];this.processing=true;this.init()}FluidbookNetworkControl.prototype={init:function(){var $this=this;setInterval(function(){if($this.pauseDate!=null&&$this.pauseDate<Date.now()){$this.resume()}},1e3)},pause:function(during,reset){if(reset===undefined){reset=false}var date=Date.now()+during+500;if(this.pauseDate==null||reset){this.pauseDate=date}else{this.pauseDate=Math.max(this.pauseDate,date)}},resume:function(){this.pauseDate=null;this.flushQueue();return},executeWhenNetwork:function(f,highPriority){if(highPriority===undefined){highPriority=false}if(highPriority){this.pausePriorityQueue.push(f)}else{this.pauseQueue.push(f)}if(this.pauseDate==null){this.flushQueue()}},executeAfterProcessing:function(f,loader){this.afterProcessingQueue=[f];if(!this.processing){this.flushAfterProcessingQueue()}else{if(loader!==undefined&&loader===true){this.fluidbook.displayLoader()}}},flushAfterProcessingQueue:function(){$.each(this.afterProcessingQueue,function(k,f){f()});this.afterProcessingQueue=[]},flushQueue:function(){if(this.pausePriorityQueue.length===0&&this.pauseQueue.length===0||this.pauseDate!=null){this.processing=false;return}this.processing=true;var f;if(this.pausePriorityQueue.length>0){f=this.pausePriorityQueue.shift()}else{f=this.pauseQueue.shift()}var $this=this;f(function(){setTimeout(function(){$this.flushAfterProcessingQueue();$this.processing=false;$this.flushQueue()},100)})}};function FluidbookLinks(fluidbook){this.fluidbook=fluidbook;try{this.zoom=new FluidbookLinksZoom(fluidbook)}catch(e){}this.initInlineSlideshowsIntervals=[];this.lowdef=false;this.init()}FluidbookLinks.prototype={init:function(){var $this=this;this.lowdef=this.fluidbook.support.android||this.fluidbook.support.iOS;$(document).on("click","[data-id] a",function(){$this.fluidbook.contentlock.addAction($(this).closest("[data-id]").attr("data-id"),"click");return true});$(document).on("click",'[href^="#"]:not([href="#"])',function(){location.hash=$(this).attr("href");return false});$(document).on("click","[data-wescosales-ref]",function(){});$(document).on("mouseenter","#links a.image_rollover",function(){var id=$(this).closest("[data-id]").data("id");var iid="i_"+id;$this.rolloverEnter(iid)});$(document).on("mouseleave","#links a.image_rollover",function(){var id=$(this).closest("[data-id]").data("id");var iid="i_"+id;$this.rolloverLeave(iid)});$(this.fluidbook).on("fluidbook.resize",function(){$this.resize()});$(document).on("click","a",function(){if($(this).is("#wopen")){return true}var target=$(this).attr("target");if(!target){target="_self"}var href=$(this).attr("href");if(href===undefined){return true}var external=href.substr(0,4)==="http";if(href==="#"){return true}if(!navigator.onLine&&external&&$this.fluidbook.datas.phonegap){$this.fluidbook.alertInternetRequired();e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return false}if($(this).data("type")===16&&external){target="_system"}if($this.fluidbook.datas.phonegap==="android"&&$(this).data("type")===16&&!external){var url=$(this).attr("href");$this.fluidbook._openFile($this.fluidbook.relativeToAbsolute(url),$("body"),"pdf");return}if(target==="_self"){return true}fluidbook.wopen($(this).attr("href"),target);return false});$(document).on("click touchend","[data-showid]",function(){var mode=$(this).data("showmode");if(mode==="exclusiveshow"){$('div.link[data-hidden="1"].show').removeClass("show")}var l=$('div.link[data-id="'+$(this).data("showid")+'"');$(l).show();$(l).trigger("fluidbook.link.show");setTimeout(function(){$(l).addClass("show")},10);return false});$(document).on("click touchend",".textpopup",function(){$this.fluidbook.menu.__openView("text",$(this).data("text"),function(){});return false});$(document).on("click touchend","[data-action]",function(){var map={pdf:"print",fullScreen:"fullscreen",locales:"localesContainers",basket:"cart"};var action=$(this).data("action");var extra=$(this).data("extra");$this.fluidbook.nav.closeMenu();if(action==="share"){return true}if(map[action]){action=map[action]}if(action==="chapters"&&extra){window.location.hash="#/chapters/"+extra;return false}var navitem=$("#horizontalNav_"+action);if(navitem.length>0){if($(this).data("extra")!=null){$(navitem).data("extra",$(this).data("extra"))}$(navitem).get(0).click()}return false})},initLinks:function(pageNr){if(pageNr===undefined){pageNr=this.fluidbook.currentPage}var rightPage,leftPage;if(pageNr%2===0){leftPage=pageNr;rightPage=pageNr+1}else{rightPage=pageNr;leftPage=pageNr-1}var links=$("#links").removeClass("right");$(links).html("").show();if(this.fluidbook.displayOnePage&&pageNr%2===1&&this.fluidbook.l10n.dir==="ltr"){$(links).addClass("right")}links.prepend('<div class="leftContainer container"></div><div class="rightContainer container"></div>');var rightContainer=links.find(".rightContainer");var leftContainer=links.find(".leftContainer");rightContainer.html(this.fluidbook.datas.links[rightPage]);leftContainer.html(this.fluidbook.datas.links[leftPage]);if(this.fluidbook.datas.bookmark){leftContainer.append(this.fluidbook.bookmarks.getBookmarkForPage(leftPage,this.fluidbook.displayOnePage));rightContainer.append(this.fluidbook.bookmarks.getBookmarkForPage(rightPage,this.fluidbook.displayOnePage))}if(this.fluidbook.displayOnePage){if(pageNr!==rightPage){links.find(".rightContainer").hide()}if(pageNr!==leftPage){links.find(".leftContainer").hide()}}if(links.find(".link.multimedia iframe").length>0){this.fluidbook.networkControl.pause(3e4)}if(this.lowdef){links.find("iframe[data-ld]").each(function(){$(this).attr("src",$(this).data("ld"))})}links.prepend('<div class="nonlinkarea"></div>');var $this=this;if(this.fluidbook.datas.linkBlinkTime>0&&this.fluidbook.datas.mobileLinksRevealAnim){setTimeout(function(){$this.animateLinks()},650)}setTimeout(function(){$this.fluidbook.initVideos();$this.initInlineSlideshows();$this.initAnimatedContentsLinks()},200);$(fluidbook).trigger("fluidbook.links.ready");this.resize()},initAnimatedContentsLinks:function(){if(this.fluidbook.mobilefirst.enabled){return}var $this=this;$(".contentLink[data-animation]").each(function(){$this.animateContentLink($(this))})},animateContentLink:function(link){link=$(link);var linkElement=$(link).get(0);var animation=link.data("animation");if(animation.type===undefined||animation.type===""){return}var defaultParams;var w=parseFloat(link.css("width"));var cx=w/2;var h=parseFloat(link.css("height"));var cy=h/2;var from={};var to={};var duration=.5;var tweenmax=true;if(animation.duration!==undefined){duration=parseFloat(animation.duration)}if(animation.ease!==undefined){to.ease=animation.ease}if(animation.delay!==undefined){to.delay=parseFloat(animation.delay)}if(animation.type==="fadein"){from.opacity=0;to.opacity=1}else if(animation.type==="fadeout"){from.opacity=1;to.opacity=0}else if(animation.type==="unmask"||animation.type==="reveal"){var top=0;var right=w;var bottom=h;var left=0;var rectinit="rect(0px,"+w+"px,"+h+"px,0px)";if(animation.direction==="left"&&animation.type==="unmask"||animation.direction==="right"&&animation.type==="reveal"){right=0}else if(animation.direction==="right"&&animation.type==="unmask"||animation.direction==="left"&&animation.type==="reveal"){left=w}else if(animation.direction==="up"&&animation.type==="unmask"||animation.direction==="down"&&animation.type==="reveal"){bottom=0}else if(animation.direction==="down"&&animation.type==="unmask"||animation.direction==="up"&&animation.type==="reveal"){top=h}var rect="rect("+top+"px,"+right+"px,"+bottom+"px,"+left+"px);";if(animation.type==="unmask"){to.clip=rect;from.clip=rectinit}else if(animation.type==="reveal"){to.clip=rectinit;from.clip=rect}}else if(animation.type==="pie"){defaultParams={startAngle:"0",direction:"clockwise",size:"outside",innerRadius:"0"};animation=$.extend({},defaultParams,animation);animation.startAngle=parseFloat(animation.startAngle);animation.innerRadius=parseFloat(animation.innerRadius);if(animation.direction==="clockwise"){from.angle=animation.startAngle+720}else{from.angle=animation.startAngle}linkElement.angle=from.angle;var radius;if(animation.size==="outside"){radius=Math.sqrt(cx*cx+cy*cy)}else{radius=Math.min(w,h)/2}var sector=function(paper,cx,cy,r,pct,startAngle,endAngle,params){if(animation.direction==="clockwise"){var sa=startAngle;startAngle=endAngle;endAngle=sa}var rad=Math.PI/180;var x1=cx+r*Math.cos(-startAngle*rad),x2=cx+r*Math.cos(-endAngle*rad),y1=cy+r*Math.sin(-startAngle*rad),y2=cy+r*Math.sin(-endAngle*rad);var r1=r*pct;var x3=cx+r1*Math.cos(-endAngle*rad),y3=cy+r1*Math.sin(-endAngle*rad),x4=cx+r1*Math.cos(-startAngle*rad),y4=cy+r1*Math.sin(-startAngle*rad);var long=+(endAngle-startAngle>180);return paper.path(["M",x4,y4,"L",x1,y1,"A",r,r,0,long,0,x2,y2,"L",x3,y3,"A",r1,r1,0,long,1,x4,y4,"z"]).attr(params)};var paper=new Raphael(link.attr("id"),w,h);var bgc=link.attr("data-color");to.autoCSS=false;to.angle=animation.startAngle+360;to.onStart=function(){link.css("background-color","transparent")};to.onUpdate=function(){paper.clear();sector(paper,cx,cy,radius,animation.innerRadius,linkElement.angle,to.angle,{fill:bgc,stroke:"none"})}}else if(animation.type==="number"){tweenmax=false;defaultParams={startValue:"0",decimalSeparator:".",decimalDigitNumber:"0",separator:" ",align:"left",letterSpacing:"0",prefix:"",suffix:""};animation=$.extend({},defaultParams,animation);animation.startValue=parseFloat(animation.startValue.replace(/,/,"."));animation.decimalDigitNumber=parseInt(animation.decimalDigitNumber);animation.letterSpacing=parseFloat(animation.letterSpacing);var ea=to.ease.split(".");var ease=window[ea[0]][ea[1]];var options={duration:duration,useEasing:true,useGrouping:true,separator:animation.separator,decimalPlaces:animation.decimalDigitNumber,decimal:animation.decimalSeparator,prefix:animation.prefix,suffix:animation.suffix,easingFn:function(t,b,c,d){return b+ease.getRatio(Math.min(1,Math.max(0,t/d)))*c}};var css={textAlign:animation.align,letterSpacing:animation.letterSpacing,opacity:0};link.css(css);var value=parseFloat(link.text().replace(/,/,"."));link.text("");var countup=new CountUp(link.attr("id"),value,options);setTimeout(function(){link.css("opacity",1);countup.start()},to.delay*1e3)}link.show();if(tweenmax){TweenMax.fromTo(linkElement,duration,from,to)}this.fluidbook.networkControl.pause((to.delay+duration+.5)*1e3)},getLinkDataById:function(uid){return this.fluidbook.datas.linksData[uid]},getLinkByHref:function(href){for(var i=1;i<=this.fluidbook.datas.pages;i++){var res=$(this.fluidbook.datas.links[i]).find('a[href="'+href+'"]');if(res.length>0){return res.eq("0")}}return null},animateLinks:function(linksContainer,additionalDelay){var container=$(document);if(linksContainer!==undefined){container=$(linksContainer)}if(additionalDelay===undefined){additionalDelay=0}if(this.fluidbook.pagetransitions.transitionning){return}var animateBookmarks=this.fluidbook.datas.bookmarkBlinkOnPageChange==true;var $this=this;var links=$(container).find(".link a.displayArea");if(!this.fluidbook.mobilefirst.enabled){$(links).each(function(){$this.animateLink(this,additionalDelay)})}if(animateBookmarks){var bookmarks=$("#links .bookmark:not([data-enabled])");$(bookmarks).addClass("animating").css("opacity",1);TweenMax.to($(bookmarks),$this.fluidbook.datas.linkBlinkTime,{opacity:0,delay:.1,onComplete:function(){$(bookmarks).removeClass("animating").css("opacity","")}})}},animateLink:function(link,additionalDelay){var $this=this;if(!$(link).is(".displayArea")){link=$(link).find(".displayArea")}if(additionalDelay===undefined){additionalDelay=0}var delay=$(link).data("blinkdelay");if(delay===undefined||delay===null){delay=0}else{delay=parseInt(delay)}setTimeout(function(){$(link).addClass("animating").css("opacity",1);TweenMax.to(link,$this.fluidbook.datas.linkBlinkTime,{opacity:0,delay:.1,onComplete:function(){$(link).removeClass("animating").css("opacity",1)}})},delay+additionalDelay)},triggerLinkById:function(id){var a=$('.link[data-id="'+id+'"] a:eq(0)');a.get(0).click()},initInlineSlideshows:function(){var $__this=this;$.each(this.initInlineSlideshowsInterval,function(k,interval){clearInterval(interval)});$(".inlineslideshow").each(function(){if($(this).is(":visible")){$__this.initSlideshow($(this))}else{var $s=$(this);$(this).closest(".link").on("fluidbook.link.show",function(){if(!$s.data("init")){$__this.initSlideshow($s)}})}})},initSlideshow:function(s){var $this=this;s.data("init",true);var dir="data/links/"+$(s).data("dir")+"/";$.each($(s).data("images"),function(k,i){var h='<div class="slide" style="background-image: url(\''+dir+i+"');\"></div>";s.append(h)});setTimeout(function(){var s0=s.find(".slide:eq(0)");s0.css("display","block");setTimeout(function(){s0.addClass("show")},10)},4e3);this.initInlineSlideshowsIntervals.push(setInterval(function(){var current=s.find(".slide.show").eq(0);var next=$(current).nextAll(".slide:not(.show):eq(0)");if($(next).length===0){next=s.find(".slide:eq(0)")}$(next).css({display:"block",zIndex:2});setTimeout(function(){$(next).addClass("show").one($this.fluidbook.support.getTransitionEndEvent(),function(){$(current).removeClass("show").css("display","none");$(this).css({zIndex:""})})},100)},parseFloat(this.fluidbook.datas.inlineSlideshowDuration)*1e3))},resize:function(){var $this=this;$("#links .link.iframe").each(function(){var w=$(this).outerWidth();var h=$(this).outerHeight();var iw=w*$this.fluidbook.resize.bookScale;var ih=h*$this.fluidbook.resize.bookScale;$(this).find("iframe").attr("width",iw).attr("height",ih).css({width:iw,height:ih,transform:"scale("+1/$this.fluidbook.resize.bookScale+")"})})},rolloverEnter:function(iid){var e=$('[data-id="'+iid+'"]');e.addClass("animaterollover")},rolloverLeave:function(iid){var e=$('[data-id="'+iid+'"]');e.removeClass("animaterollover")},resizeIframe:function(height){var iframe=$(".link iframe").eq(0);var container=iframe.closest(".content");var iframeHeight=parseFloat(iframe.data("height"));var height=Math.max(height,iframeHeight);var containerHeight=parseFloat(container.data("height"));if(containerHeight===0||isNaN(containerHeight)){containerHeight=iframeHeight}iframe.attr("height",height);iframe.closest(".multimediaScale").css("height",height);container.css({maxHeight:Math.min(iframeHeight,containerHeight)});if(!Modernizr.ftouch){container.perfectScrollbar("update")}}};function FluidbookSupport(fluidbook){this.fluidbook=fluidbook;this.userAgent=navigator.userAgent;this.IE=0;try{this.IE=navigator.userAgent.match(/(MSIE |Trident.*rv[ :])([0-9]+)/)[2]}catch(e){}this.macOs=navigator.platform.toUpperCase().indexOf("MAC")>=0;this.android=this.fitScreenAtZero=this.userAgent.search(/android/i)>-1||this.userAgent.search(/galaxy/i)>-1;this.android3=this.android&&this.userAgent.search(/android 3/i)>-1;this.iOS=this.userAgent.search(/ipad/i)>-1||this.userAgent.search(/iphone/i)>-1||this.userAgent.search(/ipod/i)>-1;this.edge=this.userAgent.search(/edge/i)>-1;this.offline=typeof process!=="undefined"&&process.versions["node-webkit"]||window.location.toString().indexOf("file://")==0;switch(this.fluidbook.datas.mobileVersion){case"html5":this.imagesVersion=false;break;case"html5-images":this.imagesVersion=true;break;case"html5-desktop":this.imagesVersion=this.iOS||this.android||this.IE>0;break;default:this.imagesVersion=false;break}this.transitions2d=Modernizr.csstransforms&&Modernizr.csstransitions;this.transitions3d=this.transitions2d&&Modernizr.csstransforms3d&&Modernizr.preserve3d;this.transitions3dacc=this.transitions2d;this.ie9=$("html").hasClass("ie9");this.androidbrowser=this.android&&this.userAgent.search(/applewebkit/i)>-1;this.transitionEndEvent=this.whichTransitionEvent();if(window.resolution==="auto"){if(Modernizr.mq("(min-device-width : 320px) and (max-device-width : 480px)")){this.resolution=150}else{this.resolution=Modernizr.mq("(-webkit-min-device-pixel-ratio: 2)")?this.fluidbook.datas.retinaResolution:150}}else{this.resolution=window.resolution}this.isMobile=isMobile();this.SVG=Modernizr.svg&&this.fluidbook.datas.mobileIconVector;this.nwjs=typeof process!=="undefined"&&process.versions["node-webkit"];this.screenWidth=Math.min(window.screen.availWidth,window.screen.availHeight);this.screenHeight=Math.max(window.screen.availWidth,window.screen.availHeight);this.fullscreen=screenfull.enabled&&!this.iOS;this._orientation=this.getOrientation();this.initEvents()}FluidbookSupport.prototype={getTransitionEndEvent:function(all){if(all==undefined){all=false}if(!all){return this.transitionEndEvent}return"webkitTransitionEnd transitionend oTransitionEnd msTransitionEnd transitionEnd"},hasNetwork:function(){if(navigator.onLine!=undefined){return navigator.onLine}else{return networkState()!="none"}},networkState:function(){var connection=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{type:"unknown"};var t=connetion.type;if(t===undefined){t="unknown"}else if(t===0){t="unknown"}else if(t===1){t="ethernet"}else if(t===2){t="wifi"}else if(t===3){t="2g"}else if(t===4){t="3g"}else if(t===5){t="4g"}else{t="none"}return t},initEvents:function(){var $this=this;if(!isMobile(false)){$(window).on("resize",function(){resize()})}else{if("onorientationchange"in window){window.addEventListener("orientationchange",function(){resize();setTimeout(function(){resize()},750)},false)}else{setInterval(function(){$this.checkOrientation()},100)}}},whichTransitionEvent:function(){var t;var el=document.createElement("fakeelement");var transitions={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",MSTransition:"msTransitionEnd",OTransition:"oTransitionEnd"};for(t in transitions){if(el.style[t]!==undefined){return transitions[t]}}},checkOrientation:function(){var o=this.getOrientation();if(o!=this._orientation){this._orientation=o;resize()}},getOrientation:function(){try{if(this.fluidbook.pad&&this.fluidbook.pad.enabled||this.fluidbook.mobilefirst.enabled){return 0}else if(this.fluidbook.datas.mobileNavigationType==="landscape"){return 90}else if(this.fluidbook.datas.mobileNavigationType==="portrait"){return 0}}catch(err){}try{return Modernizr.mq("(orientation: portrait)")?0:90}catch(err){}return $("#op").is(":visible")?0:90}};function FluidbookVideo(fluidbook){var $this=this;this.players={};this.fullscreenActive=false;$(fluidbook).on("fluidbook.beforePageTransition",function(){$this.removeAllVideos()});$(fluidbook).on("fluidbook.resize",function(e){$this.resizeControls()});$(window).on("videoFullscreenEntered",function(){$this.fullscreenActive=true});$(window).on("videoFullscreenExited",function(){setTimeout(function(){$this.fluidbook.resize.resize()},250);setTimeout(function(){$this.fullscreenActive=false;$this.fluidbook.resize.resize()},1e3)});this.fluidbook=fluidbook;this.video=(Modernizr.video&&(Modernizr.video.h264||Modernizr.video.webm||Modernizr.video.ogg))!=false;this.videoFormats=[];var probably=[];var maybe=[];var not=[];if(this.video){var formats=this.fluidbook.datas.videoFormats;for(var i=0;i<formats.length;i++){var f=formats[i];if(f=="mp4"){f="h264"}if(f=="ogv"){f="ogg"}var support=Modernizr.video[f];if(f=="ogg"){f="ogv"}if(f=="h264"){f="mp4"}if(support=="probably"){probably.push(f)}else if(support=="maybe"){maybe.push(f)}else{not.push(f)}}}this.videoFormats=$.merge(probably,maybe,not);this.preferedFormat=this.videoFormats[0]}FluidbookVideo.prototype={initVideo:function(e){var $this=this;if($(e).html()!=""){return}var id=$(e).data("id"),width=parseFloat($(e).data("width")),height=parseFloat($(e).data("height")),name=$(e).data("name"),controls=$(e).data("controls"),loop=$(e).data("loop"),sound=$(e).data("sound"),autoplay=$(e).data("autoplay"),setup=$(e).data("setup"),linkid=$(e).data("link-id"),path,poster,html,player;if(videojs.players[id]){try{videojs(id).dispose()}catch(exception){console.warn("Error disposing player #"+id+" -- "+exception.message)}}if(fluidbook.datas.mobileVideosPath==""){path="data/links/"+name}else{path=fluidbook.datas.mobileVideosPath+name;if(!fluidbook.datas.standalone&&path.substr(0,3)=="../"){path="../"+path}}if(name!==""){poster=path+".jpg"}html='<video class="video-js vjs-fluidbook-skin"';if(poster){html+='poster="'+poster+'" '}html+='id="'+id+'" ';if(!isNaN(width)){html+='data-width="'+width+'" ';html+='width="'+width+'" '}if(!isNaN(height)){html+='data-height="'+height+'" ';html+='height="'+height+'" '}if(controls=="1"){html+="controls "}if(loop=="1"){html+="loop "}if(autoplay=="1"){html+="autoplay "}if(sound=="0"){html+="muted "}html+=">";if(name!==""){this.videoFormats.forEach(function(format){html+='<source src="'+path+"."+format+'">'})}html+="</video>";$(e).html(html);player=videojs(id,setup);player.ready(function(){$this.resizeControls();if(fluidbook.video.players[id]){var settings=fluidbook.video.players[id];player.autoplay(false);player.volume(settings.volume);player.muted(settings.muted);player.currentTime(settings.currentTime);setTimeout(function(){player.play()},50);player.one("play",function(){if(settings.paused){setTimeout(function(){player.pause()},100)}});player.play();if(settings.paused){player.pause()}setTimeout(function(){$this.fluidbook.contentlock.addAction(linkid,"complete")},(player.duration()-5)*1e3)}});player.on("pause",function(){this.bigPlayButton.show();player.one("play",function(){this.bigPlayButton.hide()})});player.on("fullscreenchange",function(){if(player.isFullscreen()){$(window).trigger("videoFullscreenEntered")}else{$(window).trigger("videoFullscreenExited")}});player.on("ended",function(){$this.fluidbook.contentlock.addAction(linkid,"complete")})},openVideo:function(link){if(link===undefined)return false;link=$(link);var popup=$("#videoPopup"),html,width=parseFloat(link.data("width")),height=parseFloat(link.data("height")),name=link.data("name"),controls=link.data("controls"),loop=link.data("loop"),sound=link.data("sound"),autoplay=link.data("autoplay"),path,poster;if(fluidbook.datas.mobileVideosPath==""){path="data/links/"+name}else{path=fluidbook.datas.mobileVideosPath+name;if(!fluidbook.datas.standalone&&path.substr(0,3)=="../"){path="../"+path}}poster=path+".jpg";html='<video class="video-js" poster="'+poster+'" ';if(!isNaN(width)){html+='data-width="'+width+'" ';html+='width="'+width+'" '}if(!isNaN(height)){html+='data-height="'+height+'" ';html+='height="'+height+'" '}html+='controls="controls" ';if(controls=="0"){html+="onplay=\"this.removeAttribute('controls')\" "}if(loop=="1"){html+='onended="this.play()" '}if(autoplay=="1"){html+='autoplay="autoplay" '}if(sound=="0"){html+='muted="muted" '}html+='src="'+path+"."+this.preferedFormat+'"></video>';popup.html(html);videojs($("#videoPopup video"));$("body").addClass("videoPopup");popup.show()},initCache:function(){var $this=this;$("body").append('<iframe id="videoframe" marginheight="0" marginwidth="0" scrolling="no" width="1" height="1" src="data/links/video.'+this.preferedFormat+'.html" frameborder="0"></iframe>');$("#videoframe").load(function(){var w=this.contentWindow;var cache=w.applicationCache;cache.addEventListener("downloading",$this.logCacheEvent,false);cache.addEventListener("checking",$this.logCacheEvent,false);cache.addEventListener("cached",$this.logCacheEvent,false);cache.addEventListener("downloading",$this.logCacheEvent,false);cache.addEventListener("noupdate",$this.logCacheEvent,false);cache.addEventListener("updateready",$this.logCacheEvent,false);cache.addEventListener("error",$this.logCacheEvent,false);$(this).hide()})},logCacheEvent:function(e){},pauseAllVideos:function(){$("video").each(function(){this.pause()})},removeAllVideos:function(skipPopupVideos){skipPopupVideos=skipPopupVideos||true;var $this=this,playersToBeRemoved=this.getActivePlayers();if(skipPopupVideos){playersToBeRemoved=playersToBeRemoved.filter(function(player){return!$.contains(document.getElementById("view"),document.getElementById(player.id()))})}playersToBeRemoved.forEach(function(player){$this.disposeVideo(player)})},disposeVideo:function(player){var id=player.id();if(player.hasStarted()){fluidbook.video.players[id]={currentTime:player.currentTime(),volume:player.volume(),muted:player.muted(),paused:player.paused()}}player.dispose();return id},getActivePlayers:function(){var players=[];if(typeof videojs!=="undefined"&&Object.keys(videojs.players).length>0){for(var id in videojs.players){if(videojs.players[id]){players.push(videojs(id))}}}return players},isVideoFullscreen:function(){return this.fullscreenActive},resizeControls:function(){$(".video-js").each(function(){var id=$(this).attr("id");if(videojs(id)&&videojs(id).isFullscreen()){$(this).attr("style","")}else{var scaledFontSize=12/fluidbook.resize.bookScale,scaledWidth=$(this).width()*fluidbook.resize.bookScale,breakpoint=400;if(scaledWidth<breakpoint){$(this).css("fontSize",scaledFontSize*scaledWidth/breakpoint)}else{$(this).css("fontSize",scaledFontSize)}}})},killVideosIn:function(e){var $this=this;$(e).find(".videoContainer").each(function(){var id=$(this).data("id");try{var player=videojs(id);$this.disposeVideo(player)}catch(e){}})}};function FluidbookViewport(fluidbook){this.width="device-width";this.height=null;this.minScale=1;this.maxScale=1;this.initialScale=1;this.userScalable=false;this.meta=$('meta[name="viewport"]');this.fluidbook=fluidbook;if(this.fluidbook.support.iOS){this.initialScale=1}}FluidbookViewport.prototype={updateViewport:function(){var w="";if(this.width!=null){w="width="+this.width+", "}var h="";if(this.height!=null){h="height="+this.height+", "}var is="";if(this.initialScale>0){var is="initial-scale="+this.initialScale+", "}var us=this.userScalable==true?"yes":"no";var value=w+h+is+"minimum-scale="+Math.max(.25,this.minScale)+", maximum-scale="+Math.min(10,this.maxScale)+", user-scalable="+us+", shrink-to-fit=no";this.meta.attr("content",value)}};function FluidbookDesktop(fluidbook){this.fluidbook=fluidbook;if(this.fluidbook.support.iOS||this.fluidbook.support.android){return}this.init()}FluidbookDesktop.prototype={init:function(){var $this=this;$(document).on("touchend","#links",function(e){if($(e.target).is("#links")){e.preventDefault()}});$(document).on("click","#links",function(e){if($this.fluidbook.zoom.enabled&&$this.fluidbook.input.isUsingMouse()){$this.clickZoom(e);return false}});$(document).on("click","#links .link:not(.eventOverlayLink)",function(e){e.stopPropagation()});$(document).on("mousewheel",function(e){if($this.fluidbook.zoom.enabled){$this.wheelZoom(e.deltaY)}});$(document).on("mousemove","body",function(e){if($this.fluidbook.zoom.enabled){$this.moveZoom(e)}})},moveZoom:function(e,force){try{var x=e.pageX/this.fluidbook.resize.ww;var y=e.pageY/this.fluidbook.resize.hh;this.fluidbook.zoom.setOriginPct(x,y,force)}catch(err){}},clickZoom:function(e,way){if(way==undefined){if(this.fluidbook.zoom.zoom==1){way=1}else{way=-1}}var newScale;if(way==1){newScale=this.fluidbook.datas.zoom/100}else if(way==-1){newScale=1}this.moveZoom(e,true);this.fluidbook.zoom.setZoom(newScale);return false},wheelZoom:function(delta){if($("body").is(".view, .menu-open")){return}this.fluidbook.zoom.setZoom(this.fluidbook.zoom.zoom+delta/3,delta>0?1:-1)}};function FluidbookService(fluidbook,id){this.fluidbook=fluidbook;this.baseURL="https://workshop.fluidbook.com/services/";this.id=id}FluidbookService.prototype={call:function(func,datas,handler,context){datas["id"]=this.id;return $.ajax({url:this.baseURL+func,context:context,format:"xml",crossDomain:true,data:datas,success:function(data){handler.call(this,data)}})},open:function(func,datas,options){datas["id"]=this.id;var u=[];$.each(datas,function(k,v){u.push(k+"="+encodeURIComponent(v))});var url=this.baseURL+func+"?"+u.join("&");this.fluidbook.wopen(url,"_blank",options)}};function FluidbookShare(fluidbook){this.fluidbook=fluidbook;if(this.isEnabled()){var $this=this;if(this.fluidbook.datas.phonegap!=="android"){$(document).on("click",".share",function(){var f="send"+ucfirst($(this).data("service"));var url=$(this).data("url");if(url===undefined||url===null||url==="undefined"){url=""}var context=$(this).data("context")===null?"publication":$(this).data("context");$this[f](url,context);$(this).closest(".mview").find(".back").click();return false})}$(document).on("click touchend",'[data-action="share"]',function(){$this.fluidbook.menu.openView("share",$(this).data("extra"),$(this).data("context"));return false});$(this.fluidbook).on("fluidbook.page.change.end",function(){$('[data-href^="article:"]').each(function(){$(this).attr("data-href",relativeToAbsoluteURL($this.getShareURL($(this).data("href"))))});if($(".fb-like").length>0){try{console.log("try to refresh facebook");FB.XFBML.parse()}catch(e){}}});if(this.fluidbook.datas.phonegap==="android"){$(document).on("click","#shareLinks, #shareLinks a",function(e){e.stopPropagation();e.stopImmediatePropagation();e.preventDefault();$this.intentShare();return false})}}}FluidbookShare.prototype={isEnabled:function(){return this.fluidbook.datas.share&&this.getShareURL("")!==false},getFluidbookURL:function(){var l=window.location.toString();if(this.fluidbook.datas.restrictPrintDownload!==""){l=l.replace("?"+this.fluidbook.datas.restrictPrintDownload,"");l=l.replace(this.fluidbook.datas.restrictPrintDownload,"")}var e=l.split("#");return e[0]},getShareURL:function(url){if(url==undefined||url=="undefined"||url==null||url==false){url=""}if(url==""){var res=false;if(this.fluidbook.support.offline||this.fluidbook.datas.phonegap){if(this.fluidbook.datas.offlineLink!==""&&this.fluidbook.datas.offlineLink!=="http://"){res=this.fluidbook.datas.offlineLink}}else{res=this.getFluidbookURL()}return res}var e=url.split(":");if(e.length===1){return relativeToAbsoluteURL(url)}else{if(e[0]==="http"||e[0]==="https"){return url}else if(e[0]==="article"){return relativeToAbsoluteURL("./p/"+this.getSEOArticle(e[1]).url)}}},getShareTitle:function(url){if(url==""){return this.fluidbook.datas.title}else{var e=url.split(":");if(e[0]=="article"){return this.getSEOArticle(e[1]).title}}return this.fluidbook.datas.title},getEmailSubject:function(url,context){if(context==="publication"){if(this.fluidbook.datas.email_title===""){return this.fluidbook.datas.title}return this.fluidbook.datas.email_title}else if(context==="product"){return this.fluidbook.datas.product_email_title}else if(context==="article"){return this.getSEOArticle(url).title}},getEmailBody:function(url,context){var body;var u=this.getShareURL(url);var title=this.fluidbook.datas.title;if(context==="publication"){if(this.fluidbook.datas.email_body===""){body=this.fluidbook.l10n.__("Veuillez cliquer sur le lien suivant pour ouvrir %title%\\n%link%")}else{body=this.fluidbook.datas.email_body}}else if(context==="product"){body=this.fluidbook.datas.product_email_body}else if(context==="article"){body="%title%\\n%link%";title=this.getSEOArticle(url).title}body=body.trim();body=body.replace(/\%title\%/g,title);if(body.indexOf("%link%")===-1){body+="\n\n"+u}else{body=body.replace(/\%link\%/g,u)}body=body.replace(/\\r\\n/g,"\n");body=body.replace(/\\r/g,"\n");body=body.replace(/\\n/g,"\r\n");return body},getSEOArticle:function(title){if(title.indexOf("article:")===0){title=title.substr(8)}return this.fluidbook.datas.seoArticles[title]},getShareLinks:function(hideLabels,url,context){var shareLinks={},shareHTML="";if(url===undefined||url===null||url==="undefined"){url=""}hideLabels=hideLabels||false;if(this.fluidbook.datas.friend){shareLinks["email"]="E-mail"}if(this.fluidbook.datas.facebook){shareLinks["facebook"]="Facebook"}if(this.fluidbook.datas.twitter){shareLinks["twitter"]="Twitter"}if(this.fluidbook.datas.googleplus){shareLinks["googleplus"]="Google Plus"}if(this.fluidbook.datas.linkedin){shareLinks["linkedin"]="LinkedIn"}if(this.fluidbook.datas.viadeo){shareLinks["viadeo"]="Viadeo"}if(this.fluidbook.datas.pinterest){shareLinks["pinterest"]="Pinterest"}for(var shareType in shareLinks){if(shareLinks.hasOwnProperty(shareType)){shareHTML+='<li data-level="0"><a href="#" data-service="'+shareType+'" data-url="'+url+'" data-context="'+context+'" class="share level0">';shareHTML+=getSpriteIcon("share-"+shareType);if(!hideLabels){shareHTML+=" "+shareLinks[shareType]}shareHTML+="</a></li>"}}return'<ul class="chapters shareList">'+shareHTML+"</ul>"},openShare:function(url,context,callback){var view;if(url===undefined||url===null||url==="undefined"||!url){url=""}if(context===undefined||context===null){context=url.indexOf("article:")===0?"article":"publication"}view='<div class="caption">'+this.fluidbook.menu.closeButton()+"<h2>"+this.fluidbook.l10n.__("share")+"</h2></div>";view+='<div class="content">';view+=this.getShareLinks(false,url,context);view+="</div>";$("#view").append('<div class="mview" data-menu="share">'+view+"</div>");if(callback!=undefined){callback()}},intentShare:function(subject,body){if(subject==undefined){subject=this.fluidbook.datas.title}if(body==undefined){body=this.fluidbook.datas.title+" : "+this.getShareURL()}body=body.replace(/\r\n/g,"\n");body=body.replace(/\r/g,"\n");body=body.replace(/\n/g,"\r\n");if(this.fluidbook.datas.phonegap==="android"){var extras={};extras[window.plugins.webintent.EXTRA_SUBJECT]=subject;extras[window.plugins.webintent.EXTRA_TEXT]=body;window.plugins.webintent.startActivity({action:window.plugins.webintent.ACTION_SEND,type:"text/plain",extras:extras},function(args){},function(args){})}else{window.location="mailto:?subject="+encodeURIComponent(subject)+"&body="+encodeURIComponent(body)}this.fluidbook.stats.track(5)},getTweetContent:function(url,context){var tweet;if(context==="publication"){tweet=this.fluidbook.datas.twitter_description}else if(context==="product"){tweet=this.fluidbook.datas.product_tweet}else if(context==="article"){tweet="%title% : %short%"}return tweet.replace("%title%",this.getShareTitle(url))},sendEmail:function(url,context){var subject=encodeURIComponent(this.getEmailSubject(url,context));var body=encodeURIComponent(this.getEmailBody(url,context));var mailtoParams=[];if(subject!==""){mailtoParams.push("subject="+subject)}if(body!==""){mailtoParams.push("body="+body)}var mailto="mailto:?"+mailtoParams.join("&");window.location=mailto;this.fluidbook.stats.track(5)},sendTwitter:function(url,context){var tweet=this.getTweetContent(url,context);var hasUrlInTweet=tweet.indexOf("%url%")>=0||tweet.indexOf("%short%")>=0;url=this.getShareURL(url);var escaped_url=encodeURIComponent(url);tweet=tweet.replace("%short%",url);tweet=tweet.replace("%url%",url);var urlshare="";if(!hasUrlInTweet){urlshare="&url="+escaped_url}this.fluidbook.wopen("http://twitter.com/intent/tweet?source=webclient"+urlshare+"&text="+encodeURIComponent(tweet),"share_twitter","width=650,height=400");this.fluidbook.stats.track(13)},sendFacebook:function(url,context){this.fluidbook.wopen("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(this.getShareURL(url)),"share_facebook","width=650,height=400");this.fluidbook.stats.track(12)},sendGoogleplus:function(url,context){this.fluidbook.wopen("https://plus.google.com/share?url="+encodeURIComponent(this.getShareURL(url)),"share_googleplus","width=600,height=600");this.fluidbook.stats.track(12)},sendLinkedin:function(url,context){this.fluidbook.wopen("https://www.linkedin.com/cws/share?url="+encodeURIComponent(this.getShareURL(url))+"&isFramed=true&_ts="+Date.now(),"share_linkedin","width=650,height=400");this.fluidbook.stats.track(12)},sendViadeo:function(url,context){this.fluidbook.wopen("http://www.viadeo.com/shareit/share/?url="+encodeURIComponent(this.getShareURL(url)),"share_viadeo","width=650,height=400");this.fluidbook.stats.track(12)},sendPinterest:function(url,context){this.fluidbook.wopen("http://pinterest.com/pin/create/button/?url="+encodeURIComponent(this.getShareURL(url))+"&media="+encodeURIComponent("https://workshop.fluidbook.com/services/facebook_thumbnail?id="+this.fluidbook.datas.id+"&j="+Date.now())+'"',"width=650,height=400");this.fluidbook.stats.track(12)}};function FluidbookL10N(fluidbook,lang){this.translations={};this.multilang=[];this.multilangEnabled=false;this.fluidbook=fluidbook;this.currentLang;this.init(lang);this.initMultilang();this.load()}FluidbookL10N.prototype={init:function(lang){if(lang===undefined||lang===null||lang===""){lang="default"}this.lang=lang;if(this.lang==="default"){this.currentLang=this.fluidbook.datas.defaultLang}else{this.currentLang=this.lang}},load:function(){this.dir=this.getLanguageDirection(this.getActiveLang());this.ltr=this.dir=="ltr";this.rtl=!this.ltr;$("html").attr("dir",this.dir);if(this.dir=="rtl"){$("html").removeClass("ltr").addClass("rtl")}else{$("html").removeClass("rtl").addClass("ltr")}if(this.lang==="default"){this.translations=this.fluidbook.datas.l10n[this.fluidbook.datas.defaultLang];$.extend(this.translations,this.fluidbook.datas.l10n[this.lang])}else{this.translations=this.fluidbook.datas.l10n[this.lang]}this.updateTranslations()},getActiveLang:function(){var res=this.lang;if(this.lang==="default"){res=this.fluidbook.datas.defaultLang}if(undefined!==this._langsCount&&this._langsCount[res]>1){res+="_"+this.fluidbook.datas.country}return res},initMultilang:function(){var forceLocales;try{forceLocales=window.localStorage.getItem("locales")}catch(err){}var force=false;if(forceLocales===undefined||forceLocales===null||forceLocales==="undefined"){force=false}else{force=true;try{forceLocales=json_parse(forceLocales)}catch(err){force=false}}if(!force){if(this.fluidbook.datas.multilang==""){return}if(this.fluidbook.datas.multiApp){return}}this.multilangEnabled=true;var $this=this;var ml=this.fluidbook.datas.multilang.replace(/\r/g,"\n").replace(/\n+/g,"\n");var e=ml.split("\n");this._langsCount={};var versions=[];$.each(e,function(k,v){if(v==""){return}var l=v.split(",");if(l[0]==""){return}var url=l[2];if(force){var publications=forceLocales[l[0]];if(publications===undefined||publications===null){publications=forceLocales[l[0]+"_"+l[1].toLocaleUpperCase()]}if(publications===undefined||publications===null){return}var pubid=publications[0];try{url=pubid}catch(err){url=""}}var o={lang:l[0],flag:l[1],url:url,langName:l[3],countryName:l[4]};if($this._langsCount[o.lang]===undefined){$this._langsCount[o.lang]=0}$this._langsCount[o.lang]++;versions.push(o)});$.each(versions,function(k,version){var languageId=version.lang;if($this._langsCount[version.lang]>1){languageId+="_"+version.flag}version.id=languageId;$this.multilang[languageId]=version})},getCurrentLanguageName:function(){return this.getLanguageName(this.getActiveLang())},getLanguageName:function(languageCode){var details=this.multilang[languageCode],name="";if(details===undefined){return name}switch(this.fluidbook.datas.multilangDisplay){case"lang":name=details.langName;break;case"lang_country":name=details.langName+" ("+details.countryName+")";break;case"country_lang":name=details.countryName+" ("+details.langName+")";break}return name},getLanguageDirection:function(languageCode){var e=languageCode.split("_");languageCode=e[0];return languageCode=="ar"||languageCode=="he"?"rtl":"ltr"},updateTranslations:function(){var $this=this;$("#q").attr("placeholder",this.__("search"));$("i.l10n").each(function(){var t=$this.fluidbook.l10n.__($(this).attr("str"));$(this).replaceWith(t)})},translate:function(str,markupIfNonAvailable){return this.__(str,markupIfNonAvailable)},__:function(str,markupIfNonAvailable){if(str===undefined){return}if(str.substr(0,1)=="!"){return str.substr(1)}if(this.translations[str]==undefined||this.translations[str]==null||this.translations[str]==""){if(markupIfNonAvailable==undefined||!markupIfNonAvailable){return str}else{return"~ "+str+" ~"}}return this.translations[str]}};function FluidbookSlider(fluidbook){this.fluidbook=fluidbook;this.sliderWidth=0;this.cursorWidth=0;this.snapsWidth=0;this.snapsCount=0;this.init()}FluidbookSlider.prototype={init:function(){var $this=this;$(document).on("click",function(){$("#slider").removeClass("drag");return true});$(document).on("click","#sliderthumb a[data-page]",function(){if($this.fluidbook.canChangePage()){$this.fluidbook.setCurrentPage(parseInt($(this).attr("data-page")))}return false});$("#interface").append('<div id="slider"><div id="sliderthumb"><div class="doubleThumb"><div class="thumb left"><a href="#"><div class="img"></div></a><span class="number"></span><a href="#" class="bookmark left"></a></div><div class="thumb right"><a href="#"><div class="img"></div></a><span class="number"></span><a href="#" class="bookmark right"></a></div></div></div><div id="sliderback"><div class="visible"></div></div><div id="slidercursor"><div class="visible"></div></div></div>');$(this.fluidbook).on("fluidbook.page.change.end",function(e,page){$this.updateCursorPosition()});$("#sliderback").on("click",function(e){if($this.fluidbook.pagetransitions.transitionning){return}$this.updatePageByCursorPosition($this.pageToSlider(e.pageX),true,true);$("#slider").removeClass("")});$("#slidercursor").on("mousedown",function(e){$this.dragCursor(e,false,true);return true});var hmf=new Hammer.Manager(document.getElementById("slidercursor"),{domEvents:false});hmf.add(new Hammer.Pan({threshold:0}));hmf.on("panmove",function(event){$this.dragCursor(event,false,true);event.preventDefault()});hmf.on("panend",function(event){$this.dragCursor(event,true,true);event.preventDefault()});$("#slider").on("mouseenter mousemove",function(e){if($this.fluidbook.input.isUsingMouse()){return $this.hover(e.pageX)}});$("#slider").on("mouseleave",function(){if($this.fluidbook.input.isUsingMouse()){$("#slider").removeClass("hover")}})},hover:function(pageX){$("#slider").addClass("hover");var page=this.getPageByX(this.pageToSlider(pageX));this.updateThumb(page)},dragCursor:function(e,end,move){if(move==undefined){move=true}if(!end){$("#slider").addClass("drag")}else{$("#slider").removeClass("drag")}if(move){if(e.center!=undefined){this.updatePageByCursorPosition(this.pageToSlider(e.center.x),end,true)}}},pageToSlider:function(pageX){return pageX-$("#slider").offset().left},updatePageByCursorPosition:function(pos,gotoPage,updateCursor){if(updateCursor==undefined){updateCursor=false}if(gotoPage==undefined){gotoPage=true}var page=this.getPageByX(pos);if(gotoPage&&this.fluidbook.canChangePage()){this.fluidbook.setCurrentPage(page)}if(updateCursor){this.updateCursorPosition(page)}return false},getPageByX:function(pos){var page;if(this.fluidbook.l10n.rtl){pos=Math.max(0,this.sliderWidth-pos)}if(this.fluidbook.resize.orientation=="portrait"){page=Math.floor(pos/(this.sliderWidth/this.snapsCount))+1;pageMin=1}else{page=Math.floor(pos/(this.sliderWidth/this.snapsCount))*2;pageMin=0}return Math.min(this.fluidbook.contentlock.getMaxPage(),Math.max(pageMin,page))},resize:function(ww,hh,single){if(single){this.sliderWidth=ww/2}else{this.sliderWidth=this.fluidbook.resize.getScreenFluidbookWidth()*.4}this.sliderWidth=Math.round(this.sliderWidth);var bottom=26;if(single){bottom=18}bottom*=this.fluidbook.resize.interfaceScale;$("#slider").css({width:this.sliderWidth,left:(ww-this.sliderWidth)/2,top:hh-bottom}).transform({scaleY:this.fluidbook.resize.interfaceScale});$("#sliderthumb").transform({scaleX:this.fluidbook.resize.interfaceScale});this.updateSnaps(single);$("#slidercursor").css("width",this.cursorWidth);this.updateCursorPosition()},updateSnaps:function(single){if(single){this.snapsCount=this.fluidbook.contentlock.getMaxPage()}else{this.snapsCount=Math.floor(this.fluidbook.contentlock.getMaxPage()/2)+1}this.cursorWidth=Math.max(30,this.sliderWidth/this.snapsCount);this.snapsWidth=(this.sliderWidth-this.cursorWidth)/(this.snapsCount-1)},updateCursorPosition:function(page){if(page==undefined){page=this.fluidbook.currentPage}$("#slidercursor").css("left",this.getCursorXByPage(page));if($("#sliderthumb").is(":visible")){if($("#slider").hasClass("hover")&&!$("#slider").hasClass("drag")){}else{this.updateThumb(page)}}},getCursorXByPage:function(page){var left;if(this.fluidbook.l10n.rtl){page=this.fluidbook.contentlock.getMaxPage()-page}if(this.fluidbook.resize.orientation=="portrait"){left=this.snapsWidth*(page-1)}else{var current=Math.floor(page/2);left=this.snapsWidth*current}return Math.max(0,Math.min(left,this.sliderWidth-this.cursorWidth))},updateThumb:function(page){var left=0;var right=0;var single=false;if(this.fluidbook.resize.orientation==="portrait"){single=true;left=page}else{if(page%2===1){page--}if(page>0){left=page}if(page<=this.fluidbook.contentlock.getMaxPage()){right=page+1}}if(single){$("#sliderthumb").addClass("single")}else{$("#sliderthumb").removeClass("single");if(left==0||right==0){$("#sliderthumb .doubleThumb").addClass("simple");if(left==0){$("#sliderthumb .doubleThumb").addClass("right")}else{$("#sliderthumb .doubleThumb").removeClass("right")}if(right==0){$("#sliderthumb .doubleThumb").addClass("left")}else{$("#sliderthumb .doubleThumb").removeClass("left")}}}if(this.fluidbook.l10n.ltr){this.setThumb($("#sliderthumb .doubleThumb").find(".thumb.left"),left,!single);this.setThumb($("#sliderthumb .doubleThumb").find(".thumb.right"),right,!single)}else{this.setThumb($("#sliderthumb .doubleThumb").find(".thumb.left"),right,!single);this.setThumb($("#sliderthumb .doubleThumb").find(".thumb.right"),left,!single)}this.fluidbook.bookmarks.updateBookmarks();$("#sliderthumb").css("left",this.getCursorXByPage(page)+this.cursorWidth/2-$("#sliderthumb").outerWidth()/2)},setThumb:function(thumb,page,shade){thumb.find(".bookmark").attr("data-page",page);if(page>0&&page<=this.fluidbook.contentlock.getMaxPage()){thumb.css("visibility","visible");thumb.find("a:not(.bookmark)").attr("href","#").attr("data-page",page).html(this.fluidbook.loader.getThumbImage(page,shade));thumb.find(".number").text(this.fluidbook.physicalToVirtual(page))}else{thumb.css("visibility","hidden")}}};function FluidbookPageTransition(fluidbook){this.fluidbook=fluidbook;this.transitionning=false;this.timeoutAfterTransition=0;this.init()}FluidbookPageTransition.prototype={init:function(){if(this.fluidbook.support.transitions3dacc&&this.fluidbook.datas.mobileTransitions==="flip3d"){this.flip3d=new Fluidbook3DFlip(this.fluidbook)}else{this.flip3d=false}},normalizeTransitionPageNr:function(pageNr){if(pageNr==undefined){pageNr=this.fluidbook.currentPage;if(pageNr==-1){pageNr=1}}return this.fluidbook.normalizePage(pageNr)},getTransitionDuration:function(pageNr){var type=this.getTransitionType(pageNr);var f=0;if(type==="immediate"){return 0}else if(type==="flip3d"){return this.flip3d.animationTime}else{return parseFloat(this.fluidbook.datas.mobileTransitionDuration)}},getTransitionType:function(pageNr){if(pageNr!==undefined){pageNr=this.normalizeTransitionPageNr(pageNr);if(pageNr===this.fluidbook.normalizePage(this.fluidbook.currentPage)||this.fluidbook.currentPage===-1){return"immediate"}}if(!this.fluidbook.support.transitions2d||this.fluidbook.datas.mobileTransitions==="none"){return"immediate"}if(this.fluidbook.displayOnePage){return"portrait"}if(!this.fluidbook.support.transitions3d&&this.fluidbook.datas.mobileTransitions==="flip"){return"slide"}if(this.fluidbook.datas.mobileTransitions==="slide"){return"slide"}if(!this.fluidbook.support.transitions3dacc){if(!this.fluidbook.support.transitions3d){return"slide"}else{return"flipcss"}}if(this.fluidbook.support.transitions3dacc&&this.fluidbook.datas.mobileTransitions==="flip3d"){return"flip3d"}return"flipcss"},pageTransition:function(pageNr,transitionType){var $this=this;if(this.fluidbook.pad.enabled){this.transitionAxis=this.fluidbook.pad.getTransitionAxis(this.fluidbook.currentPage,page)}else{this.transitionAxis="x"}$(this.fluidbook).trigger("fluidbook.beforePageTransition");this.fluidbook.tooltip.hideTooltip();pageNr=this.normalizeTransitionPageNr(pageNr);if(transitionType===undefined){transitionType=this.getTransitionType(pageNr)}if(this.fluidbook.firstTransition||transitionType==="immediate"){this.fluidbook.firstTransition=false;this.fluidbook.zoom.resetZoom();return this.pageTransition1D(pageNr)}if(transitionType==="portrait"){this.fluidbook.zoom.resetZoom();return this.pageTransition2DPortrait(pageNr)}if(transitionType==="slide"){this.fluidbook.zoom.resetZoom();return this.pageTransition2D(pageNr)}if(transitionType==="flip3d"){this.fluidbook.zoom.resetZoom(function(){return $this.pageTransition3DFlip(pageNr)});return true}else if(transitionType==="flipcss"){this.fluidbook.zoom.resetZoom();return this.pageTransition3D(pageNr)}},pauseNetworkDuringTransition:function(pageNr){this.fluidbook.networkControl.pause((this.getTransitionDuration(pageNr)+.5)*1e3,true)},pauseNetworkDuringPagesPreload:function(){this.fluidbook.networkControl.pause(3e4)},pageTransition3D:function(pageNr){var $this=this;if($("#pages").hasClass("_3dtransition")){return}this.transitionning=true;var $this=this;var turning=this.getTurningPages(pageNr);$("#pages").prepend('<div id="nextDoublePage" class="_3d doublePage '+turning.nextFromClass+'start"></div>');var doublePage=$("#nextDoublePage");var currentDoublePage=$("#currentDoublePage");if(!this.fluidbook.loader.arePreloadedPages(turning.end)){this.fluidbook.displayLoader()}this.pauseNetworkDuringPagesPreload();this.fluidbook.loader.preloadPagesBeforeTransition(turning.end,function(){$("#pages").addClass("_3dtransition");$this.fluidbook.loader.setContentsInDoublePage(currentDoublePage,turning.flat,true,function(){$this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.flip,true,function(){$this.beforeTransition(pageNr,3,turning);$this.pauseNetworkDuringTransition(pageNr);$(doublePage).addClass(turning.nextFromClass+"end").one($this.fluidbook.support.getTransitionEndEvent(),function(){if($this.transitionning===false){return}if($("#nextDoublePage").length===0){$("#pages").removeClass("_3dtransition");$this.transitionning=false}$this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.end,false,function(){$(doublePage).removeClass("_3d").removeClass(turning.nextFromClass+"start").removeClass(turning.nextFromClass+"end");$("#currentDoublePage").remove();$(doublePage).attr("id","currentDoublePage");$("#pages").removeClass("_3dtransition");$this.afterTransition(pageNr)})})})})})},pageTransition3DFlip:function(pageNr){var $this=this;var turning=this.getTurningPages(pageNr);this.transitionning=true;if(!this.fluidbook.loader.arePreloadedPages(turning.end)){this.fluidbook.displayLoader()}var currentDoublePage=$("#currentDoublePage");var cdir="fwd";if(turning.dir===-1){cdir="bwd"}$("#pages").prepend('<div id="nextDoublePage" class="_3dflip '+cdir+' doublePage"></div>');var doublePage=$("#nextDoublePage");this.pauseNetworkDuringPagesPreload();this.fluidbook.loader.preloadPagesBeforeTransition(turning.end,function(){$this.flip3d.clean();$this.flip3d.prepareTurn(turning,function(){$this.beforeTransition(pageNr,3,turning);$this.flip3d.initTurn(turning.dir);setTimeout(function(){$this.fluidbook.loader.setContentsInDoublePage(currentDoublePage,turning.flat,true,function(){$this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.end,true,function(){$this.fluidbook.networkControl.executeAfterProcessing(function(){$this.pauseNetworkDuringTransition(pageNr);$this.fluidbook.hideLoader();$this.flip3d.playTurn(turning.dir,function(){if($this.transitionning===false){return}$("#currentDoublePage").remove();$(doublePage).attr("id","currentDoublePage").removeClass("_3dflip").removeClass("fwd").removeClass("bwd");$this.afterTransition(pageNr)})},true)})})},10)})})},getTurningPages:function(newPage){var res={};res.dir=1;if(newPage<this.fluidbook.currentPage){res.dir=-1}if(this.fluidbook.l10n.dir==="ltr"){res.currentLeft=this.fluidbook.currentPage-this.fluidbook.currentPage%2;res.currentRight=res.currentLeft+1;if(res.dir===1){res.currentToClass="prev";res.nextFromClass="next";res.flat=[res.currentLeft,newPage+1];res.flip=[newPage,res.currentRight]}else{res.currentToClass="next";res.nextFromClass="prev";res.flat=[newPage,res.currentRight];res.flip=[res.currentLeft,newPage+1]}res["end"]=[newPage,newPage+1]}else{res.currentRight=this.fluidbook.currentPage-this.fluidbook.currentPage%2;res.currentLeft=res.currentRight+1;if(res.dir===1){res.currentToClass="next";res.nextFromClass="prev";res.flat=[newPage+1,res.currentRight];res.flip=[res.currentLeft,newPage]}else{res.currentToClass="prev";res.nextFromClass="next";res.flat=[res.currentLeft,newPage];res.flip=[newPage+1,res.currentRight]}if(this.fluidbook.displayOnePage){res.end=[newPage,newPage+1]}else{res.end=[newPage+1,newPage]}res.dir*=-1}var center=this.centerBookEnabled();res.center=0;if(center){if(newPage<=1){res.center=-1}else if(this.fluidbook.datas.pages%2===0&&newPage===this.fluidbook.datas.pages){res.center=1}if(this.fluidbook.l10n.dir==="rtl"){res.center*=-1}}res.loading=[res.currentLeft,res.currentRight];res=json_parse(JSON.stringify(res));return res},centerBookEnabled:function(){return!!this.fluidbook.datas.centerBook&&!this.fluidbook.displayOnePage&&$(".tabslink").length===0},centerBook:function(center,animationDuration){var animate=animationDuration!==undefined&&animationDuration>0;var move=$("#center-fluidbook,#center-shadow");var currentLeft=$("#center-fluidbook").data("left");var left=0;if(center===undefined){center=$("#center-fluidbook").data("center")}if(center!==0){left=this.fluidbook.resize.centerOffset*center}if(currentLeft===left){return}$("#center-fluidbook").data({left:left,center:center});if(animate){$(move).addClass("animate")}else{$(move).removeClass("animate")}var delay=this.fluidbook.support.android?this.fluidbook.datas.mobileTransitionDuration*1e3:10;setTimeout(function(){move.transform({translateX:left+"px"})},delay)},pageTransition2D:function(pageNr){this.transitionning=true;var $this=this;var turning=this.getTurningPages(pageNr);$("#pages").append('<div id="nextDoublePage" class="doublePage _2d axis_'+this.transitionAxis+" "+turning.nextFromClass+'"></div>');var doublePage=$("#nextDoublePage");if(!this.fluidbook.loader.arePreloadedPages(turning.end)){this.fluidbook.displayLoader()}this.pauseNetworkDuringPagesPreload();this.fluidbook.loader.preloadPagesBeforeTransition(turning.end,function(){$this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.end,true,function(){$this.pauseNetworkDuringTransition(pageNr);$this.beforeTransition(pageNr,2,turning);$("#currentDoublePage").addClass("_2d").addClass("axis_"+$this.transitionAxis).addClass(turning.currentToClass);$(doublePage).removeClass(turning.nextFromClass).one($this.fluidbook.support.getTransitionEndEvent(),function(event){if($this.transitionning==false){return}$("#currentDoublePage").remove();$("#nextDoublePage").attr("id","currentDoublePage");$this.afterTransition(pageNr)})})})},pageTransition2DPortrait:function(pageNr){this.transitionning=true;var $this=this;var turning=this.getTurningPages(pageNr);$("#pages").append('<div id="nextDoublePage" class="doublePage _2d axis_'+this.transitionAxis+" "+turning.nextFromClass+'"></div>');var doublePage=$("#nextDoublePage");if(this.fluidbook.displayOnePage){this.fluidbook.hidePage("right")}if(!this.fluidbook.loader.arePreloadedPages(turning.end)){this.fluidbook.displayLoader()}this.pauseNetworkDuringPagesPreload();this.fluidbook.loader.preloadPagesBeforeTransition(turning.end,function(){$this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.end,true,function(){$this.pauseNetworkDuringTransition(pageNr);$this.beforeTransition(pageNr,2,turning);$("#currentDoublePage").addClass("axis_"+$this.transitionAxis).addClass("_2d").addClass(turning.currentToClass);$(doublePage).removeClass(turning.nextFromClass).one($this.fluidbook.support.getTransitionEndEvent(),function(){if($this.transitionning===false){return}$("#currentDoublePage").remove();$("#nextDoublePage").attr("id","currentDoublePage");$this.afterTransition(pageNr)})})})},pageTransition1D:function(pageNr){var page=pageNr;var doublePage=$("#currentDoublePage");var $this=this;if(this.fluidbook.displayOnePage){this.fluidbook.hidePage("right")}var turning=this.getTurningPages(pageNr);this.beforeTransition(pageNr,1,turning);this.fluidbook.loader.setContentsInDoublePage(doublePage,turning.end,true,function(){$this.afterTransition(page)})},beforeTransition:function(page,transition,turning){if(transition==undefined){transition=1}$(this.fluidbook).trigger("fluidbook.page.change.start",[page,{transition:transition,page:page,turningPages:turning.flip}]);var $this=this;this.fluidbook.tooltip.hideTooltip();$(".axis_y").removeClass("axis_y");$(".axis_x").removeClass("axis_x");$("#links").hide();if(this.fluidbook.mobilefirst.enabled){this.fluidbook.mobilefirst.beforeTransition(page)}this.fluidbook.hideLoader();this.fluidbook.hideUnnecessaryButtons(page);var animationDuration=transition<=1?0:parseFloat(this.fluidbook.datas.mobileTransitionDuration);this.fluidbook.updateShadows(page,animationDuration);this.centerBook(turning.center,animationDuration);$("#pagesnumbers").addClass("hidden");this.timeoutAfterTransition=setTimeout(function(){if($this.transitionning){$this.afterTransition(page,true)}},1e3*(animationDuration+2));try{this.fluidbook.search.clearHighlights()}catch(err){}},afterTransition:function(page,timeout){if(timeout===undefined){timeout=false}clearTimeout(this.timeoutAfterTransition);var $this=this;this.fluidbook.currentPage=page;this.fluidbook.setPageNumbers();setTimeout(function(){$this.fluidbook.loader.preloadAround(page)},1e3);this.fluidbook.hideLoader();this.fluidbook.resetWaiters();this.fluidbook.updateShadows(page,0);$("#pages").removeClass("_3dtransition");if($("#nextDoublePage").length>0){$("#currentDoublePage").remove();$("#nextDoublePage").attr("id","currentDoublePage")}if($("#currentDoublePage").length>1){$("#currentDoublePage:gt(0)").remove()}$("#nextDoublePage").remove();if(this.fluidbook.pad.enabled){if(this.fluidbook.currentPage==this.fluidbook.datas.pages){$("#down").css("opacity",0)}else{$("#down").css("opacity",1);if(!this.fluidbook.bookmarks.hasNextPageInGroup(this.fluidbook.currentPage)){$("#down").addClass("right")}else{$("#down").removeClass("right")}}}else{$("#down").css("opacity",0)}if(Modernizr.audio){this.fluidbook.audiodescription.setupPages()}setTimeout(function(){$this.transitionning=false},10);this.fluidbook.links.initLinks();if(this.fluidbook.mobilefirst.enabled){this.fluidbook.mobilefirst.afterTransition(page)}$(this.fluidbook).trigger("fluidbook.page.change.end",[this.fluidbook.currentPage])},canChangePage:function(){return this.fluidbook.canNavigate&&!this.transitionning}};function FluidbookNav(fluidbook){this.fluidbook=fluidbook;this._dimensions=this.fluidbook.datas.iconsDimensions;this.menuIsOpen=false;this.chaptersMenuHTML="";this.searchHTML="";this.shareLinksHTML="";this.menu=$("#menu");this.horizontalNav=$("#horizontalNav");this._inited={};this.setNav("horizontalNav");this.setNav("menu")}FluidbookNav.prototype={initMenu:function(){var $this=this,dir=this.fluidbook.l10n.dir,inverted=this.fluidbook.datas.invertMenuPosition,side=dir==="ltr"&&inverted||dir==="rtl"&&!inverted?"right":"left";var extensions=["pagedim-black","position-front"];if(side==="right"){extensions.push("position-right")}this.menu.mmenu({onClick:{close:function(){if(fluidbook.datas.phonegap==="ios"){return!$(this).is("#menu_download,#menu_print")}return true},preventDefault:function(){return false}},extensions:extensions,offCanvas:{position:side,zposition:"front"},navbar:{title:""},rtl:{use:"detect"}},{offCanvas:{page:{noSelector:["#loader"]}}});this.menuAPI=this.menu.data("mmenu");this.menuAPI.bind("open:finish",function(){$("body").addClass("menu-open");$this.menuIsOpen=true;setInterval(function(){$this.fluidbook.resize.resizeMenu()},500)});this.menuAPI.bind("close:finish",function(){$("body").removeClass("menu-open");$this.menuIsOpen=false});$(document).on("click","#menuOpener",function(e){e.preventDefault();$this.menuAPI.open()});$(document).on("click","#menuSearchResults a",function(e){$this.menuAPI.close()});$(this.fluidbook).on("fluidbook.resize",function(){$this.fluidbook.resize.resizeMenu()});var swipeCloseDirection=this.menuAPI.getInstance().opts.offCanvas.position,menuSwipe=new Hammer(document.getElementById("menu"));menuSwipe.on("swipe"+swipeCloseDirection,function(e){if(!$this.menuIsOpen){return false}$this.menuAPI.close()});$("#menuList").append(this.searchHTML+this.shareLinksHTML);$("#menuList > ul, #chapterList").perfectScrollbar({suppressScrollX:true,minScrollbarLength:40})},closeMenu:function(){this.menuAPI.close()},addLink:function(navType,name,href,id,title,help,before,className,showIcon){var $nav=this.getNavFromType(navType),elementID=navType+"_"+id;if($nav.find("#"+elementID).length>0){return}var l=$(this.getLink(name,href,id,title,help,className,showIcon,navType)),li="<li>"+l[0].outerHTML+"</li>";if(before===undefined){$nav.find("ul").append(li)}else{$nav.find("ul #"+before).before(li)}return $("#"+elementID).get(0)},getLink:function(name,href,id,title,help,className,showIcon,navType){if(showIcon===undefined){showIcon=true}var res="";if(id!==undefined){var elementID=navType===undefined?id:navType+"_"+id;res+=' id="'+elementID+'"';className=className===undefined?"icon-"+id:className+" icon-"+id}if(className!==undefined){res+=' class="'+className+'"'}if(navType==="horizontalNav"){if(help!==undefined&&help!==""){res+=' data-tooltip="'+this.fluidbook.l10n.__(help)+'"'}}res+=">";if(showIcon){res+=getSpriteIcon(name);if(name==="nav-fullscreen"){res+=getSpriteIcon("nav-fullscreen-exit")}}if(navType==="menu"||id==="locales"){if(title!==undefined&&title!==""){res+=' <span class="menu-item-title">'+this.fluidbook.l10n.__(title)+"</span>"}}if(href===""){return"<span"+res+"</span>"}else{return'<a href="'+href+'"'+res+"</a>"}},getNavFromType:function(navType){switch(navType){case"horizontalNav":return this.horizontalNav;break;case"menu":return this.menu;break;default:console.error("navType "+navType+" not found!");return false}},setNav:function(navType){if(typeof navType==="undefined"){return false}var $nav=this.getNavFromType(navType);if(this._inited[navType]===true){return}this._inited[navType]=true;var $this=this,navOrder=this.fluidbook.datas.navOrder;var v2="";if(this.fluidbook.datas.iconSet<15){v2=' class="v2"'}if(navType==="menu"){if(this.fluidbook.datas.navOrderH.length>0){navOrder=this.fluidbook.datas.navOrderH}var menuOpener='<a href="#" id="menuOpener">'+getSpriteIcon("interface-menu")+'<span class="label">'+this.fluidbook.l10n.__("Menu")+"</span></a>";$("#main header").append(menuOpener);$nav.append('<ul id="menuList"'+v2+"></ul>");var searchElement=this.fluidbook.datas.search?this.getSearch():"";this.searchHTML='<div id="menuSearch">'+searchElement+"</div>"}else if(navType==="horizontalNav"){$nav.append('<ul id="iconList"'+v2+"></ul>")}try{var skipHome=window.localStorage.getItem("home")==="0";var forceHome=window.localStorage.getItem("home")==="1";if(forceHome){if(this.fluidbook.datas.navOrder.indexOf("home")===-1){this.fluidbook.datas.navOrder.unshift("home")}}}catch(err){}var all=["extra","index","chapters","search","friend","print","pdf","bookmark","archives","basket","fullscreen","sound","3d","help","lang","extra1","extra2","extra3","extra4","extra5"];if(navOrder.length===0){navOrder=all}var localeIconIndex;if((localeIconIndex=navOrder.indexOf("lang"))!==-1){navOrder.push(navOrder.splice(localeIconIndex,1)[0])}var hide=array_diff(all,navOrder);var thisall=navOrder.concat(hide);var $this=this;var extraNPerURL={};for(var i in thisall){var icon=thisall[i];var visible=hide.indexOf(icon)===-1;if(!visible&&navType==="menu"){continue}var link=null;var link2=null;if(icon==="home"&&!skipHome){var homeURL=this.fluidbook.datas.home;var homeRequireLoader=true;if(this.fluidbook.datas.home==="%apphome%"||forceHome&&DATAS.phonegap){homeURL=decodeURIComponent(window.localStorage.getItem("apphome"))}if($_GET["home"]!==undefined){if($_GET["home"].indexOf("%253A")<=6){$_GET["home"]=decodeURIComponent(decodeURIComponent($_GET["home"]))}if($_GET["home"].indexOf("%3A")<=6){$_GET["home"]=decodeURIComponent($_GET["home"])}homeURL=$_GET["home"]}else if(this.fluidbook.landingpage!==undefined&&this.fluidbook.landingpage.hasLandingPage){homeURL="#/landing";homeRequireLoader=false}try{if(homeURL!==""){link=this.addLink(navType,"nav-home",homeURL,"home","home","home")}}catch(err){}$(link).on("click",function(){if(homeRequireLoader){var $thislink=this;fluidbook.displayLoader();setTimeout(function(){window.location=$($thislink).attr("href")},500)}else{$this.menuAPI.close();window.location=$(this).attr("href")}return false})}else if(icon==="index"){link=this.addLink(navType,"nav-index","#/index","index","overview","overview")}else if(icon==="chapters"){if(!this.fluidbook.datas.displayChaptersIcon){continue}if(this.fluidbook.datas.externalChaptersHTML){link=this.addLink(navType,"nav-chapters","#/chapters","chapters","chapters","chapters")}else if(this.fluidbook.datas.chaptersPage!==""){link=this.addLink(navType,"nav-chapters","#/page/"+this.fluidbook.datas.chaptersPage,"chapters","chapters","chapters")}else if(this.fluidbook.datas.chapters.length>0){if(navType==="menu"&&this.fluidbook.datas.chaptersCascade&&!this.fluidbook.datas.displayChaptersPopup){link=this.addLink(navType,"nav-chapters","","chapters","chapters","chapters");this.chaptersMenuHTML=this.makeChapterLists(this.fluidbook.datas.chapters)}else{link=this.addLink(navType,"nav-chapters","#/chapters","chapters","chapters","chapters")}}}else if(icon==="friend"){if(this.fluidbook.share.isEnabled()){if(navType==="horizontalNav"){if(this.fluidbook.datas.share){link=this.addLink(navType,"nav-share","#/share","share","share","share")}}else if(navType==="menu"){this.shareLinksHTML='<div id="shareLinks"><div class="share-icons">'+this.fluidbook.share.getShareLinks(true,undefined,"publication")+"</div></div>"}}}else if(icon==="bookmark"&&this.fluidbook.datas.bookmark){link=this.addLink(navType,"nav-bookmarks","#/bookmark","bookmarks","bookmarks","bookmarks")}else if(icon==="pdf"&&this.fluidbook.datas.pdf){link=this.addLink(navType,"nav-download","#","download","download","download")}else if(icon==="print"&&this.fluidbook.datas.print){link=this.addLink(navType,"nav-print","#","print","print","print")}else if(icon==="basket"&&this.fluidbook.cart!==undefined&&this.fluidbook.cart.enabled){link=this.addLink(navType,"nav-basket","#/cart","cart","basket","basket");$(this.fluidbook).on("fluidbook.cart.updateIcon",{link:$(link).attr("id")},function(e,data){var n=data.number;var l=$("#"+e.data.link);if(n===0){$(l).find("span.number").remove()}else{if($(l).find("span.number").length===0){$(l).append('<span class="number"></span>')}$(l).find("span.number").text(n)}});try{this.fluidbook.cart.instance.updateIcon()}catch(e){}}else if(icon==="lang"&&this.fluidbook.l10n.multilangEnabled){link=this.addLink(navType,"nav-locales","#/locales","locales","!"+this.fluidbook.l10n.getCurrentLanguageName(),"!Select Language")}else if(icon==="archives"){if(this.fluidbook.datas.archivesLink!==""){link=this.addLink(navType,"nav-archives",this.fluidbook.datas.archivesLink,"archives","!"+this.fluidbook.datas.archivesLabel,"!"+this.fluidbook.datas.archivesLabel)}else if(this.fluidbook.datas.externalArchives!==""){link=this.addLink(navType,"nav-archives","#/archives","archives","!"+this.fluidbook.datas.archivesLabel,"!"+this.fluidbook.datas.archivesLabel)}}else if(icon==="help"){link=this.addLink(navType,"nav-help","#","help","help","help")}else if(icon==="zoom"&&!this.fluidbook.support.isMobile){link=this.addLink(navType,"nav-zoomin","#","zoomin","zoom in","zoom in");link=this.addLink(navType,"nav-zoomout","#","zoomout","zoom out","zoom out")}else if(icon==="fullscreen"&&this.fluidbook.support.fullscreen&&!DATAS.phonegap){link=this.addLink(navType,"nav-"+icon,"#",icon,"full screen","switch between fullscreen and normal")}else if(icon==="sound"&&this.fluidbook.sound.enabled){link=this.addLink(navType,"nav-sound-on","#","sound-on","switch off the sound","switch on / switch off the sound");link2=this.addLink(navType,"nav-sound-off","#","sound-off","switch on the sound","switch on / switch off the sound")}else if(icon==="search"){if(this.fluidbook.datas.search&&navType==="horizontalNav"){link=this.addLink(navType,"nav-search","#","searchIcon","search","search")}}else if(icon==="extra"){var id="extra",$nav=this.getNavFromType(navType),elementID=navType+"_"+id,navExtraImage,navLinkTarget="";if(typeof this.fluidbook.datas.navExtraLink==="string"&&this.fluidbook.datas.navExtraLink.lastIndexOf("http",0)===0){navLinkTarget=' target="_blank" rel="noopener noreferrer"'}if($nav.find("#"+elementID).length>0){continue}if(navType==="horizontalNav"){if(this.fluidbook.datas.navExtraImage!==""&&this.fluidbook.datas.navExtraLink!==""){navExtraImage=this.fluidbook.datas.navExtraImage;link='<a id="'+elementID+'" data-tooltip="'+this.fluidbook.datas.navExtraTooltip+'" href="'+this.fluidbook.datas.navExtraLink+'"'+navLinkTarget+'><img class="nav-icon" src="data/images/'+navExtraImage+'"></a>'}}else if(navType==="menu"&&(this.fluidbook.datas.navExtraImage!==""||this.fluidbook.datas.navExtraImageMobile!=="")&&this.fluidbook.datas.navExtraLink!==""){navExtraImage=this.fluidbook.datas.navExtraImageMobile||this.fluidbook.datas.navExtraImage;link='<a id="'+elementID+'" href="'+this.fluidbook.datas.navExtraLink+'"'+navLinkTarget+'><img class="nav-icon" src="data/images/'+navExtraImage+'"> <span class="menu-item-title">'+this.fluidbook.datas.navExtraTooltip+"</span></a>"}if(link!==null){$nav.find("ul").append("<li>"+link+"</li>")}}else if(icon.match(/extra\d/)){var n=icon.substr(5,1);var extraURL=this.fluidbook.datas["navExtraLink"+n];var extraIcon=this.fluidbook.datas["navExtraIcon"+n];var extraVisibility=this.fluidbook.datas["navExtraVisibility"+n];var extraType=this.fluidbook.datas["navExtraType"+n];if(extraURL===""||extraIcon===""){continue}if(extraVisibility==="horizontal"&&navType==="menu"||extraVisibility==="burger"&&navType==="horizontalNav"){continue}var linkIcon;if(extraIcon.indexOf(".")===-1){linkIcon=getSpriteIcon(extraIcon)}else{if(extraIcon.indexOf(".svg")>=0&&extraType==="icon"){if(getSpriteIcon("extra-extra"+n)===""){var url="data/images/"+extraIcon;extraNPerURL[url]=n;$.ajax({url:url,type:"GET",dataType:"xml",success:function(data){var n1=extraNPerURL[this.url];var svg=$(data).find("svg");$(svg).wrapInner("<g />");var viewbox=$(svg).attr("viewBox");var maing=$(svg).children("g").eq(0);if($("#extra-extra"+n1).length===0){$("#svg-container").append('<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><symbol id="extra-extra'+n1+'" viewBox="'+viewbox+'"><g>'+$("<g/>").append($(maing).clone()).html()+"</g></symbol></svg>")}$("#spare_extra"+n1).replaceWith(getSpriteIcon("extra-extra"+n1))}});linkIcon='<div id="spare_extra'+n+'"></div>'}else{linkIcon=getSpriteIcon("extra-extra"+n)}}else{linkIcon='<img class="nav-icon" src="data/images/'+extraIcon+'">'}}if(extraURL.indexOf(":")===-1&&extraURL.indexOf("/")===-1){extraURL="link:"+extraURL}if(extraURL.indexOf("link:")===0){var linkId=extraURL.split(":",2)[1];var foundLink;$.each(this.fluidbook.datas.links,function(page,links){var l=$("<root>"+links+"</root>").find('[data-id="'+linkId+'"]');if(l.length===1){foundLink=l;return false}});if(foundLink===undefined){continue}link=$(foundLink).find("a").append(linkIcon);if(navType==="menu"&&extraType==="icon"){var tooltip=$(link).data("tooltip");$(link).append('<span class="menu-item-title">'+$(link).data("tooltip")+"</span>")}link=$(link).get(0).outerHTML}else{link='<a href="'+extraURL+'" target="_blank" rel="noopener">'+linkIcon+"</a>"}var nav=this.getNavFromType(navType);nav.find("ul").append("<li>"+link+"</li>")}if(!visible){$(link).addClass("hidden");if(link2){$(link2).addClass("hidden")}}}if(navType==="menu"){var credits=$("footer#credits").clone().attr("id","mobile-credits");var a=credits.find("a");var t=a.text().replace("TM","™");credits.find("a").text(t);$("#menuList").append(credits);if(this.chaptersMenuHTML!==""){$("#menu_chapters").parent().append(this.chaptersMenuHTML)}$("#chapterList li a").each(function(){if($(this).siblings("ul").length>0){$(this).contents().wrap("<span></span>").parent().unwrap("a")}});if(!this.fluidbook.datas.chaptersCascade){$("#chapterList").wrap('<div id="chaptersPanel" class="Panel"></div>');$("#chaptersPanel ul").addClass("mm-nopanel");$("#chapters").wrap('<a href="#chaptersPanel"></a>')}this.menu.append(this.getMenuCloseButton());this.initMenu();this.initEventHandlers();$(this.fluidbook).trigger("fluidbook.navigation.ready");$(document).trigger("fluidbook.navigation.ready")}if(this.fluidbook.datas.afterSearch!==""&&this.fluidbook.datas.afterSearchDisplayForHTML&&this.fluidbook.datas.themeEnableAfterSearch&&navType==="horizontalNav"){var afterSearchContent='<div id="afterSearch"><div class="c">'+this.fluidbook.loader.getImage("data/images/"+this.fluidbook.datas.afterSearch)+'</div><div class="links">'+this.fluidbook.datas.links.aftersearch+"</div></li>";$nav.after(afterSearchContent)}},initEventHandlers:function(){var $this=this;$(document).on("click",".icon-home",function(){var $this=this;fluidbook.displayLoader();setTimeout(function(){window.location=$($this).attr("href")},500);return false});$(document).on("click","#horizontalNav_searchIcon",function(event){event.preventDefault();$this.openSearch()});$(document).on("click",".icon-share",function(){if($this.fluidbook.datas.phonegap!=="android"){return true}$this.fluidbook.share.intentShare();return false});$(document).on("click",".icon-download",function(event){event.preventDefault();if($this.fluidbook.datas.pdfComplex&&$this.fluidbook.datas.phonegap===false){$this.fluidbook.menu.openView("download")}else{$this.fluidbook.downloadPDF($(this))}return false});$(document).on("click",".icon-print",function(){if(!$this.fluidbook.printing.advancedPrint()){$this.fluidbook.print($(this));return false}else{$this.fluidbook.menu.openView("print")}return false});$(document).on("click",".icon-bookmarks",function(){if($(this).data("extra")!==null){$this.fluidbook.menu.openView("bookmark",$(this).data("extra"),null,function(){});return false}});$(document).on("click",".icon-zoomin",function(e){$this.fluidbook.desktop.clickZoom(e,"in");return false});$(document).on("click",".icon-zoomout",function(e){$this.fluidbook.desktop.clickZoom(e,"out");return false});if(this.fluidbook.support.fullscreen){this.initFullScreen()}},initFullScreen:function(){var $this=this;$(document).on("click",".icon-fullscreen",function(){$this.menuAPI.close();screenfull.toggle();return false});screenfull.on("change",function(){resize();setTimeout(function(){if(screenfull.isFullscreen){$(".icon-fullscreen").addClass("active")}else{$(".icon-fullscreen").removeClass("active")}resize()},250);setTimeout(function(){resize()},1e3)})},openSearch:function(q,cb){if(!fluidbook.search.isSearchActive()){fluidbook.search.initSearchHints();this.menuAPI.closeAllPanels()}this.menuAPI.open();if(q!==undefined){$("#q").val(q);this.fluidbook.search.submitForm()}$("#q").focus();if(cb!==undefined){cb()}},getMenuCloseButton:function(){var $this=this,buttonID="menuClose";$(document).on("click","#"+buttonID,function(e){e.preventDefault();if($this.fluidbook.search.isSearchActive()){$this.fluidbook.search.closeSearch()}else{var sHints=$this.fluidbook.search.menuSearchHints,sResults=$this.fluidbook.search.menuSearchResults;if(sHints&&sHints.html().length===0&&sResults&&sResults.html().length===0){$this.fluidbook.search.closeSearch()}$this.menuAPI.close()}});return'<a href="#" id="'+buttonID+'">'+getSpriteIcon("interface-close")+"</a>"},getSearch:function(){var search=$("#search");var $this=this;var res='<form action="#" id="searchForm" method="post">';res+='<input id="q" name="q" type="search" value="" placeholder="'+this.fluidbook.l10n.__("search")+'" autocorrect="off" autocomplete="off" autocapitalize="off" />';res+=this.getLink("nav-search","#","submitSearch");res+="</form>";res+='<div id="menuSearchHints" class="mm-nopanel"></div>';res+='<div id="menuSearchResults" class="mm-nopanel"></div>';search.append(res);$(document).on("click","#submitSearch",function(e){$("#searchForm").submit();e.preventDefault();return false});$(document).on("submit","#searchForm",function(){$this.fluidbook.search.submitForm();return false});$(document).on("keyup","#q",function(key){switch(key.which){case 13:case 37:case 38:case 39:case 40:return;default:searchHints()}});$(document).on("click",".hint",function(){var e=$("#q").val().split(" ");e.pop();e.push($(this).attr("term"));$("#q").val(e.join(" "));$("#searchForm").submit();return false});var searchHTML=search.html();search.remove();return searchHTML},setInterface:function(){},makeChapterLists:function(chapters){var currentLevel=0,loopIndex=0,html='<ul id="chapterList">';chapters.forEach(function(chapter){loopIndex++;if(chapter.level>currentLevel){html+="<ul>"}else if(chapter.level<currentLevel){var levelDifference=currentLevel-chapter.level;for(var i=0;i<levelDifference;i++){html+="</li></ul></li>"}}else{if(loopIndex>1){html+="</li>"}}currentLevel=chapter.level;var page=this.fluidbook.virtualToPhysical(chapter.page);html+='<li><a href="#/page/'+page+'" class="level-'+chapter.level+'">'+chapter.label+"</a>"});html+="</li></ul>";return html},burgerActive:function(){return $("#menuOpener").is(":visible")}};function FluidbookInterface(fluidbook){this.fluidbook=fluidbook;this.interfaceVisible=false;this.visibleTimeout;this.visibleTime=5e3;this.interfaceVisible=false;this.maskToggleEventsTimeout=Date.now();this.init()}FluidbookInterface.prototype={init:function(){var $this=this;if(this.arrowsEnabled()){var res="";if($("html").hasClass("ltr")){res+=this.fluidbook.nav.getLink("interface-previous","#","previous","","","",true);res+=this.fluidbook.nav.getLink("interface-next","#","next","","","",true)}else{res+=this.fluidbook.nav.getLink("interface-previous","#","next","","","",true);res+=this.fluidbook.nav.getLink("interface-next","#","previous","","","",true)}$("#interface").append(res);$(document).on("click","#next",goNextPage);$(document).on("click","#previous",goPreviousPage);this.initArrowsVisibilityManagement()}$(this.fluidbook).on("fluidbook.resize, fluidbook.resize.orientation",function(){$this.checkHidden()})},arrowsEnabled:function(){switch(this.fluidbook.datas.arrowsEnabled){case"0":return false;case"1":return true;case"2":return!this.fluidbook.input.hasTouch;default:return true}},checkHidden:function(){if(!this.autoHideArrows()){this.displayInterface()}else{this.resetTimeout()}},areArrowsOverlapingPublication:function(){var res=$("#fluidbook").get(0).getBoundingClientRect().left<60;return res},autoHideArrows:function(){var res=this.arrowsEnabled()&&(this.fluidbook.resize===undefined||this.fluidbook.resize.reduceHorizontalMargins())&&this.areArrowsOverlapingPublication()&&$("#helpView:visible").length===0;return res},initArrowsVisibilityManagement:function(){var $this=this;this.getInterfaceSelector().addClass("interfacecomponent");if(this.autoHideArrows()){if(this.fluidbook.touch){this.fluidbook.touch.hm.on("singletap",function(event){var target=$(event.target);if(target.is("a")||target.closest("a").length>0){return true}$this.toggleInterface(1e3);return true})}else{$(document).on("click",":not(a)",function(){var selector="#fluidbook";if(!$(this).is(selector)&&$(this).closest(selector).length===0){return true}$this.toggleInterface(1e3);return true})}}$(this.fluidbook).on("fluidbook.ready",function(){setTimeout(function(){$this.checkHidden()},1e3)});this.checkHidden()},toggleInterface:function(mask){if(mask===undefined){mask=0}var now=Date.now();if(now<this.maskToggleEventsTimeout){return}if(mask>0){this.maskToggleEventsTimeout=Math.max(this.maskToggleEventsTimeout,Date.now()+mask)}if(this.interfaceVisible&&this.autoHideArrows()){return this.hideInterface()}else{return this.displayInterface()}},displayInterface:function(){this.interfaceVisible=true;this.getInterfaceSelector().removeClass("interfacehidden");this.resetTimeout()},resetTimeout:function(){this.clearTimeout();if(!this.autoHideArrows()){return false}var $this=this;this.visibleTimeout=setTimeout(function(){$this.hideInterface()},this.visibleTime)},hideInterface:function(){if(!this.autoHideArrows()){return}this.interfaceVisible=false;if($("#helpView").is(":visible")||document.activeElement.tagName.toLowerCase()==="input"){this.resetTimeout();return}console.log("hide interface");this.getInterfaceSelector().addClass("interfacehidden");this.clearTimeout()},getInterfaceSelector:function(){var selector="";if(this.arrowsEnabled()){selector="#next,#previous"}if(this.fluidbook.pad.enabled){selector="header,#interface"}return $(selector)},clearTimeout:function(){clearTimeout(this.visibleTimeout)}};function FluidbookInput(fluidbook){this.fluidbook=fluidbook;this.usingMouse=false;this.hasMouse=false;this.forceMouse=false;this.usingTouch=false;this.hasTouch=false;this.forceTouch=false;this.init()}FluidbookInput.prototype={init:function(){var $this=this;if(Modernizr.ftouch){this.hasTouch=true}else{this.usingMouse=this.hasMouse=this.forceMouse=true;this.usingTouch=this.hasTouch=this.forceTouch=false;this.setMouseClasses();return}if(Modernizr.ios||Modernizr.android){this.usingTouch=this.hasTouch=this.forceTouch=true;this.usingMouse=this.hasMouse=this.forceMouse=false;this.setTouchClasses();return}this.forceTouch=this.forceMouse=false;$(document).on("pointermove",function(e){if(e.pointerType==="mouse"){$this.useMouse()}else{$this.useTouch()}return true})},isUsingTouch:function(){return this.usingTouch},isUsingMouse:function(){return this.usingMouse},useTouch:function(){if(!this.usingTouch){this.hasTouch=this.usingTouch=true;this.usingMouse=false;this.setTouchClasses()}},useMouse:function(){if(!this.usingMouse){this.hasMouse=this.usingMouse=true;this.usingTouch=false;this.setMouseClasses()}},setTouchClasses:function(){$("html").removeClass("using-mouse").removeClass("no-using-touch").addClass("no-using-mouse").addClass("using-touch")},setMouseClasses:function(){$("html").addClass("using-mouse").addClass("no-using-touch").removeClass("no-using-mouse").removeClass("using-touch")}};function FluidbookTouch(fluidbook){this.fluidbook=fluidbook;this.startX=0;this.startY=0;this.offsetX=0;this.offsetY=0;this.panX=0;this.panY=0;this.zoomAtPinchStart=0;this.triggerOffset=this.fluidbook.mobilefirst.enabled?.1:.05;this.init()}FluidbookTouch.prototype={init:function(){var $this=this;$(this.fluidbook).on("fluidbook.page.change.end",function(){$this.resetSlide()});$this.initInteract()},initInteract:function(){var tapEnabled=true;var pinchEnabled=true;var doubletapEnabled=true;var panEnabled=true;var touchAction="compute";var elementId="main";var panElementId="fluidbook";if(this.fluidbook.mobilefirst.enabled){touchAction="auto";elementId="scroll";panElementId="scroll"}var $this=this;if(!tapEnabled&&!doubletapEnabled&&!panEnabled&&!pinchEnabled){return}var options={domEvents:this.fluidbook.mobilefirst.enabled,touchAction:touchAction};Hammer.defaults.domEvents=options.domEvents;Hammer.defaults.touchAction=options.touchAction;var hm=new Hammer.Manager(document.getElementById(elementId),options);this.hm=hm;if(doubletapEnabled){hm.add(new Hammer.Tap({event:"doubletap",taps:2,interval:500}))}if(tapEnabled){hm.add(new Hammer.Tap({event:"singletap",taps:1,interval:500}))}if(pinchEnabled){hm.add(new Hammer.Pinch({threshold:0}));hm.get("pinch").set({enable:true})}if(doubletapEnabled){hm.on("doubletap",function(event){if($this.fluidbook.zoom.enabled){if($this.fluidbook.zoom.zoom>1){$this.fluidbook.zoom.setTransition(true);$this.fluidbook.zoom.resetZoom()}else{$this.setZoomOriginFromEvent(event.srcEvent);$this.fluidbook.zoom.setTransition(true);$this.fluidbook.zoom.setZoom($this.fluidbook.datas.zoom/100,1)}}event.preventDefault()})}if(pinchEnabled){hm.on("pinchstart",function(event){if($this.fluidbook.zoom.enabled){if($this.fluidbook.zoom.zoom===1){$this.setZoomOriginFromEvent({pageX:event.center.x,pageY:event.center.y})}$this.zoomAtPinchStart=$this.fluidbook.zoom.zoom;$this.pinchZoom(event.scale,false)}event.preventDefault()});hm.on("pinch",function(event){if($this.fluidbook.zoom.enabled){if($this.zoomAtPinchStart!==0){$this.pinchZoom(event.scale,false);event.preventDefault()}}});hm.on("pinchend pinchcancel",function(event){if($this.fluidbook.zoom.enabled){$this.pinchZoom(event.scale,true);$this.zoomAtPinchStart=$this.fluidbook.zoom.zoom}event.preventDefault()})}if(panEnabled){var hmf=new Hammer.Manager(document.getElementById(panElementId),options);hmf.add(new Hammer.Pan({threshold:0}));hmf.on("pan",function(event){});hmf.on("panstart",function(event){if($this.drag(event,"start")){event.preventDefault()}});hmf.on("panmove",function(event){if($this.drag(event,"move")){event.preventDefault()}});hmf.on("panend",function(event){var prevent=$this.drag(event,"end");$this.startX=$this.startY=-1;$this.panX=$this.panY=0;if(prevent){event.preventDefault()}})}},pinchZoom:function(s,end){if(s===1){return}this.fluidbook.zoom.setTransition(false);var amplitudeRegulation=.2*this.zoomAtPinchStart;var dir;if(s>1){s=1+(s-1)*amplitudeRegulation;dir=1}else if(s<1){s/=1;s=1+(s-1)*amplitudeRegulation;s/=1;dir=-1}this.fluidbook.zoom.setZoom(this.zoomAtPinchStart*s,dir,end)},drag:function(e,type){if($(".mview:visible").length>0){return false}if(this.fluidbook.zoom.zoom===1){if(this.startX===-1||this.startY===-1||type==="start"){this.startX=e.center.x;this.startY=e.center.y}this.offsetX=(e.center.x-this.startX)/this.fluidbook.resize.ww;this.offsetY=(e.center.y-this.startY)/this.fluidbook.resize.hh;return this.testSlideOffset(e)}else{this.resetSlide();if(type==="end"){e.deltaX+=e.velocityX*200;e.deltaY+=e.velocityY*200;this.dragZoom(e,true)}else{this.dragZoom(e,true)}return true}},dragZoom:function(e,inertia){e.dx=e.deltaX-this.panX;e.dy=e.deltaY-this.panY;this.panX=e.deltaX;this.panY=e.deltaY;if(e.dx===0&&e.dy===0){return}var currentX=this.fluidbook.zoom.originpx[0];var currentY=this.fluidbook.zoom.originpx[1];var x=currentX-e.dx;var y=currentY-e.dy;this.fluidbook.zoom.setOrigin(x,y,true,inertia);return false},testSlideOffset:function(e){if(!this.fluidbook.pad.enabled){try{if(e.additionalEvent==="panup"||e.additionalEvent==="pandown"){return false}}catch(e){}try{var angle=Math.abs(e.angle);if(angle>=90&&angle<150){return false}if(angle>30&&angle<90){return false}}catch(e){}if(this.fluidbook.mobilefirst.enabled&&this.fluidbook.mobilefirst.isScrolling){return false}if(Math.abs(this.offsetX)<this.triggerOffset){return false}var ltr=this.fluidbook.l10n.dir==="ltr";if(this.offsetX<0&&ltr||this.offsetX>0&&!ltr){this.fluidbook.goNextPage()}else{this.fluidbook.goPreviousPage()}return true}else{var offset=this.offsetX;var way="x";if(Math.abs(this.offsetX)<Math.abs(this.offsetY)){offset=this.offsetY;way="y"}if(Math.abs(offset)<this.triggerOffset){return false}if(offset<-this.triggerOffset){if(way==="x"){this.fluidbook.goNextChapter();this.resetSlide()}else{this.fluidbook.goNextChapterPage();this.resetSlide()}}else{if(way==="x"){this.fluidbook.goPreviousChapter();this.resetSlide()}else{this.fluidbook.goPreviousChapterPage();this.resetSlide()}}return true}},resetSlide:function(){this.startX=-1;this.startY=-1;this.offsetX=0;this.offsetY=0},setZoomOriginFromEvent:function(event){var cx=event.pageX;var cy=event.pageY;var z=this.fluidbook.zoom.zoom;var zrect=$("#z").get(0).getBoundingClientRect();var ox=(cx-zrect.left)/z;var oy=(cy-zrect.top)/z;this.fluidbook.zoom.setOrigin(ox,oy,true)}};function FluidbookLoader(fluidbook){this.fluidbook=fluidbook;this.texts=[];this.backgrounds=[];this.textures=[];this.links=[];this.toPreload=[];this.preloaded=[];this.imagesErrors=[];this.shadeLeft=null;this.shadeRight=null;this.transitionPages=[];this.thumbnails=[];this.loadedThumbnails=[];this.cleanTimeout=null;this.init()}FluidbookLoader.prototype={init:function(){this.shadeLeft=this.loadImage("images/shadows/pages/left.png");this.shadeRight=this.loadImage("images/shadows/pages/right.png")},getPageDimensions:function(page,width){var dim=this.fluidbook.datas.pagesDimensions[page];if(dim===undefined){console.log(page)}var height;if(undefined===width){width=dim[0];height=dim[1]}else{height=dim[1]*(width/dim[0])}return{width:width,height:height}},getVersionToLoad:function(page){if(this.fluidbook.vectorTexts){if(this.fluidbook.datas.vectorPages.indexOf(page)>=0){return"vector"}if(this.fluidbook.datas.rasterizePages.indexOf(page)===-1){return"textasvector"}}return"raster"},preloadStart:function(callback){this.toPreload=[1,2,3];this.preloaded=this.toPreload.slice(0);this.preloadPages(callback)},preloadPagesBeforeTransition:function(pages,callback){var preloadedOk=false;this.transitionPages=pages.slice(0);var $this=this;var timeout;var _cb=function(){clearTimeout(timeout);if(preloadedOk===true){return}preloadedOk=true;callback()};timeout=setTimeout(function(){if(preloadedOk===true){return}this.fluidbook.displayLoader();$this._preloadPagesBeforeTransition(pages,_cb)},7e3);this._preloadPagesBeforeTransition(pages,_cb)},_preloadPagesBeforeTransition:function(pages,callback){if(this.arePreloadedPages(pages)){this._cleanPreloaded();callback();return}var $this=this;var $pages=pages.slice(0);if($pages.length==0){this._cleanPreloaded();callback();return}var $callback=callback;var $page=$pages.shift();if($page==undefined||$page=="undefined"||$page>this.fluidbook.contentlock.getMaxPage()||$page<1){this._cleanPreloaded();callback();return}this._preloadPage($page,function(){$this._preloadPagesBeforeTransition($pages,$callback)})},arePreloadedPages:function(pages){for(var i in pages){var page=pages[i];if(this.backgrounds[page]===undefined){return false}}this.preloaded.push(page);return true},preloadPages:function(cb){if(cb===undefined){cb=function(){}}if(this.toPreload.length==0){cb();return}var $this=this;this.fluidbook.networkControl.executeWhenNetwork(function(_cb){var preloadingPage=$this.toPreload.shift();var callback=function(){if($this.toPreload.length===0){cb()}else{$this.preloadPages(cb)}if(_cb!==undefined){_cb()}};$this._preloadPage(preloadingPage,callback)},true)},_preloadPage:function(page,callback){if(page==undefined||page=="undefined"||page>this.fluidbook.contentlock.getMaxPage()||page<1){callback();return}var $this=this;var $_callback;if(this.fluidbook.pagetransitions.flip3d!==false){$_callback=function(){$this.loadTexture(page,callback)}}else{$_callback=callback}var $__callback=function(){if($this.getVersionToLoad(page)==="textasvector"||$this.getVersionToLoad(page)==="vector"){$this.loadTexts(page,$_callback)}else{$_callback()}};if(this.backgrounds[page]!==undefined&&this.backgrounds[page]!==null){$__callback();return}var backgroundURL=this.getBackgroundURL(page);if(backgroundURL===false){this.backgrounds[page]=null;$__callback()}else{this.backgrounds[page]=this.loadImage(backgroundURL,null,null,null,page,function(){$__callback()})}},preloadAround:function(page){if(this.numPreload==0){return}var numPreloadAfter=10;var numPreloadBefore=4;if(this.fluidbook.resize.orientation==="portrait"||this.fluidbook.singleMode){numPreloadAfter/=2;numPreloadBefore/=2}var fmx=this.fluidbook.contentlock.getMaxPage();var max=Math.min(page+numPreloadAfter,fmx);var min=Math.max(1,page-numPreloadBefore);this.toPreload=[1,fmx];for(var i=min;i<=max;i++){if(this.toPreload.indexOf(i)===-1){this.toPreload.push(i)}}this.preloaded=this.toPreload.slice(0);this.preloadPages()},_cleanPreloaded:function(){for(var i=1;i<=this.fluidbook.contentlock.getMaxPage();i++){if(this.preloaded.indexOf(i)===-1&&this.transitionPages.indexOf(i)===-1){this.deletePage(i)}else{this.setOnStage(this.backgrounds[i]);this.setOnStage(this.texts[i])}}},deletePage:function(page){if(this.backgrounds[page]!==undefined){delete this.backgrounds[page]}if(this.texts[page]!==undefined){delete this.texts[page]}if(this.links[page]!==undefined){delete this.links[page]}if(this.textures[page]!==undefined&&this.textures[page]!==null){delete this.textures[page]}$("#loadedcontents [data-page='"+page+"']").remove()},setContentsInDoublePage:function(doublePage,pages,immediate,callback){var $this=this;var leftPage=pages[0];var rightPage=pages[1];if(immediate){this.loadLeftPage(leftPage,$(doublePage),function(){});this.loadRightPage(rightPage,$(doublePage),function(){});callback()}else{this.loadLeftPage(leftPage,$(doublePage),function(){$this.loadRightPage(rightPage,$(doublePage),callback)})}},loadPage:function(pageNr,doublePage,position,callback){if(pageNr<=0||pageNr>this.fluidbook.datas.pages){callback();return}$(doublePage).find("."+position).each(function(){if($(this).attr("id")!="page_"+pageNr||pageNr==0){$(this).remove()}});var page;var shade;if($("#page_"+pageNr).length>0){page=$("#page_"+pageNr);if($(doublePage).find("#page_"+pageNr).length==0){$(doublePage).append(page)}if(!$(page).hasClass(position)){if(position=="left"){$(page).removeClass("right")}else{$(page).removeClass("left")}$(page).addClass(position)}if(!$(page).is(":visible")){$(page).show()}$(page).children(".shade").html(this.loadPageShade(position));$(page).children(".clinks").html(this.fluidbook.datas.clinks[pageNr]);callback();return}this.fluidbook.initPage(pageNr,doublePage,position);var version=this.getVersionToLoad(parseInt(pageNr));page=$("#page_"+pageNr);$(doublePage).append(page);$(page).show();$(page).addClass(position);var back=$(page).children(".background")[0];this.loadDatas(pageNr,callback);$(page).addClass(position);shade="shade"+position;if(this.fluidbook.datas.pageReflection){shade+="-reflet"}shade+=".png";$(page).children(".clinks").html(this.fluidbook.datas.clinks[pageNr]);$(page).children(".shade").html(this.loadPageShade(position))},loadPageShade:function(position){return this.loadImage("images/shadows/pages/"+position+".png",this.fluidbook.datas.width/4,this.fluidbook.datas.height)},loadLeftPage:function(page,doublePage,callback){if(page>0&&page<=this.fluidbook.contentlock.getMaxPage()){this.loadPage(page,doublePage,"left",callback)}else{$(doublePage).find(".left").remove();callback()}},loadRightPage:function(page,doublePage,callback){if(!this.fluidbook.displayOnePage&&page<=this.fluidbook.contentlock.getMaxPage()&&page>0){this.loadPage(page,doublePage,"right",callback)}else{$(doublePage).find(".right").remove();callback()}},getBackgroundURL:function(page){var version=this.getVersionToLoad(page);if(version==="vector"){return false}var prefix=version==="textasvector"?"p":"t";return"data/background/"+this.fluidbook.support.resolution+"/"+prefix+page+".jpg"},getTextsURL:function(page){return"data/contents/p"+page+".svg"},setBackground:function(page,callback){var $this=this;var back=$("#page_"+page+" .background");this._loadBackground(page,function(){$(back).addClass("r"+$this.fluidbook.support.resolution);$(back).append($this.backgrounds[page])})},setOnStage:function(element){if(element===undefined||element==null){return}if(!isOnStage(element)){$("#loadedcontents").append($(element))}},_loadBackground:function(page,callback){if(page<=0||page>this.fluidbook.datas.pages){callback();return}if(this.backgrounds[page]!==undefined){callback()}else{var $this=this;if(window.gal!==undefined&&window.gal!==null&&!OFFLINEAPP){window.gal.downloadAndCall("content_"+page,function(){$this.__loadBackground(page,callback)},250)}else{this.__loadBackground(page,callback)}}},__loadBackground:function(page,callback){if(page<=0||page>this.fluidbook.datas.pages){callback();return}var url=this.getBackgroundURL(page);if(url==false){callback();return false}this.backgrounds[page]=this.loadImage(url,null,null,null,page,callback)},loadTexture:function(page,callback){if(page<=0||page>this.fluidbook.datas.pages){callback();return}if(this.textures[page]!==undefined&&this.textures[page]!==null){callback()}else{try{this._loadTexture(page,callback)}catch(e){callback()}}},_loadTexture:function(page,callback){if(page<=0||page>this.fluidbook.datas.pages){callback();return}var $this=this;var d=1024;var c=document.getElementById("pscanvas");c.width=d;c.height=d;var ctx=c.getContext("2d");ctx.clearRect(0,0,d,d);var wr=d/$this.fluidbook.datas.width;var hr=d/$this.fluidbook.datas.height;if(this.backgrounds[page]!==undefined&&this.backgrounds[page]!==null){ctx.drawImage(this.backgrounds[page].get(0),0,0,d*1.002,d)}else{ctx.fillStyle="#FFFFFF";ctx.fillRect(0,0,d,d)}if(this.getVersionToLoad(page)==="textasvector"||this.getVersionToLoad(page)==="vector"){try{var img=this.texts[page].get(0);if(img.width===0){$this.deletePage(page);$this._preloadPage(page,callback);return}ctx.drawImage(img,0,0,d,d)}catch(e){}}var clinks=this.fluidbook.datas.clinks[page];if(clinks!==""){$("body").append('<div id="texture_clinks">'+clinks+"</div>");$("#texture_clinks .contentLink").each(function(){var left=parseFloat($(this).css("left"))*wr;var top=parseFloat($(this).css("top"))*hr;var width=parseFloat($(this).css("width"))*wr;var height=parseFloat($(this).css("height"))*hr;if($(this).is("[data-color]")){ctx.fillStyle=$(this).attr("data-color");ctx.fillRect(left,top,width,height)}else{}});$("#texture_clinks").remove()}if(this.fluidbook.datas.shadeAlpha>0){var sw=d*.25;var s,x;if(page%2===0){s=this.shadeLeft;x=1024-sw}else{s=this.shadeRight;x=0}ctx.globalAlpha=2*this.fluidbook.datas.shadeAlpha/100;ctx.drawImage(s.get(0),x,0,sw,d);ctx.globalAlpha=1}var i=new Image;i.onload=function(){$this.textures[page]=i;callback()};i.src=c.toDataURL("image/png")},getTexture:function(page,callback){var $this=this;if(this.textures[page]===undefined){this._preloadPage(page,function(){callback($this.textures[page])})}else{callback(this.textures[page])}},loadTexts:function(pageNr,callback){if(pageNr<=0||pageNr>this.fluidbook.datas.pages){callback();return}if(this.getVersionToLoad(pageNr)==="raster"){callback();return}var $this=this;if(this.texts[pageNr]!==undefined){$("#page_"+pageNr+" .texts").append(this.texts[pageNr]);callback()}else{this._loadTexts(pageNr,function(){$("#page_"+pageNr+" .texts").append($this.texts[pageNr]);callback()})}},_loadTexts:function(pageNr,callback){if(pageNr<=0||pageNr>this.fluidbook.datas.pages){callback();return}this.texts[pageNr]=this.loadImage(this.getTextsURL(pageNr),null,null,"image/svg+xml",pageNr,callback)},loadDatas:function(pageNr,callback){var $this=this;this.loadTexts(pageNr,function(){$this.setBackground(pageNr,callback)})},getImage:function(src,width,height,type,callback){var img=this.loadImage(src,width,height,type,null,callback);return $(img).get(0).outerHTML},checkLoadedThumbs:function(){var res=this.loadedThumbnails.length===this.fluidbook.datas.pages;return res},preloadThumbs:function(callback){if(this.checkLoadedThumbs()){callback();return}$(this).one("thumbnails.loaded",function(){callback()});var cb=function(){};for(var i=1;i<=this.fluidbook.datas.pages;i++){this.loadThumb(i,cb)}},loadThumb:function(pageNr,callback){if(this.thumbnails[pageNr]===undefined||this.thumbnails[pageNr]===null){return this._loadThumb(pageNr,callback)}callback(this.thumbnails[pageNr]);return this.thumbnails[pageNr]},_loadThumb:function(pageNr,callback){if(pageNr<=0||pageNr>this.fluidbook.datas.pages){callback();return}var $this=this;var cb=function(){$this.loadedThumbnails.push(pageNr);if($this.checkLoadedThumbs()){$($this).trigger("thumbnails.loaded")}callback()};var img=this.loadImage("data/thumbnails/p"+pageNr+".jpg",null,null,"image/jpeg",pageNr,cb);this.thumbnails[pageNr]=img;return img},getThumbImage:function(page,shade,pageHolderStyle){var s="";if(pageHolderStyle===undefined){pageHolderStyle=""}if(shade){s='<div class="shade"></div>'}var thumb=this.loadThumb(page,function(){});var thumbhtml="";if(thumb!==undefined&&thumb.length>0){thumbhtml=thumb.get(0).outerHTML}return'<div class="pageholder"'+pageHolderStyle+">"+thumbhtml+s+"</div>"},loadImage:function(src,width,height,type,page,cb){var $this=this;var callback=function(){if(cb&&typeof cb=="function"){setTimeout(function(){if(!callbackCalled){callbackCalled=true;cb()}},10)}};if(src===false){callback();return}var img=new Image;var $this=this;var callbackCalled=false;$(img).one("load",function(){callback()});$(img).one("error",function(){$this.imagesErrors.push(this);callback()});img.src=src;if(width!==undefined&&width!==null){img.width=width}if(height!==undefined&&height!==null){img.height=height}if(type!==undefined&&type!==null){img.type=type}if(img.complete||img.readyState==="complete"||img.readyState===4){callback()}var res=$(img);if(page!==null){$(res).attr("data-page",page);$("#loadedcontents").append(res)}return res},retryErrorImages:function(){$(this.imagesErrors).each(function(){$(this).attr("src",$(this).attr("src"))});this.imagesErrors=[]}};function FluidbookSearch(fluidbook){this.fluidbook=fluidbook;this.indexLoaded=false;this.termsToHighlight=[];this.highlights=[];this.highlightEnabled=fluidbook.datas.highlightResults;this.resultPages=[];this.resultNavPages=[];this.plugins=[];this.singleMode=fluidbook.singleMode;this.resultsNavID="searchResultsNav";this.hideableElements=$("header,footer,#interface");this.resultsActiveClass="searchResultsNavActive";this.init()}FluidbookSearch.prototype={init:function(){var $this=this;$(this.fluidbook).on("fluidbook.page.change.end",function(e,pageNr){$this.highlightSearchTerms(pageNr)});$(document).on("change","#q",function(){$this.setHighlightTerms([]);$this.clearHighlights();return true});$(document).on("keyup","#q",function(){if($(this).val()==""){$this.setHighlightTerms([]);$this.clearHighlights()}return true});this.initResultsNav()},debugSearch:function(keyword){this._loadLib(function(){console.log('Comparison of page results for keyword "'+keyword+'"');console.log("INDEX:",Object.keys(INDEX[keyword].p).join(", "));console.log("HIGHLIGHTS:",Array.from(new Set(HIGHLIGHTS["loutres"].map(function(h){return h.page}))).join(", "))})},initResultsNav:function(){var $this=this;var html="";html+='<div id="'+this.resultsNavID+'" class="hidden">';html+='<div class="button searchResultsNavField">';html+=getSpriteIcon("nav-search");html+='<div class="searchResultsNavQuery"></div>';html+="</div>";html+='<div class="searchResultsNavArrows">';html+='<div class="button searchResultsPrev"></div>';html+='<div class="searchResultsNavCounter"></div>';html+='<div class="button searchResultsNext"></div>';html+="</div>";html+='<div class="button searchResultsNavClose">';html+=getSpriteIcon("interface-close");html+="</div>";html+="</div>";$("body").append(html);this.resultsNav=$("#"+this.resultsNavID);$(document).on("click","#menuSearchResults a",function(){var pageNumber=parseInt($(this).parents(".doubleThumb").attr("page"));$this.openResultsNav(pageNumber)});$(document).on("click",".searchResultsNavField",function(){$this.closeResultsNav(true);$this.fluidbook.nav.openSearch()});$(document).on("click",".searchResultsNext",function(){$this.nextResultsPage()});$(document).on("click",".searchResultsPrev",function(){$this.previousResultsPage()});$(document).on("click",".searchResultsNavClose",function(){$this.closeResultsNav()});$(this.fluidbook).on("fluidbook.resize.orientation",function(event,details){if(!$this.resultsNavActive())return;$this.updateResultsNav($this.fluidbook.currentPage)});key("esc",function(){if($this.resultsNavActive()){$this.closeResultsNav()}})},resultsNavActive:function(){return $("body").hasClass(this.resultsActiveClass)},updateResultsNav:function(resultPage){if(this.fluidbook.resize.orientation==="landscape"){var noOddPages=this.resultPages.map(function(page){if(page%2===1)page--;return page});this.resultNavPages=noOddPages.filter(function(value,index,self){return self.indexOf(value)===index})}else{this.resultNavPages=this.resultPages}var resultPagePosition=this.resultNavPages.indexOf(resultPage);resultPagePosition=resultPagePosition===-1?1:resultPagePosition+1;var counterText=resultPagePosition+"/"+this.resultNavPages.length;this.resultsNav.find(".searchResultsNavQuery").text($("#q").val());this.resultsNav.find(".searchResultsNavCounter").text(counterText)},openResultsNav:function(resultPage){this.updateResultsNav(resultPage);this.hideableElements.addClass("hidden");this.resultsNav.removeClass("hidden");$("body").addClass(this.resultsActiveClass)},closeResultsNav:function(keepSearch){keepSearch=keepSearch!=="undefined"?keepSearch:false;this.hideableElements.removeClass("hidden");this.resultsNav.addClass("hidden");if(!keepSearch){this.closeSearch()}$("body").removeClass(this.resultsActiveClass)},nextResultsPage:function(){var currentIndex=this.resultNavPages.indexOf(fluidbook.currentPage);var nextIndex=currentIndex+1;if(nextIndex>=this.resultNavPages.length){nextIndex=0}var nextPage=this.resultNavPages[nextIndex];this.updateResultsNav(nextPage);this.fluidbook.setCurrentPage(nextPage)},previousResultsPage:function(){var currentIndex=this.resultNavPages.indexOf(fluidbook.currentPage);var prevIndex=currentIndex-1;if(prevIndex<0){prevIndex=this.resultNavPages.length-1}var prevPage=this.resultNavPages[prevIndex];this.updateResultsNav(prevPage);this.fluidbook.setCurrentPage(prevPage)},getHints:function(q,callback){var $this=this;this._loadLib(function(){$this._getHints(q,callback)})},find:function(q,callback){var $this=this;this._loadLib(function(){$this._find(q,callback)})},_loadLib:function(callback){if(this.indexLoaded){return callback()}var $this=this;loadJSLibrary("data/search.index.js",function(){$this._loadTexts(function(){if($this.highlightEnabled){loadJSLibrary("data/search.highlight.js",function(){$this.indexLoaded=true;callback()})}else{$this.indexLoaded=true;callback()}})})},_loadTexts:function(callback){if(this.fluidbook.datas.searchWordSelectionAlgorithm==="expression"){loadJSLibrary("data/search.texts.js",function(){callback()})}else{callback()}},_getHints:function(q,callback){var words=this.normalizeQuery(q,true);q=words.pop();var res=[];if(q.length<3){return res}var v;for(var k in INDEX){v=INDEX[k];if(k.indexOf(q)!==0){continue}res.push([k,v.t])}for(var p in this.plugins){var plugin=this.plugins[p];var h=plugin.getHints(q);res=res.concat(h)}res.sort(this.sortHints);callback(res.slice(0,12))},getSearchWordSelectionAlgorithm:function(q){var a=this.fluidbook.datas.searchWordSelectionAlgorithm;if(q.indexOf(" ")===-1&&a==="expression"){a="begins"}return a},_find:function(q,callback){var algo=this.getSearchWordSelectionAlgorithm(q);if(algo==="expression"){return this._findExpression(q,callback)}var searchTerms=this.normalizeQuery(q,true);var res={};var terms=[];var total=0;var doublePages=[];this.resultPages=[];var matchedWord,indexWord,searchTerm,term,page;var maxPage=this.fluidbook.contentlock.getMaxPage();for(searchTerm in searchTerms){term=searchTerms[searchTerm];terms.push(term);for(indexWord in INDEX){if(indexWord.length<this.fluidbook.datas.ignoreWordLimit){continue}if(algo==="begins"&&indexWord.indexOf(term)!==0){continue}else if(algo==="contains"&&indexWord.indexOf(term)===-1){continue}else if(algo==="exact"&&indexWord!==term){continue}matchedWord=INDEX[indexWord];for(page in matchedWord.p){var occurrences=matchedWord.p[page];page=parseInt(page);if(page>maxPage){continue}if(doublePages[page]==null||doublePages[page]==undefined){doublePages[page]=[]}if(doublePages[page][searchTerm]==null||doublePages[page][searchTerm]==undefined){doublePages[page][searchTerm]=0}doublePages[page][searchTerm]+=occurrences;total+=occurrences}}}var nbwords=searchTerms.length;total=0;for(var dpNumber in doublePages){var doublePageOccurences=doublePages[dpNumber];if(Object.keys(doublePageOccurences).length===nbwords||this.fluidbook.datas.searchPageSelectionAlgorithm==="OR"){var totalOccurrences=0;for(var ww in doublePageOccurences){totalOccurrences+=doublePageOccurences[ww]}res[dpNumber]=totalOccurrences;this.resultPages.push(parseInt(dpNumber));total+=totalOccurrences}}var returnVal={total:total,results:res,terms:terms};callback(returnVal)},_findExpression:function(q,callback){q=this.normalizeQuery(q,false);var words=this.normalizeQuery(q,true);var res={};var terms=[];var total=0;var doublesPages=[];var maxPage=this.fluidbook.contentlock.getMaxPage();for(var p in TEXTS){var t=TEXTS[p];var regexp=new RegExp(q,"g");var r=t.match(regexp);var nb=0;try{nb=r.length}catch(e){}if(nb==0){continue}page=parseInt(p);if(page>maxPage){continue}if(!this.singleMode&&page%2===1){page--}doublesPages[page]=[];doublesPages[page][q]=nb;res[page]=nb;total+=nb}if(total>0){terms=words}var returnVal={total:total,results:res,terms:terms};callback(returnVal)},sortHints:function(a,b){return b[1]-a[1]},kill:function(){},normalizeQuery:function(q,split){q=this.noAccents(q);q=q.toLowerCase();if(split){return q.split(" ")}return q},noAccents:function(source){source=source.replace(/[àáâãäå]/g,"a");source=source.replace(/[ÀÁÂÃÄÅ]/g,"A");source=source.replace(/[èéêë]/g,"e");source=source.replace(/[ËÉÊÈ]/g,"E");source=source.replace(/[ìíîï]/g,"i");source=source.replace(/[ÌÍÎÏ]/g,"I");source=source.replace(/[ðòóôõöø]/g,"o");source=source.replace(/[ÐÒÓÔÕÖØ]/g,"O");source=source.replace(/[ùúûü]/g,"u");source=source.replace(/[ÙÚÛÜ]/g,"U");source=source.replace(/[ýýÿ]/g,"y");source=source.replace(/[ÝÝŸ]/g,"Y");source=source.replace(/[ç]/g,"c");source=source.replace(/[Ç]/g,"C");source=source.replace(/[ñ]/g,"n");source=source.replace(/[Ñ]/g,"N");source=source.replace(/[š]/g,"s");source=source.replace(/[Š]/g,"S");source=source.replace(/[ž]/g,"z");source=source.replace(/[Ž]/g,"Z");source=source.replace(/[æ]/g,"ae");source=source.replace(/[Æ]/g,"AE");source=source.replace(/[œ]/g,"oe");source=source.replace(/[Œ]/g,"OE");return source},setHighlightTerms:function(terms){if(!this.highlightEnabled){return}this.termsToHighlight=terms;this.highlights=[];if(terms.length===0){return}var algo=this.getSearchWordSelectionAlgorithm(terms.join(" "));if(algo==="expression"){return}for(var t in terms){var term=terms[t];for(var w in HIGHLIGHTS){if(algo!=="expression"&&w.length<this.fluidbook.datas.ignoreWordLimit){continue}if(algo==="begins"&&w.indexOf(term)!==0){continue}else if(algo==="contains"&&w.indexOf(term)===-1){continue}else if(algo==="exact"&&w!==term){continue}var color=t;if(algo==="expression"){color=0}var h={occurences:HIGHLIGHTS[w],color:color,word:w,term:term};this.highlights.push(h)}}},clearHighlights:function(){$("#searchHighlights").html("");for(var p in this.plugins){var plugin=this.plugins[p];plugin.clearHighlights()}},highlightSearchTerms:function(pageNr){if(!this.highlightEnabled){return}this.clearHighlights();if(this.termsToHighlight.length===0){return}for(var p in this.plugins){var plugin=this.plugins[p];plugin.highlight(pageNr,this.termsToHighlight)}if(!this.fluidbook.datas.highlightAllOccurences){var evenPageNumber=pageNr;if(!this.singleMode&&evenPageNumber%2===1){evenPageNumber--}if(this.resultPages.indexOf(evenPageNumber)===-1){return}}var pageNrs=[];if(this.fluidbook.resize.orientation==="portrait"){pageNrs.push(pageNr)}else{if(!this.singleMode&&pageNr%2===1){pageNr--}pageNrs.push(pageNr);pageNr++;if(pageNr<this.fluidbook.contentlock.getMaxPage()){pageNrs.push(pageNr)}}if(this.fluidbook.l10n.dir==="rtl"){pageNrs.reverse()}for(var i in this.highlights){var h=this.highlights[i];for(var j in h.occurences){var o=h.occurences[j];var pageIndex=pageNrs.indexOf(o.page);if(pageIndex==-1){continue}this.highlightOccurence(o,h.word,h.term,h.color,pageIndex*this.fluidbook.datas.width)}}},highlightOccurence:function(position,word,term,color,offset){if(word==term){width=position.width;x=0}else{var width=0;var x=0;var startIndex=word.indexOf(term);for(var i=0;i<word.length;i++){if(i<startIndex){x+=position.lw[i]}else{width+=position.lw[i]}if(i>=term.length){break}}}var padding=position.height*.2;var z=this.fluidbook.datas.cssScale;var h=$('<div class="highlight" data-color="'+color+'"></div>');var coords={top:(position.y-position.height-padding*2)*z,left:(position.x+x-padding)*z+offset,width:(width+2*padding)*z,height:(position.height+padding*3)*z};var transform={};if(position.rotation){transform.rotate=-position.rotation+"deg"}var hash=coords.top+"|"+coords.left+"|"+coords.width+"|"+coords.height;if($('[data-hash="'+hash+'"]').length>0){return}$(h).attr("data-hash",hash);$(h).css(coords).transform(transform);$("#searchHighlights").append(h)},initSearchResults:function(){this.menuSearchResults=$("#menuSearchResults");this.fluidbook.resize.resizeMenu();this.menuSearchResults.hide()},initSearchHints:function(){this.menuSearchHints=$("#menuSearchHints");this.fluidbook.hideMenuItems();this.menuSearchHints.fadeIn(300)},getSearchHints:function(q){var $this=this;this.killLastSearchHint();this.getHints(q,function(r){$this.displaySearchHints(r)})},displaySearchHints:function(hints){var $this=this;if(hints.length==0){return}this.menuSearchHints.html("");$.each(hints,function(k,v){var termType="word";if(v.length>2){label=v[2]}else{label=v[0]}$this.menuSearchHints.append('<a class="hint" term="'+v[0]+'" href="#/search/'+v[0]+'">'+label+"</a>")});var qoffset=$("#q").offset();var top=qoffset.top+$("#q").outerHeight()+5;var left=qoffset.left;if(this.fluidbook.l10n.dir==="rtl"){left=-1*($(window).width()-left-$("#q").outerWidth())}this.menuSearchHints.perfectScrollbar({suppressScrollX:true,minScrollbarLength:40});$("#searchHints").css({top:top,left:left}).show()},killLastSearchHint:function(){this.kill()},hideSearchHints:function(){this.menuSearchHints.html("").hide()},hideSearchResults:function(){this.menuSearchResults.html("").hide()},isSearchActive:function(){if(!this.fluidbook.datas.search){return false}return $("#q").val().length>0},closeSearch:function(){$("#q").val("");this.clearHighlights();this.setHighlightTerms([]);this.hideSearchHints();this.hideSearchResults();this.fluidbook.showMenuItems()},submitForm:function(){var q=$("#q").val();if(q===""){return false}this.closeKeyboardonTouchDevices();window.location.hash="/search/"+q;this.fluidbook.stats.track(1,this.fluidbook.currentPage,q);var continueProcessingAfterPlugins=true;for(var p in this.plugins){if(!continueProcessingAfterPlugins){continue}var plugin=this.plugins[p];continueProcessingAfterPlugins=plugin.submitQuery(q)}if(!continueProcessingAfterPlugins){return}var $this=this;this.find(q,function(results){$this.openResults(results)})},openResults:function(results,gotoPageIfOneResult){if(gotoPageIfOneResult===undefined){gotoPageIfOneResult=false}var $this=this;this.closeKeyboardonTouchDevices();if(results.total<=0){this.menuSearchResults.html('<div class="no-results">'+this.fluidbook.l10n.__("no result found")+"</div>");this.hideSearchHints();this.menuSearchResults.fadeIn(300);return false}var hits=[];for(var i=0;i<=this.fluidbook.contentlock.getMaxPage();i++){hits[i]=0}$.each(results.results,function(k,v){hits[k]+=v});this.menuSearchResults.html(this.fluidbook.menu.index._getNormalView(true,141)).hide();var spreadEnabled=0;this.menuSearchResults.find(".doubleThumb").each(function(){var currentPages=$(this).data("pages").toString().split(","),totalHits=0,pagesWithHits=[];for(var i in currentPages){var pageNum=parseInt(currentPages[i]);if(hits[pageNum]>0){totalHits+=hits[pageNum];pagesWithHits.push(currentPages[i])}}if($(this).find(".hits").length>0){return}if(totalHits===0){if($this.fluidbook.datas.searchShowNoResultsPages){$(this).append('<div class="overlay"></div>');$(this).append('<div class="hits no">'+$this.fluidbook.l10n.__("no result found")+"</div>")}else{$(this).remove();return}}else{spreadEnabled++;$(this).attr("data-enabled","1");$(this).append('<a href="#/page/'+$(this).attr("page")+'"><div class="hits yes">'+totalHits+" "+$this.fluidbook.l10n.__("hit(s)")+"</div></a>");if($this.fluidbook.pad.enabled){if(pagesWithHits.length==1){$(this).find("a").attr("href","#/page/"+pagesWithHits[0])}else{$(this).find("a").attr("href","#/search/"+e+"/"+$(this).attr("page"))}}else{$(this).find("a").attr("href","#/page/"+$(this).attr("page"))}}});this.setHighlightTerms(results.terms);this.hideSearchHints();this.highlightSearchTerms(this.fluidbook.currentPage);if(gotoPageIfOneResult&&spreadEnabled===1){setTimeout(function(){fluidbook.setCurrentPage($this.menuSearchResults.find('.doubleThumb[data-enabled="1"]').attr("page"));fluidbook.nav.menuAPI.close()},100);return}this.menuSearchResults.fadeIn(300).scrollTop(0);setTimeout(function(){this.fluidbook.resize.resizeMenu()},500);this.menuSearchResults.perfectScrollbar({suppressScrollX:true,minScrollbarLength:40})},registerPlugin:function(p){this.plugins.push(p)},closeKeyboardonTouchDevices:function(){if(this.fluidbook.support.iOS||this.fluidbook.support.android){if(!$("#q").is(":focus")){return}$("#q").blur()}}};function FluidbookHelp(fluidbook){this.autoTimeout;this.fluidbook=fluidbook;this.view=$("#helpView");this.overlay=$("#helpViewOverlay");this.initEvents();this.interfaceTop;this.ww=0;this.ns=0;this.ignoreResize=false}FluidbookHelp.prototype={init:function(force){if(force===undefined){force=false}var ww=this.fluidbook.resize.ww;var skip=true;if(this.view.html()===""){skip=false}if(this.ww!==ww&&this.fluidbook.l10n.rtl){skip=false}if(this.ns!==this.fluidbook.resize.navScale){skip=false}if(force){skip=false}this.ww=ww;this.ns=this.fluidbook.resize.navScale;if(skip){return}var $this=this;var help="";var ext="svg";var touchzoom=2;var mousezoom=1;help='<div id="help-illustrations">';if(this.fluidbook.mobilefirst.enabled){var name="fingers";var text=this.fluidbook.l10n.__("scroll down to read the page content");help+='<div class="illustration touch">'+this.fluidbook.loader.getImage("images/help/help-touch-scroll.svg",300*touchzoom,200*touchzoom);help+="<p>"+text+"</p>";help+="</div>"}else{var name="fingers";var text=this.fluidbook.l10n.__("tap twice or spread your fingers to zoom in");help+='<div class="illustration touch">'+this.fluidbook.loader.getImage("data/images/help-"+name+".svg",400*touchzoom,200*touchzoom);help+="<p>"+text+"</p>";help+="</div>"}name="mouse";if(this.fluidbook.mobilefirst.enabled){text=this.fluidbook.l10n.__("scroll down to read the page content")}else{text=this.fluidbook.l10n.__("click once to zoom in, click again to zoom out")+"<br />"+this.fluidbook.l10n.__("roll the mouse wheel to zoom in/out")}help+='<div class="illustration mouse">'+this.fluidbook.loader.getImage("data/images/help-"+name+".svg",100*mousezoom,200*mousezoom);help+="<p>"+text+"</p>";help+="</div>";if(this.fluidbook.mobilefirst.enabled){help+='<div class="illustration touch">'+this.fluidbook.loader.getImage("images/help/help-touch-swipe.svg",300*touchzoom,200*touchzoom);help+="<p>"+this.fluidbook.l10n.__("swipe to change the page")+"</p>";help+="</div>"}help+="</div>";help+='<div id="icons">';var tooltipSelector="#horizontalNav li > a[data-tooltip]:visible";var tooltips=this.fluidbook.datas.invertMenuPosition?$(tooltipSelector).get().reverse():$(tooltipSelector);var navScale=this.fluidbook.resize.navScale;var initialHeight=20*navScale;var hStep=25*navScale;var h=initialHeight+($(tooltipSelector).length-1)*hStep;$(tooltips).each(function(){var text=$(this).data("tooltip");if(text===null||text===undefined||text===""||$(this).hasClass("hidden")){return}var icon=$(this).find(".nav-icon:visible:first");if(icon.length>0){var offset=icon.offset();var iconWidth=parseFloat($(icon).width())*navScale;var left;if($this.fluidbook.l10n.dir==="ltr"){left=offset.left+iconWidth/2}else{left=(ww-offset.left-iconWidth/2)*-1}left=left/navScale;var c="nav";if($(this).parents("#afterSearch").length>0){c="afterSearch"}help+='<div class="icon '+c+'" style="padding-top:'+h+"px;left:"+left+'px;"><span>'+text+"</span></div>";h-=hStep}});help+="</div>";if(this.fluidbook.interface.arrowsEnabled()){var next=this.fluidbook.l10n.__("next double page");var previous=this.fluidbook.l10n.__("previous double page");if(this.fluidbook.pad.enabled){next=this.fluidbook.l10n.__("next chapter");previous=this.fluidbook.l10n.__("previous chapter")}if(this.fluidbook.mobilefirst.enabled){var next=this.fluidbook.l10n.__("next page");var previous=this.fluidbook.l10n.__("previous page")}}help+='<div class="interface">';if(this.fluidbook.interface.arrowsEnabled()){help+='<div class="help-arrows">';help+='<div class="next">'+next+"</div>";help+='<div class="last">'+this.fluidbook.l10n.__("last page")+"</div>";help+='<div class="previous">'+previous+"</div>";help+='<div class="first">'+this.fluidbook.l10n.__("frontpage")+"</div>";help+="</div>"}if($("#slider").length>0){help+='<div class="slider"><span>'+this.fluidbook.l10n.__("drag handle to switch page")+"</span></div>"}help+=this.bookmarkLabel();help+="</div>";if(this.fluidbook.pad.enabled){help+='<div class="down">'+this.fluidbook.l10n.__("read more")+"<hr /></div>"}this.view.html(help)},initEvents:function(){var $this=this;$(document).on("click",".icon-help",function(e){$this.show();if(fluidbook.nav.menuIsOpen){fluidbook.nav.menuAPI.close()}e.preventDefault()});$this.overlay.click(function(e){e.stopImmediatePropagation();e.stopPropagation();e.preventDefault();$this.hide();return false});$(this.fluidbook).on("fluidbook.resize",function(){if(!$this.ignoreResize){$this.hide()}})},isVisible:function(){return this.view.is(":visible")},show:function(time){this.clearTimeout();if(time===undefined){time=0}this.fluidbook.interface.displayInterface();if(this.isVisible()){return false}var $this=this;this.overlay.show();this.view.css("opacity",0).show();this.view.find(".interface").show();$("#help-illustrations").css("opacity","0");if(time!==0){this.autoTimeout=setTimeout(function(){$this.hide()},time*1e3)}this.init(true);setTimeout(function(){$this.resize();$("body,#previous,#next").addClass("help");this.fluidbook.showAllButtons();$this.view.css("opacity",1)},50);setTimeout(function(){$this.resize();$("#help-illustrations").css("opacity","1")},100);return false},hide:function(){this.clearTimeout();this.fluidbook.interface.checkHidden();var $this=this;if(this.isVisible()){this.overlay.hide();this.view.hide();$("body,#previous,#next").removeClass("help");this.fluidbook.hideUnnecessaryButtons();if(this.fluidbook.support.isMobile){$("*").unbind("click",function(){$this.hide()})}}return false},toggle:function(){if(this.isVisible()){this.hide()}else{this.show()}},resize:function(){this.view.find("#help-illustrations").css({transform:""});var hh=this.fluidbook.resize.hh;var navScale=this.fluidbook.resize.navScale;var interfaceScale=this.fluidbook.resize.interfaceScale;this.init(false);var $this=this;var dir=this.fluidbook.l10n.dir;var menuHeightScaled=this.fluidbook.datas.menuHeight*navScale;var nextTop;var firstTop;if(this.fluidbook.interface.arrowsEnabled()){var arrow=$("#interface #next").get(0).getBoundingClientRect();nextTop=Math.round(arrow.top+arrow.height*.35);firstTop=Math.round(arrow.top+arrow.height*.71);this.view.find(".previous, .next").css({top:nextTop});this.view.find(".first, .last").css({top:firstTop});var prevPosition=dir==="ltr"?{left:Math.round(arrow.width)}:{right:Math.round(arrow.width)},nextPosition=dir==="ltr"?{right:Math.round(arrow.width)}:{left:Math.round(arrow.width)};this.view.find(".previous, .first").css(prevPosition);this.view.find(".next, .last").css(nextPosition)}if(this.fluidbook.bookmarks.enabled){var inverted=this.fluidbook.datas.invertMenuPosition;var side=this.fluidbook.l10n.dir==="ltr"&&inverted||this.fluidbook.l10n.dir==="rtl"&&!inverted?"left":"right";if(this.fluidbook.mobilefirst.enabled){side="right"}var baseElement=$("#links .bookmark."+side+":visible");if(baseElement.length>0){var box=baseElement[0].getBoundingClientRect();var circleExtra=25*this.fluidbook.resize.interfaceScale;var circleOffset=circleExtra/2;$(".bookmark-help .bookmark").css({width:Math.round(box.width),height:Math.round(box.height),margin:Math.round(circleOffset)});$(".bookmark-help .bookmark-help-icon").css({width:Math.round(box.width+circleExtra),height:Math.round(box.height+circleExtra)});var css={top:Math.round(box.top-circleOffset)};if(side==="left"){css.transformOrigin="left top";css.flexDirection="row";css.left=Math.round(box.left-circleOffset)}else{css.right=Math.round(this.fluidbook.resize.ww-box.left-box.width-circleOffset);css.transformOrigin="right top";css.flexDirection="row-reverse"}$(".bookmark-help").css(css)}}if($("#slider").length>0){var positionSliderLabel=function(){var sliderHelp=$this.view.find(".slider");var sliderCursor=$("#slidercursor .visible");sliderHelp.css({bottom:Math.round(hh-sliderCursor.offset().top),left:Math.round(sliderCursor.offset().left+sliderCursor.width()/2),transformOrigin:"left bottom"})};positionSliderLabel();setTimeout(positionSliderLabel,250)}this.view.find("#icons").css({top:menuHeightScaled,transform:"scale("+navScale+")"});var s=Math.max(.9,Math.min(1.5,interfaceScale));$("#helpView #icons").css({fontSize:14/navScale*s});var is=Math.min(s,hh*.7/$("#help-illustrations").outerHeight());this.view.find("#help-illustrations").css({transform:"translate(-50%, 0) scale("+is+")"});$("#helpView .interface").find("> div").transform({scale:[s,s]});var top=(hh-$("#help-illustrations").outerHeight())/2;$("#help-illustrations").css("top",top)},clearTimeout:function(){clearTimeout(this.autoTimeout)},displayAtStartup:function(){if(this.fluidbook.datas.helpStartup){var $this=this;var time=parseInt(this.fluidbook.datas.helpStartupTime);this.ignoreResize=true;setTimeout(function(){$this.ignoreResize=false},(time+1)*1e3);this.show(time);if(this.fluidbook.pad.enabled){this.fluidbook.pad.displayInterface()}}else{this.fluidbook.hideUnnecessaryButtons()}},bookmarkLabel:function(){if(!this.fluidbook.bookmarks.enabled){return}var dir=this.fluidbook.l10n.dir;var inverted=this.fluidbook.datas.invertMenuPosition;var side=dir==="ltr"&&inverted||dir==="rtl"&&!inverted?"left":"right";if(this.fluidbook.mobilefirst.enabled){side="right"}var baseElement=$("#links .bookmark."+side);var html="";if(baseElement.length===0){return""}var iconHolder=$('<div class="bookmark '+side+'" data-enabled="enabled" />');iconHolder.html(getSpriteIcon("bookmark-corner"));var icon=$(iconHolder).get(0).outerHTML;html+=$('<div class="bookmark-help-icon">'+icon+"</div>")[0].outerHTML;html+=$('<div class="bookmark-help-line"/>')[0].outerHTML;html+=$('<div class="bookmark-help-label">'+this.fluidbook.l10n.__("add / remove bookmark")+"</div>")[0].outerHTML;var wrapper=$('<div class="bookmark-help">'+html+"</div>")[0].outerHTML;return wrapper}};function FluidbookResize(fluidbook){this.fluidbook=fluidbook;this.setMargins();this.corr=.8;this.referenceWidthLandscape=1024;this.referenceWidthPortrait=400;this.referenceHeight=600;this.orientation="";this.textScale=2;this.bookScale=1;this.interfaceScale=1;this.headerScale=1;this.navScale=1;this.ww=$(window).width();this.hh=$(window).height();this.init();this.navresizeTimeout=0}FluidbookResize.prototype={reduceHorizontalMargins:function(){return this.fluidbook.mobilefirst.enabled||this.orientation==="portrait"&&(this.fluidbook.support.iOS||this.fluidbook.support.android)},setMargins:function(){var marginV=20;var marginY=marginV;var marginX=60;if(this.reduceHorizontalMargins()){marginX=20}this.marginleft=marginX+parseInt(this.fluidbook.datas.extraXSpace);this.margintop=marginY+parseInt(this.fluidbook.datas.extraYSpace);this.marginbottom=marginY+marginV;this.marginright=this.marginleft},init:function(){var ltr=this.fluidbook.l10n.dir==="ltr";var left=ltr?"0%":"100%";var right=ltr?"100%":"0%";$("#nav,#searchHints").transform({origin:[left,"0%"]});$("#footer").transform({origin:[right,"100%"]});if(this.fluidbook.interface.arrowsEnabled()){$("#next").transform({origin:[right,"50%"]});$("#previous").transform({origin:[left,"50%"]})}if(this.fluidbook.support.android||this.fluidbook.support.iOS){$(document).on("blur focus","input",function(){setTimeout(resize,1500);setTimeout(resize,3e3)})}if(this.fluidbook.support.IE>9){this.watchForResize()}},watchForResize:function(){var w=Math.max(document.documentElement.clientWidth,window.innerWidth||0);var h=Math.max(document.documentElement.clientHeight,window.innerHeight||0);if(w!==this.ww||h!==this.hh){resize()}var $this=this;window.setTimeout(function(){$this.watchForResize()},1e3)},resize:function(init,forceOrientation){if(init==undefined||init==null){init=false}if(forceOrientation===undefined){forceOrientation=false}var $this=this;this.updateWindow();this.handleOrientation(init||forceOrientation);if(this.fluidbook.support.android){this.fluidbook.viewport.width="device-width";this.fluidbook.viewport.updateViewport();this.updateWindow()}var headerScale=1;var interfaceScale,headerScale;if(this.orientation==="landscape"){interfaceScale=Math.min(1,this.ww/this.referenceWidthLandscape,this.hh/this.referenceHeight)}else if(this.orientation==="portrait"){var nminwidth=$("#nav a").length*51+205+50;var refWidth=Math.max(this.referenceWidthPortrait,nminwidth);headerScale=Math.min(1,this.ww/refWidth,this.hh/this.referenceHeight);interfaceScale=Math.min(1,.7*this.ww/refWidth,.7*this.hh/this.referenceHeight)}if(this.fluidbook.mobilefirst.enabled){interfaceScale=Math.max(.8,interfaceScale);headerScale=Math.max(.8,headerScale)}this.interfaceScale=interfaceScale;this.headerScale=headerScale;var navScale=headerScale*parseInt(this.fluidbook.datas.mobileNavScale)/100;this.navScale=navScale;var cssInterfaceScale=[interfaceScale,interfaceScale];var cssNavScale=[navScale,navScale];var cssHeaderScale=[headerScale,headerScale];$("#main,#z,#scroll").css({width:this.ww,height:this.hh});this.resizeView();this.setMargins();var marginTop,marginBottom,marginLeft,marginRight;if(this.fluidbook.pad.enabled){extraX=0;marginTop=0;marginBottom=0;marginLeft=0;marginRight=0}else{var extraX=parseInt(this.fluidbook.datas.mobileExtraXSpace);if(isNaN(extraX)){extraX=0}marginTop=parseInt(this.fluidbook.datas.menuHeight)*headerScale+this.margintop*interfaceScale;marginBottom=(10+this.marginbottom)*interfaceScale;marginLeft=(this.marginleft+parseInt(extraX))*interfaceScale;marginRight=(this.marginright+parseInt(extraX))*interfaceScale}var aw=this.ww-marginLeft-marginRight;var ah=this.hh-marginTop-marginBottom;var fhh=this.fluidbook.datas.height;var fww=this.fluidbook.datas.width;if(this.orientation==="landscape"){fww*=2}this.bookScale=Math.min(aw/fww,ah/fhh);var origin=["50%","50%"];if(this.fluidbook.mobilefirst.enabled){this.bookScale=this.fluidbook.mobilefirst.getBookScale(aw);origin[1]="0%"}var tabsScale=this.fluidbook.tabs.guessBookScale(this.bookScale,aw,fww);this.bookScale*=tabsScale;var fw=this.bookScale*fww;var fh=this.bookScale*fhh;$("#fluidbook,#shadow").transform({scale:[this.bookScale,this.bookScale],origin:origin});if(this.fluidbook.support.iOS&&this.fluidbook.pagetransitions.getTransitionType()==="flip3d"){$("#fluidbook").css("transform","translate3d(0,0,-1px) scale("+this.bookScale+","+this.bookScale+")")}var top=marginTop+(ah-fhh)/2;var left=marginLeft+(aw-fww)/2;if(this.fluidbook.mobilefirst.enabled){top=marginTop}$("#fluidbook,#shadow").css({top:top,left:left,width:fww,height:fhh});if(this.fluidbook.mobilefirst.enabled){this.fluidbook.mobilefirst.resize()}this.centerOffset=fw/4;this.fluidbook.pagetransitions.centerBook();if($("#pagesnumbers").data("size")==null){$("#pagesnumbers").data("size",parseInt($("#pagesnumbers").css("font-size")))}var pageNumberScale=Math.min(1,1/(this.bookScale/.5));$("#pagesnumbers").css("font-size",$("#pagesnumbers").data("size")*pageNumberScale);if(this.fluidbook.datas.logoHideWhenOverriden){var availableWidthForLogo=(this.ww-fw)/2;if($("#logo").outerWidth()>availableWidthForLogo){$("#logo").addClass("overridenByFluidbook")}else{$("#logo").removeClass("overridenByFluidbook")}}if(this.fluidbook.interface.arrowsEnabled()){$("#next").transform({scale:cssInterfaceScale});$("#previous").transform({scale:cssInterfaceScale})}var audioButtonPosition=Math.max(this.hh/6,30*interfaceScale);$(".audio-description-button").css({scale:cssInterfaceScale,bottom:audioButtonPosition});$("#logo,footer,#searchHints").transform({scale:navScale});$("#horizontalNav, #menuOpener").css({transform:"translateY(-"+50*navScale+"%) scale("+navScale+")"});var headerHeight=this.fluidbook.datas.menuHeight*navScale;$("header").css({height:headerHeight,backgroundSize:"100% "+headerHeight+"px"});this.refw=fw;this.refh=fh;if(this.fluidbook.help){this.fluidbook.help.resize(this.ww,this.hh,interfaceScale,navScale)}$("#loader").css({top:this.hh/2,left:this.ww/2});this.fluidbook.background.resize(this.ww,this.hh);if(this.fluidbook.slider){this.fluidbook.slider.resize(this.ww,this.hh,this.orientation==="portrait")}var timeout=0;if(this.fluidbook.support.android){timeout=1e3}if(timeout>0){clearTimeout(this.navresizeTimeout);this.navresizeTimeout=setTimeout(function(){$this.resizeNav(interfaceScale)},timeout)}else{this.resizeNav(interfaceScale)}this.resizeSplash();if(this.fluidbook.form){try{this.fluidbook.form.resize()}catch(e){}}$("#main").show();if(this.fluidbook.nav){if(this.fluidbook.nav.burgerActive()){$("html").addClass("menu-burger");$("html").removeClass("menu-horizontal")}else{$("html").addClass("menu-horizontal");$("html").removeClass("menu-burger")}}this.checkLogoVisibility();$(window).scrollTop(0);var data={ww:this.ww,hh:this.hh,orientation:this.orientation,bookScale:this.bookScale,fluidbookrect:$("#fluidbook").get(0).getBoundingClientRect()};if(this.fluidbook.interface.arrowsEnabled()){try{data.arrowLeftRect=$("#previous").get(0).getBoundingClientRect();data.arrowRightRect=$("#next").get(0).getBoundingClientRect()}catch(e){}}$(this.fluidbook).trigger("fluidbook.resize",data)},resizeNav:function(interfaceScale){var $this=this;if(this.fluidbook.interface.arrowsEnabled()){var topNext=(this.hh-100*interfaceScale)/2;$("#next,#previous").css({top:topNext}).show()}if($("#afterSearch:visible").length===1){setTimeout(function(){$this.resizeAfterSearch()},10);this.resizeAfterSearch()}},resizeAfterSearch:function(){var rect=$("#horizontalNav").get(0).getBoundingClientRect();if(this.fluidbook.l10n.ltr&&!this.fluidbook.datas.invertMenuPosition||this.fluidbook.l10n.rtl&&this.fluidbook.datas.invertMenuPosition){$("#afterSearch").css({left:rect.left+rect.width,right:"auto"})}else{$("#afterSearch").css({right:this.ww-rect.right+rect.width,left:"auto"})}},checkLogoVisibility:function(){if(this.fluidbook.mobilefirst.enabled){return}var logo=document.getElementById("logo").getBoundingClientRect();var fluidbook=document.getElementById("fluidbook").getBoundingClientRect();var hidden=logo.bottom>fluidbook.top&&logo.left<fluidbook.right-$("#center-fluidbook").data("left");if(hidden){$("#logo").addClass("hidden")}else{$("#logo.hidden").removeClass("hidden")}},resizeSplash:function(){if($("#splash").length==0){return}$("#splash").css({width:this.ww,height:this.hh});if($("#splash").css("opacity")==0){$("#splash").css("opacity",1)}var lw=$("#splash .logo").width();var lh=$("#splash .logo").height();$("#splash .logo").css({top:this.hh/2-30-lh-10,left:Math.max((this.ww-lw)/2,0)})},updateWindow:function(){this.ww=$(window).width();this.hh=$(window).height();if(window.innerHeight&&window.innerHeight!=this.hh){this.hh=window.innerHeight}},resizeView:function(){var $this=this;this.updateWindow();this.fluidbook.menu.resize(this.ww,this.hh)},handleOrientation:function(forceChange){var $this=this;if(forceChange===undefined){forceChange=false}var o=this.fluidbook.support.getOrientation();var newo;if(this.fluidbook.video.isVideoFullscreen()){this.fluidbook.video.resizeControls();return false}if(o===0||o===180){newo="portrait";$("body").removeClass("landscape")}else{newo="landscape";$("body").removeClass("portrait")}var changeOrientation=forceChange||this.orientation!==newo;this.orientation=newo;$("body").addClass(this.orientation);this.fluidbook.displayOnePage=this.orientation==="portrait";if(changeOrientation){$(this.fluidbook).trigger("fluidbook.resize.beforeOrientationChange");this.fluidbook.zoom.resetZoom();if(!this.fluidbook.firstTransition){this.fluidbook.pagetransitions.pageTransition(this.fluidbook.currentPageURL,"immediate")}$(this.fluidbook).trigger("fluidbook.resize.orientation",{orientation:this.orientation});if(this.fluidbook.support.android){setTimeout(function(){$($this.fluidbook).trigger("fluidbook.resize.orientation",{orientation:$this.orientation})},1e3);setTimeout(function(){$($this.fluidbook).trigger("fluidbook.resize.orientation",{orientation:$this.orientation})},2e3)}}},getScreenFluidbookWidth:function(){return $("#fluidbook").outerWidth()*fluidbook.resize.bookScale},resizeMenu:function(){if(this.fluidbook==undefined){return false}if(!this.fluidbook.nav.menuIsOpen)return false;var wh=$(window).height();var formHeight=$("#searchForm").height();var marginBottom;var marginTop=marginBottom=Math.min(Math.round(wh*.075),50);var searchResultsMaxHeight=wh-formHeight-marginTop-marginBottom;var shareHeight=0;var sl=$("#shareLinks");if(sl.length>0){shareHeight=sl.outerHeight()}var menuSearchHeight=0;var ms=$("#menuSearch");if(ms.length>0){menuSearchHeight=ms.height()}var mainMenuMaxHeight=wh-menuSearchHeight-shareHeight;if(this.fluidbook.search.menuSearchResults==undefined){this.fluidbook.search.initSearchResults();return false}$("#menuList > ul").css("maxHeight",mainMenuMaxHeight);if(this.fluidbook.search.menuSearchResults!==undefined){this.fluidbook.search.menuSearchResults.css("maxHeight",searchResultsMaxHeight);this.fluidbook.search.menuSearchResults.css("marginTop",marginTop);this.fluidbook.search.menuSearchResults.perfectScrollbar("update")}if(this.fluidbook.search.menuSearchHints!==undefined){this.fluidbook.search.menuSearchHints.css("maxHeight",wh-formHeight);this.fluidbook.search.menuSearchHints.perfectScrollbar("update")}}};function FluidbookStats(fluidbook){this.fluidbook=fluidbook;this.id=this.fluidbook.datas.id;this.vid=guid();if(this.fluidbook.datas.stats){this.worker=new Worker("js/libs/fluidbook/workers/stats.js")}if(this.fluidbook.datas.googleAnalytics!==""){this.ga="gtag";this.gaCodes=this.fluidbook.datas.googleAnalytics.split(",");$.each(this.gaCodes,function(k,code){gtag("config",code,{send_page_view:false})})}else{if("ga"in window){this.ga="ga"}else{this.ga=false}}this.init()}FluidbookStats.prototype={init:function(){var $this=this;$(document).on("click","a[data-track]",function(){$this.track(6,0,$(this).attr("data-track"));return true})},track:function(type,page,extra){if(!this.fluidbook.support.hasNetwork()){return}if(this.fluidbook.datas.stats){this.trackFluidbook(type,page,extra)}this.trackGoogleAnalytics(type,page,extra)},trackGoogleAnalytics:function(type,page,extra){if(this.ga===false){return}var url=location.pathname+location.search+location.hash;switch(type){case 0:this._ga("pageview",url);break;case 10:this._ga("pageview");break;case 14:this._ga("event","menu","click","chapters");break;case 6:this._ga("event","link","click",extra);break;case 1:var l=document.createElement("a");l.href=window.location.toString();if(l.search==""){l.search="?"}else{l.search+="&"}l.search="q="+extra;this._ga("pageview",l.pathname+l.search+l.hash);break;case 3:this._ga("event","menu","click","print");break;case 5:case 12:case 13:this._ga("event","share","send",type);break;case 7:case 8:this._ga("event","menu","click","download");break;case 4:this._ga("event","bookmark","page","page "+page);break;case 9:this._ga("event","extra","click",extra);break;case 2:this._ga("event","zoom","page",page);break;case 11:this._ga("event","video","view",extra);break}},_ga:function(a0,a1,a2,a3,a4){var args=Array.prototype.slice.call(arguments);if(this.ga=="gtag"){var f,o,c,a;o={};if(a0==="pageview"){f="config";c=true;o={};if(a1!==undefined){o.page_path=a1}}else if(a0==="event"){f="event";c=false;a=a2;o.event_category=a1;o.event_label=a3}if(c){$.each(this.gaCodes,function(k,code){gtag(f,code,o)})}else{gtag(f,a,o)}}else if(this.ga=="ga"){args.unshift("send");window["ga"].apply(null,args)}},trackFluidbook:function(type,page,extra){if(page==undefined){page=0}if(extra==undefined){extra=""}var $this=this;var data={id:$this.id,vid:$this.vid,type:type,page:page,str:extra,time:(new Date).getTime()};setTimeout(function(){$this.fluidbook.networkControl.executeWhenNetwork(function(cb){$this.worker.postMessage(data);setTimeout(cb,100)},false)},2500)}};function FluidbookCache(options){this._cache={};this.options=options;this._prefix="fluidbook."+this.options.id+".";this._support=false;this._date=this.options.cacheDate;this._support=Modernizr.localstorage;this.init()}FluidbookCache.prototype={init:function(){if(this._support){this.checkValidity()}},clear:function(){if(this._support){for(var i=localStorage.length-1;i>=0;i--){var key=localStorage.key(i);if(key.indexOf(this._prefix)==0){localStorage.removeItem(key)}}}else{this._cache={}}},isset:function(key){if(this._support){var res=localStorage.getItem(this._prefix+key)!=null;return res}else{return this._cache[key]!=null}},get:function(key,defaultValue){if(defaultValue===undefined){defaultValue=null}var res;if(this._support){res=localStorage.getItem(this._prefix+key)}else{res=this._cache[key]}if(!this.isset(key)){return defaultValue}var f=res.substr(0,1);if(f=="["||f=="{"){res=json_parse(res)}return res},set:function(key,value){if(typeof value!=="string"){value=JSON.stringify(value)}if(this._support){localStorage.setItem(this._prefix+key,value)}else{this._cache[key]=value}},checkValidity:function(){if(!this.isset("validity")||this.get("validity")!=this._date){this.set("validity",this._date)}}};function FluidbookTooltip(fluidbook){this.fluidbook=fluidbook;this.displaying=false;this.mouseX=0;this.mouseY=0;this.init()}FluidbookTooltip.prototype={init:function(){var $this=this;$(window).on("mousemove",function(e){$this.updateMousePosition(e)});$(window).on("fluidbookzoom",function(e,zoom){$("#tooltip").transform({scale:1/zoom}).css({marginTop:20/zoom,marginLeft:-10/zoom})});$(document).on("mouseover","a[data-tooltip]",function(e){$this.updateMousePosition(e);$this.eventTriggered(this)});$("body").append('<div id="tooltip"></div>')},updateMousePosition:function(e){this.mouseX=e.pageX;this.mouseY=e.pageY;if($("#tooltip").is(":visible")){this.updateTooltipPosition()}},updateTooltipPosition:function(){var y="s";if(this.mouseY<this.fluidbook.resize.hh/2){y="n"}var x="e";if(this.mouseX<this.fluidbook.resize.ww/2){x="w"}var w=$("#tooltip").outerWidth();var h=$("#tooltip").outerHeight();if(y=="n"){offsetY=40}else{offsetY=-1*(h+16)}if(x=="w"){offsetX=-26}else{offsetX=26-w}var top=this.mouseY+offsetY;var left=this.mouseX+offsetX;var maxx=this.fluidbook.resize.ww-w;var maxy=this.fluidbook.resize.hh-h;$("#tooltip").attr("data-pos-x",x).attr("data-pos-y",y).css({top:Math.max(1,Math.min(top,maxy)),left:Math.max(1,Math.min(left,maxx))})},eventTriggered:function(target){if(fluidbook.input.isUsingTouch()&&!$(target).is("[data-tooltip-touch]")){return true}if(this.fluidbook.help.isVisible()){return true}var $this=this;var text=$(target).attr("data-tooltip");text=$("<textarea />").html(text).text();if(text.substr(0,1)=="~"){var text=$this.fluidbook.l10n.__(text.substring(1));$(target).attr("data-tooltip",text)}if(text==undefined||text==""){return false}if(fluidbook.input.isUsingTouch()){$(document).one("touchstart",function(){$this.hideTooltip()})}else{$(target).one("mouseout",function(){$this.hideTooltip()})}this.displayTooltip(text);return false},displayTooltip:function(text,style){var t=$("#tooltip");if(style==undefined){style=""}t.attr("data-style",style);t.css("maxWidth",250).html(text).show();var nbchars=t.text().length;var maxWidth=Math.min(this.fluidbook.resize.ww,Math.max(250,Math.min(750,nbchars*1.2)));for(var w=250;w<=maxWidth;w+=25){if(t.height()*1.5>t.width()){t.css("maxWidth",w)}else{break}}if(t.outerHeight()>this.fluidbook.resize.hh/1.4){t.hide();this.fluidbook.menu.__openView("text",text,function(){});return false}this.updateTooltipPosition();return true},hideTooltip:function(){$("#tooltip").hide().text("")}};function FluidbookBookmarks(fluidbook){this.fluidbook=fluidbook;this.enabled=false;this.bookmarks=[];this._pagesToGroup=[];this._groupNames=[];this._groups=0;this._groupOrder=[];this._txtAdd=this.fluidbook.l10n.translate("add a bookmark",false);this._txtRemove=this.fluidbook.l10n.translate("remove the bookmark",false);this._cornersIndex=[];this._cornersPages=[];this.enabled=this.fluidbook.datas.bookmark;this.init()}FluidbookBookmarks.prototype={init:function(){var $this=this;$(document).on("click touchend",".bookmark",function(){$this.toggleBookmark(parseInt($(this).attr("data-page")));$this.fluidbook.tooltip.hideTooltip();return false});$(document).on("click",".bookmarkssub a.send",function(){var subject="%title%";if($this.fluidbook.datas.bookmark_email_title!==""){subject=$this.fluidbook.datas.bookmark_email_title}var body=$this.fluidbook.l10n.__('Please see the attached files from "%title%".');if($this.fluidbook.datas.bookmark_email_body!==""){body=$this.fluidbook.datas.bookmark_email_body}subject=subject.replace(/\%title\%/gi,$this.fluidbook.datas.title);body=trim(body.replace(/\%title\%/gi,$this.fluidbook.datas.title)," .:");body+=$this.fluidbook.l10n.__(": ")+$this.getPDF();$this.fluidbook.share.intentShare(subject,body);return false});$(document).on("click",".bookmarkssub a.download",function(){$(this).data("ios-preview","1");if(!navigator.onLine&&$this.fluidbook.datas.phonegap){$this.fluidbook.alertInternetRequired();return false}$this.openPDF($(this),false);return false});for(var g in this.fluidbook.datas.bookmarkGroups){var group=this.fluidbook.datas.bookmarkGroups[g];this.addGroup(group.page,group.nb,group.name)}this.completeGroups();this._groupOrder.sort($.proxy(this.sortGroup,this));this.bookmarks=this.getSavedBookmarks();for(var i in this.bookmarks){this.addBookmark(this.bookmarks[i],true)}},sortGroup:function(a,b){var p_a=this.getPagesOfGroup(a)[0];var p_b=this.getPagesOfGroup(b)[0];return p_a-p_b},sortnumeric:function(a,b){return a-b},openPDF:function(element,print){print=print||false;this.fluidbook._openFile(this.getPDF(),element,"pdf",this.getBookmarksCompacted()+".pdf",print)},getPDF:function(){return"https://workshop.fluidbook.com/s/e/"+this.fluidbook.datas.cid+"/"+this.getBookmarksCompacted()},getBookmarksCompacted:function(){this.bookmarks.sort(this.sortnumeric);var g=[];var rs=0;var re=0;for(var i=0;i<this.bookmarks.length;i++){var b=this.bookmarks[i];if(b>this.fluidbook.contentlock.getMaxPage()){continue}if(rs===0){rs=re=b;continue}if(re+1===b){re=b;continue}if(rs===re){g.push(""+rs)}else{g.push(rs+"-"+re)}rs=re=b}if(rs!==0){if(rs===re){g.push(""+rs)}else{g.push(rs+"-"+re)}}return g.join(",")},addGroup:function(from,nb,name){var to=Math.min(from+(nb-1),this.fluidbook.datas.pages);for(var i=from;i<=to;i++){this._pagesToGroup[i]=this._groups}this._groupNames[this._groups]=name;this._groupOrder.push(this._groups);this._groups++},completeGroups:function(){for(var i=1;i<=this.fluidbook.datas.pages;i++){if(this._pagesToGroup[i]===undefined||this._pagesToGroup[i]===null){this._pagesToGroup[i]=this._groups;this._groupOrder.push(this._groups);this._groups++}}},getPreviousGroup:function(group){var o=this.getOrderGroup(group);if(o===-1){return false}o--;return this._groupOrder[o]},getNextGroup:function(group){var o=this.getOrderGroup(group);if(o===-1){return false}o++;return this._groupOrder[o]},getOrderGroup:function(group){return this._groupOrder.indexOf(group)},getGroupName:function(groupId){var res="";if(this._groupNames[groupId]!==undefined){res=this._groupNames[groupId]}if(res===""){var pages=this.getPagesOfGroup(groupId);res=this.fluidbook.physicalToVirtual(pages[0]);if(pages.length===1){return res}res+=" - "+this.fluidbook.physicalToVirtual(pages[pages.length-1])}return res},getPagesOfGroup:function(groupId){var res=[];for(var i=1;i<=this.fluidbook.datas.pages;i++){if(this._pagesToGroup[i]===groupId){res.push(i)}}return res},getPagesNumberInGroup:function(groupId){return this.getPagesOfGroup(groupId).length},getBookmarkedGroups:function(onlyBookmarked){if(onlyBookmarked===undefined){onlyBookmarked=true}var res=[];var nb;var groupId;for(var i=1;i<=this.fluidbook.contentlock.getMaxPage();){if(this.isBookmarked(i)||!onlyBookmarked){groupId=this.getGroupOfPage(i);nb=this.getPagesNumberInGroup(groupId);res.push({page:i,nb:nb,name:this.getGroupName(groupId)});i+=nb;continue}i++}return res},getOrderedGroups:function(){return this.getBookmarkedGroups(false)},getGroupOfPage:function(page){return this._pagesToGroup[page]},getNextPageInGroupOfPage:function(page){var group=this.getLinkedPages(page);var index=group.indexOf(page);if(index===group.length-1){return false}return group[index+1]},getPreviousPageInGroupOfPage:function(page){var group=this.getLinkedPages(page);var index=group.indexOf(page);if(index===0){return false}return group[index-1]},getNextGroupCover:function(page){var group=this.getGroupOfPage(page);group=this.getNextGroup(group);if(group===false){return false}return this.getCoverOfGroup(group)},getPreviousGroupCover:function(page){var group=this.getGroupOfPage(page);group=this.getPreviousGroup(group);if(group===false){return false}return this.getCoverOfGroup(group)},getCoverOfGroup:function(group){var pages=this.getPagesOfGroup(group);if(pages.length){return pages[0]}return false},hasNextPageInGroup:function(page){var group=this.getGroupOfPage(page);var pages=this.getPagesOfGroup(group);var i=pages.indexOf(page);if(i===pages.length-1){return false}return true},getLinkedPages:function(page){var group=this.getGroupOfPage(page);if(group===-1||isNaN(group)){return[]}return this.getPagesOfGroup(group)},addBookmark:function(page,cornersOnly){if(cornersOnly===undefined){cornersOnly=false}var pages=this.getLinkedPages(page);var page;for(i in pages){page=pages[i];if(!cornersOnly){this.bookmarks.push(page)}}if(!cornersOnly){this.updateBookmarks();if(pages.length>0){this.fluidbook.stats.track(4,pages[0])}}},setCornersEnabled:function(page,enabled){var bookmarks=$('.bookmark[data-page="'+page+'"]');if(enabled){$(bookmarks).attr("data-enabled","enabled").attr("data-tooltip",this._txtRemove)}else{$(bookmarks).attr("data-enabled",null).attr("data-tooltip",this._txtAdd)}},disableCorners:function(){$(".bookmark").attr("data-enabled",null).attr("data-tooltip",this._txtAdd)},toggleBookmark:function(page){var pages=this.getLinkedPages(page);var add=false;for(var i in pages){var p=pages[i];if(this.bookmarks.indexOf(p)>-1){add=true;break}}if(add){this.removeBookmark(page)}else{this.addBookmark(page)}},removeBookmark:function(page){var pages=this.getLinkedPages(page);for(var i in pages){this.bookmarks=arrayRemove(this.bookmarks,pages[i])}this.updateBookmarks()},updateBookmarks:function(){this.saveBookmarks();var $this=this;this.disableCorners();$.each(this.bookmarks,function(k,v){$this.setCornersEnabled(v,true)})},saveBookmarks:function(){this.fluidbook.cache.set("bookmarks",this.bookmarks)},getSavedBookmarks:function(){if(this.fluidbook.cache.isset("bookmarks")){return this.fluidbook.cache.get("bookmarks")}return[]},isBookmarked:function(page){return this.bookmarks.indexOf(page)>-1},getBookmarkForPage:function(pageNr,allwaysAtRight){if(allwaysAtRight===undefined){allwaysAtRight=false}var bookmarks="";var side;if(allwaysAtRight){side=this.fluidbook.l10n.dir==="ltr"?"right":"left"}else{side=pageNr%2===0?"left":"right";if(this.fluidbook.l10n.dir==="rtl"){side=side==="left"?"right":"left"}}if(side==="left"&&pageNr===0){return""}bookmarks+='<a href="#" class="bookmark '+side+'" data-page="'+pageNr+'"';if(this.isBookmarked(pageNr)){bookmarks+=' data-enabled="enabled"';bookmarks+=' data-tooltip="'+this._txtRemove+'"'}else{bookmarks+=' data-tooltip="'+this._txtAdd+'"'}bookmarks+=">"+getSpriteIcon("bookmark-corner")+"</a>";return bookmarks},getView:function(title,downloadLabel){var c=this.getIndex(false,false,downloadLabel);if(c===false){return c}if(title===""){title=this.fluidbook.l10n.__("bookmarks")}var index='<div class="bookmarkssub"><div class="caption">'+this.fluidbook.menu.closeButton()+"<h2>"+title+"</h2>";index+="</div>";index+=c;index+="</div>";return index},hasBookmarkedPages:function(all){if(all===undefined){all=false}if(all===false){groups=this.getBookmarkedGroups()}else{groups=this.getOrderedGroups()}if(groups.length===0){return false}return true},getIndex:function(all,onlyGroup,downloadLabel){if(all===undefined){all=false}var groups;if(all===false){groups=this.getBookmarkedGroups()}else{groups=this.getOrderedGroups()}if(groups.length===0){return false}if(downloadLabel===""){downloadLabel=this.fluidbook.l10n.__("download")}var contentClass="content";if(this.fluidbook.mobilefirst.enabled){contentClass+=" noscroll mobilefirst"}var index='<div class="'+contentClass+'"><div class="indexView bookmarkView"><div class="indexViewHolder">';if(onlyGroup===undefined||!onlyGroup){for(var g=0;g<groups.length;g++){var group=groups[g];var pages=[];for(var i=0;i<group.nb;i++){pages.push(group.page+i)}var dim=this.fluidbook.menu.index.getThumbDimensions(group.page);index+='<div class="doubleThumb simple left"'+dim.doublethumb+' page="'+group.page+'" data-pages="'+pages.join(",")+'">';index+='<div class="thumb left"'+dim.thumb+'><a href="#/page/'+group.page+'">'+this.fluidbook.loader.getThumbImage(group.page)+'</a><span class="number"'+dim.pagenumber+">"+group.name+"</span>";if(this.fluidbook.bookmarks.enabled){index+=this.fluidbook.bookmarks.getBookmarkForPage(group.page,true,true)}index+="</div>";index+="</div>"}}else{var group=groups[this.getGroupOfPage(onlyGroup)];var pages=[];for(var i=0;i<group.nb;i++){pages.push(group.page+i)}for(i in pages){var p=pages[i];var dim=this.fluidbook.menu.index.getThumbDimensions(p);index+='<div class="doubleThumb simple left"'+dim.doublethumb+' page="'+p+'" data-pages="'+p+'">';index+='<div class="thumb left"'+dim.thumb+'><a href="#/page/'+p+'">'+this.fluidbook.loader.getThumbImage(p)+'</a><span class="number"'+dim.pagenumber+">"+this.fluidbook.physicalToVirtual(p)+"</span>";if(this.fluidbook.bookmarks.enabled){index+=this.fluidbook.bookmarks.getBookmarkForPage(p,true,true)}index+="</div>";index+="</div>"}}index+="</div></div>";index+='<div class="fonctions">';if(this.fluidbook.datas.friend&&this.fluidbook.datas.bookmarkSendEnable){index+='<a class="send" href="#">'+this.fluidbook.l10n.__("send")+"</a>"}if(this.fluidbook.datas.print||this.fluidbook.datas.pdf){index+='<a class="download" href="#">'+downloadLabel+"</a>"}index+="</div>";index+="</div>";return index},getPrintPreview:function(){if(!this.hasBookmarkedPages()){return'<div class="thumb left blank"><div class="blank-mask"></div></div>'}var maxImages=3,count=0,html="",groups=this.getBookmarkedGroups();html+='<div class="bookmark-thumbnails">';for(var g=0;g<groups.length;g++){count++;var group=groups[g];html+='<div class="thumb">'+this.fluidbook.loader.getThumbImage(group.page);if(this.fluidbook.bookmarks.enabled){html+=this.fluidbook.bookmarks.getBookmarkForPage(group.page,true,true)}html+="</div>";if(count>=maxImages){break}}html+="</div>";return html}};function FluidbookBackground(fluidbook){this.fluidbook=fluidbook;this.hasLinks=false;this.init()}FluidbookBackground.prototype={init:function(){if(this.fluidbook.datas.links.background!==undefined&&(this.fluidbook.datas.repeat!==Fluidbook.REPEAT||this.fluidbook.tabs.hasTabs())&&this.fluidbook.datas.links.background!==""&&this.fluidbook.datas.mobileIgnoreBackgroundLinks===false){$("#background").prepend('<div class="links">'+this.fluidbook.datas.links.background+"</div>");this.hasLinks=true}},resize:function(w,h){if(!this.hasLinks){return}if(this.fluidbook.tabs.hasTabs()){return}var left,top,iw,ih;if(this.fluidbook.datas.backgroundImageDimensions===undefined){}else if(this.fluidbook.datas.repeat===Fluidbook.NONE){iw=this.fluidbook.datas.backgroundImageDimensions.width;ih=this.fluidbook.datas.backgroundImageDimensions.height;if(this.fluidbook.datas.backgroundHAlign===Fluidbook.LEFT){left=0}else if(this.fluidbook.datas.backgroundHAlign===Fluidbook.RIGHT){left=w-iw}else if(this.fluidbook.datas.backgroundHAlign===Fluidbook.CENTER){left=(w-iw)/2}if(this.fluidbook.datas.backgroundVAlign===Fluidbook.TOP){top=0}else if(this.fluidbook.datas.backgroundVAlign===Fluidbook.BOTTOM){top=h-ih}else if(this.fluidbook.datas.backgroundVAlign===Fluidbook.MIDDLE){top=(h-ih)/2}$("#background .links").css({top:top,left:left})}else if(this.fluidbook.datas.repeat===Fluidbook.RATIO||this.fluidbook.datas.repeat===Fluidbook.STRETCH){var origin=["0%","0%","0%"];origin=["0%","0%","0%"];var bw=parseFloat(this.fluidbook.datas.backgroundImageDimensions.width);var bh=parseFloat(this.fluidbook.datas.backgroundImageDimensions.height);var translateX=0;var translateY=0;var css={};var scaleX=w/bw;var scaleY=h/bh;if(this.fluidbook.datas.repeat===Fluidbook.RATIO){if(scaleX<scaleY){var l=(scaleX-scaleY)*bw;if(this.fluidbook.datas.backgroundHAlign===Fluidbook.CENTER){css.left=l/2}else if(this.fluidbook.datas.backgroundHAlign===Fluidbook.LEFT){css.left=0}}else{css.left=0}scaleX=scaleY=Math.max(scaleX,scaleY)}if($("#background .links .tabslink").length>0){var transform={scaleX:scaleX,scaleY:scaleY,translateX:translateX,translateY:translateY,origin:origin};$("#background .links").transform(transform).css(css)}}}};function FluidbookPad(fluidbook){this.fluidbook=fluidbook;this.enabled=this.fluidbook.datas.mobileNavigationType=="tab";if(this.enabled){this.init()}}FluidbookPad.prototype={init:function(){this.initEvents()},initEvents:function(){var $this=this;$(document).on("click","#down",function(){if($this.fluidbook.help.isVisible()){return}if($(this).hasClass("right")){$this.fluidbook.goNextChapter()}else{$this.fluidbook.goNextChapterPage()}return false})},getTransitionAxis:function(currentPage,nextPage){var linkedPages=this.fluidbook.bookmarks.getLinkedPages(currentPage);if(linkedPages.indexOf(nextPage)==-1){return"x"}return"y"}};function FluidbookAudioDescription(fluidbook){this.fluidbook=fluidbook;this.dataPath="data/audiodescription/";this.container=$("#interface");this.buttonClass="audio-description-button";this.audioSupport=Modernizr.audio;if(this.audioSupport){try{this.audioplayerLeft=new Audio;this.audioplayerRight=new Audio}catch(err){this.audioSupport=false}}this.buttonLeft=document.createElement("a");this.buttonLeft.setAttribute("class",this.buttonClass+" left");this.buttonLeft.setAttribute("href","#");this.buttonRight=document.createElement("a");this.buttonRight.setAttribute("class",this.buttonClass+" right");this.buttonRight.setAttribute("href","#");if(this.audioSupport){this.init()}}FluidbookAudioDescription.prototype={init:function(){this.container.append(this.buttonLeft);this.container.append(this.buttonRight);var $this=this,buttons=$("."+this.buttonClass);buttons.attr("data-tooltip",this.fluidbook.l10n.__("listen to the page"));buttons.hide();this.audioplayerLeft.addEventListener("ended",this.endPlaying.bind(this,this.audioplayerLeft));this.audioplayerRight.addEventListener("ended",this.endPlaying.bind(this,this.audioplayerRight));$(document).on("click","."+this.buttonClass,function(e){var player,button;if($(this).hasClass("right")){player=$this.audioplayerRight;button=$($this.buttonRight)}else{player=$this.audioplayerLeft;button=$($this.buttonLeft)}if($(this).hasClass("playing")){$this.pauseAllPlayers();return false}$this.pauseAllPlayers();button.addClass("playing");player.play();e.preventDefault()});key("ctrl+shift+left",this.playSide.bind(this,"left"));key("ctrl+shift+right",this.playSide.bind(this,"right"));this.setupPages()},setupPages:function(){this.pauseAllPlayers();var pageNumLeft=this.fluidbook.getPhysicalPageNumberOfSide("left",true);var pageNumRight=this.fluidbook.getPhysicalPageNumberOfSide("right",true);if(this.hasAudio(pageNumLeft)){$(this.buttonLeft).show();this.audioplayerLeft.src=this.getAudio(pageNumLeft)}else{$(this.buttonLeft).hide()}if(this.hasAudio(pageNumRight)&&!this.fluidbook.displayOnePage){$(this.buttonRight).show();this.audioplayerRight.src=this.getAudio(pageNumRight)}else{$(this.buttonRight).hide()}},pauseAllPlayers:function(){if(!this.audioSupport){return}this.audioplayerLeft.pause();this.audioplayerRight.pause();$("."+this.buttonClass).removeClass("playing")},endPlaying:function(player){this.pauseAllPlayers();player.currentTime=0},hasAudio:function(page){if(!this.audioSupport){return false}if(this.fluidbook.datas.audiodescription===undefined)return false;return this.fluidbook.datas.audiodescription[page]!==undefined},getAudio:function(page){return this.dataPath+this.fluidbook.datas.audiodescription[page]},playSide:function(side){var targetSelector="."+this.buttonClass+"."+side,pageNum=this.fluidbook.getPageNumberOfSide(side);if(this.hasAudio(pageNum)){$(targetSelector).trigger("click")}}};function FluidbookPrivacy(fluidbook){this.fluidbook=fluidbook;this.storageKey="cookieConsent";if(location.host=="workshop.fluidbook.com"){this.storageKey="fluidbook."+fluidbook.datas.id+"."+this.storageKey}if(!this.fluidbook.datas.cookieConsent){return}this.init()}FluidbookPrivacy.prototype={init:function(){if(localStorage.getItem(this.storageKey)==="1"){return}var $this=this;$(this.fluidbook).on("fluidbook.splash.hide",function(){$this.displayCookieConsent()})},displayCookieConsent:function(){if($("#cookieConsent").length>0){return}var $this=this;$("body").append('<div id="cookieConsent"><a href="#" class="close"></a><p>'+this.fluidbook.datas.cookieConsentMessage+"</p></div>");if(this.fluidbook.datas.cookieConsentAutoclose>0){setTimeout(function(){$this.close()},this.fluidbook.datas.cookieConsentAutoclose*1e3)}$(document).on("touchend click","#cookieConsent a.close",function(){$this.close();return false})},close:function(){$("#cookieConsent").fadeOut();localStorage.setItem(this.storageKey,"1")}};function FluidbookZoom(fluidbook){this.fluidbook=fluidbook;this.zoom=0;this.originpct=["0%","0%"];this.originpx=["0px","0px"];this.max=this.fluidbook.datas.zoomw/100;this.transition=true;this.enabled=true;this.shadowTimeout;this.hideInterfaceTimeout;this.init()}FluidbookZoom.prototype={init:function(){if(this.fluidbook.mobilefirst.enabled){this.disable();return}var $this=this;this.setTransition(true);$(this.fluidbook).on("fluidbook.zoom.out.end",function(){$("#z").addClass("nozoom")});$("#z").on(this.fluidbook.support.transitionEndEvent,function(){$this.triggerEvent(($this.zoom===1?"out":"in")+".end")});$(this.fluidbook).on("fluidbook.zoom.out.end,fluidbook.zoom.in.end",function(){clearTimeout($this.shadowTimeout);if($this.zoom===1){$("#shadow").removeClass("hidden")}else{$("#shadow").addClass("hidden")}})},disable:function(){this.enabled=false;$("body").addClass("zoom-disabled")},triggerEvent:function(event){var e="fluidbook.zoom."+event;$(this.fluidbook).trigger(e)},setZoom:function(zoom,direction,end){var origZoom=this.zoom;if(end===undefined){end=false}if(direction===undefined){if(this.zoom>zoom){direction=-1}else{direction=1}}zoom=Math.max(Math.min(zoom,this.max),1);if(this.fluidbook.menu.viewMode()){zoom=1}if(end){if(direction===1){if(zoom<1.5){zoom=1.5;this.setTransition(true)}}else if(direction===-1){if(zoom<1.5){zoom=1;this.setTransition(true)}}}if(this.zoom===zoom){return}this.zoom=zoom;this.updateZoom();if(origZoom===1&&this.zoom>1){this.fluidbook.stats.track(2,this.fluidbook.currentPage)}},setTransition:function(transition){if(transition==undefined){transition=true}if(transition==false){$("#z").addClass("notransition").removeClass("transition").removeClass("transition-inertia")}else{$("#z").removeClass("notransition").removeClass("transition-inertia")}this.transition=transition},resetZoom:function(callback){if(this.zoom===1){if(callback){callback()}return}this.setZoom(1,-1);if(callback){setTimeout(function(){callback()},350)}},setOriginPct:function(x,y,force,inertia){if(force==undefined){force=false}if(inertia==undefined){inertia=false}x=Math.min(1,Math.max(0,x));y=Math.min(1,Math.max(0,y));this.originpct=[x,y];if(!force&&this.fluidbook.zoom.zoom==1){return}else{if(inertia){$("#z").addClass("transition-inertia")}else{$("#z").removeClass("transition-inertia")}$("#z").transform({origin:[this.originpct[0]*100+"%",this.originpct[1]*100+"%"]},{preserve:true})}},setOrigin:function(x,y,force,inertia){if(force===undefined){force=false}if(inertia===undefined){inertia=false}x=Math.max(0,Math.min(x,this.fluidbook.resize.ww));y=Math.max(0,Math.min(y,this.fluidbook.resize.hh));this.originpx=[x,y];if(!force&&this.fluidbook.zoom.zoom===1){return}if(inertia){$("#z").addClass("transition-inertia")}else{$("#z").removeClass("transition-inertia")}$("#z").transform({origin:[this.originpx[0]+"px",this.originpx[1]+"px"]},{preserve:true})},updateZoom:function(){var $this=this;clearTimeout(this.shadowTimeout);if(this.zoom>1){$("#z").removeClass("nozoom")}var animation={scale:[this.zoom,this.zoom]};if(this.desktopScale==1){animation.origin=["50%","50%"]}if(!this.fluidbook.search.resultsNavActive()){var hiddenElements=$("header,footer,#interface,#links a.bookmark");if(this.zoom!==1){if(this.fluidbook.help!==undefined){this.fluidbook.help.hide()}$("#shadow").addClass("hidden");if(!$("header").hasClass("hidden")){$(hiddenElements).addClass("hidden");this.hideInterfaceTimeout=setTimeout(function(){$(hiddenElements).hide()},500)}}else{clearTimeout(this.hideInterfaceTimeout);$(hiddenElements).show().removeClass("hidden");this.shadowTimeout=setTimeout(function(){$("#shadow").removeClass("hidden")},250)}}$("#z").transform(animation,{preserve:true});$this.triggerEvent((this.zoom===1?"out":"in")+".start");if(!this.transition){$this.triggerEvent((this.zoom===1?"out":"in")+".end")}if(this.zoom>1){$("body").addClass("zoomed")}else{$("body").removeClass("zoomed")}return true}};function FluidbookMenu(fluidbook){this.fluidbook=fluidbook;this.init()}FluidbookMenu.prototype={init:function(){this.index=new FluidbookIndex(this.fluidbook);var $this=this;$(document).on("click",".mview .back, #viewOverlay",function(){$this.closeView(function(){},true);return false});if(this.fluidbook.datas.displayChaptersAtStart){$(this.fluidbook).on("fluidbook.splash.hide",function(){$this.openView("chapters","","",function(){})})}},viewMode:function(){return $("#view .mview").length>0},openView:function(view,param1,param2,callback){var $this=this;setTimeout(function(){$this._openView(view,param1,param2,callback)},10)},_openView:function(view,param1,param2,callback){var $this=this;var preload={index:"thumbnails",search:"thumbnails",bookmark:"thumbnails",video:"extras"};if(!OFFLINEAPP&&this.fluidbook.gal!=null&&preload[view]!==undefined){this.fluidbook.displayLoader();this.fluidbook.resetWaiters();var w=this.fluidbook.addWaiter(true);this.fluidbook.gal.downloadAndCall(preload[view],function(){if($this.fluidbook.waiterActive(w)){$this.__openView(view,param1,param2,callback)}})}else{this.__openView(view,param1,param2,callback)}},__openView:function(view,param1,param2,callback){try{if(typeof param1==="string"){param1=decodeURIComponent(param1)}}catch(e){}try{if(typeof param2==="string"){param2=decodeURIComponent(param2)}}catch(e){}var $this=this;var camelView=view.charAt(0).toUpperCase()+view.substr(1);var cb=function(){$this.openingView(callback,view)};if(view==="index"){this.openIndex(this.fluidbook.l10n.__("overview"),undefined,true,cb)}else if(view==="video"){this.openVideo(param1,cb)}else if(view==="audio"){this.openAudio(param1,cb)}else if(view==="webvideo"){this.openWebVideo(param1,param2,cb)}else if(view==="multimedia"){this.openMultimedia(param1,cb)}else if(view==="chapters"){if(param1===undefined||param1==="undefined"||param1===null||param1===""){param1="null"}this.openChapters(param1,cb)}else if(view==="archives"){this.openArchives($("#nav #archives").data("tooltip"),cb)}else if(view==="text"){this.openText(param1,cb)}else if(view==="slideshow"){this.openSlideshow(param1,cb)}else if(view==="iframe"){this.openIframe(param1,cb)}else if(view==="search"){this.openSearch(param1,cb)}else if(view==="print"){this.openPrint(cb)}else if(view==="download"){this.openDownload(cb)}else{this["open"+camelView](param1,param2,cb)}},openSearch:function(q,cb){this.fluidbook.nav.openSearch(q,cb)},openingView:function(callback,view){var $this=this;this.fluidbook.resize.resizeView();this.fluidbook.tooltip.hideTooltip();var mview=$("#view .mview:last");if(!Modernizr.ftouch){$(mview).find(".content:not(.noscroll)").perfectScrollbar()}else{$(mview).find(".content:not(.noscroll)").css({overflowY:"auto"})}var from={y:"-200px",opacity:0};var to={y:"0px",opacity:1};if(mview.hasClass("fs")){from.y="0px"}else if(view!=="search"){this.showOverlay()}$(mview).addClass("notransition").css({opacity:from.opacity}).transform({translateY:from.y}).show().removeClass("notransition");setTimeout(function(){$(mview).css({opacity:to.opacity}).transform({translateY:to.y})},20);setTimeout(function(){if(callback!=undefined){callback()}$this.fluidbook.hideLoader();resize()},420)},openMultimedia:function(multimedia,callback){var a=$('a[href="#/multimedia/'+multimedia+'"]');var markup=decodeURIComponent($(a).attr("data-multimedia"));var view='<div class="caption">'+this.closeButton()+"</div>";var links="";var animateLinks=false;var uid=$(a).closest("[data-id]").data("id");if(this.fluidbook.datas.links["link_"+uid]!==undefined){links='<div class="links">'+this.fluidbook.datas.links["link_"+uid]+"</div>";animateLinks=true}view+='<div class="content"><div class="multimediaHolder"><div class="multimediaScale">';view+=markup+links;view+="</div></div></div>";var read=multimedia.indexOf("r_")==0?' data-readmode="1"':"";$("#view").append('<div class="mview" dir="ltr" data-menu="multimedia"'+read+">"+view+"</div>");if(animateLinks){this.fluidbook.links.animateLinks($("#view"),500)}if(callback!=undefined){callback()}},openIframe:function(iframe,callback){var $this=this;var href="#/iframe/"+iframe;var a=$('a[href="'+href+'"]');if($(a).length===0){a=this.fluidbook.links.getLinkByHref(href)}var markup=decodeURIComponent($(a).attr("data-iframe"));var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content noscroll"><div class="iframeHolder">';view+=markup;view+="</div></div>";$("#view").append('<div class="mview" dir="ltr" data-menu="iframe">'+view+"</div>");if(callback!=undefined){callback()}var t=$("#view .iframeContainer").data("type");$("#view").find(".iframeHolder,.content,.mview").attr("data-type",t);$("#view .iframeContainer iframe").on("load",function(){try{var doc=getIframeDocument(this);doc.body.style.maxWidth="100%";doc.body.style.overflow="auto"}catch(e){}$this.resize()})},openVideo:function(video,callback){var a=$('a[href="#/video/'+video+'"]');var markup=decodeURIComponent($(a).attr("data-video"));var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content">';view+=markup;view+="</div>";$("#view").append('<div class="mview" data-menu="video">'+view+"</div>");this.fluidbook.stats.track(11);this.fluidbook.initVideos();var $this=this;var times=[250,500,750,1e3,1250];$.each(times,function(k,v){setTimeout(function(){$this.resize()},v)});if(callback!=undefined){callback()}this.fluidbook.hideLoader(5)},openSlideshow:function(slideshow,callback){var a=$('a[href="#/slideshow/'+slideshow+'"]');var markup=decodeURIComponent($(a).attr("data-slideshow"));var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content">';view+=markup;view+="</div>";$("#view").append('<div class="mview" data-menu="slideshow">'+view+"</div>");var $this=this;var times=[250,500,750,1e3,1250];$.each(times,function(k,v){setTimeout(function(){$this.resize()},v)});if(callback!=undefined){callback()}this.fluidbook.hideLoader(5)},closeButton:function(c){if(c==undefined){c=""}else{c=" "+c}return'<a href="#/closeview" class="button back'+c+'">'+getSpriteIcon("interface-close")+"</a>"},openAudio:function(audio,callback){var a=$('a[href="#/audio/'+audio+'"]');var markup=decodeURIComponent($(a).attr("data-audio"));var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content">';view+=markup;view+="</div>";$("#view").append('<div class="mview" data-menu="audio">'+view+"</div>");this.fluidbook.stats.track(11);var $this=this;var times=[250,500,750,1e3,1250];$.each(times,function(k,v){setTimeout(function(){$this.resize()},v)});if(callback!=undefined){callback()}},openWebVideo:function(service,video,callback){var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content">';if(service=="youtube"){view+='<iframe class="webvideo" type="text/html" src="https://www.youtube.com/embed/'+video+'?autoplay=1&modestbranding=1&rel=0&html5=1" frameborder="0"></iframe>'}else if(service=="dailymotion"){view+='<iframe class="webvideo" type="text/html" src="https://www.dailymotion.com/embed/video/'+video+'?autoplay=1&logo=0&related=0&html5=1" width="100%" frameborder="0"></iframe>'}else if(service=="vimeo"){view+='<iframe class="webvideo" type="text/html" src="https://player.vimeo.com/video/'+video+'?autoplay=1" width="100%" frameborder="0"></iframe>'}else if(service=="brightcove"){view+='<iframe class="webvideo" type="text/html" src="./video/brightcove.html?pid='+this.fluidbook.datas.brightcovePlayerId+"&pk="+encodeURIComponent(DATAS.brightcovePlayerSecret)+"&vid="+video+'" width="100%" frameborder="0"></iframe>'}view+="</div>";$("#view").append('<div class="mview" data-menu="webvideo">'+view+"</div>");this.fluidbook.stats.track(11);if(callback!=undefined){callback()}},openLocales:function(p1,p2,callback){var view='<div class="caption">'+this.closeButton()+"<h2>Select language</h2></div>";view+='<div class="content">';view+='<ul class="chapters localesList">';var $this=this;Object.keys(this.fluidbook.l10n.multilang).forEach(function(langCode){var v=this.fluidbook.l10n.multilang[langCode];var url=v.url;if(url.substr(0,3)=="../"&&!$this.fluidbook.datas.alwaysHTML5&&!$this.fluidbook.datas.standalone&&!$this.fluidbook.support.offline){url="../"+url}var name=$this.fluidbook.l10n.getLanguageName(langCode);var c="";if($this.fluidbook.datas.phonegap){view+='<li data-level="0"><a href="#" data-id="'+url+'" data-locale="'+v.lang+'" class="level0 appswitchlocale"><img src="images/flags/'+v.flag+'.png" alt="'+name+'" /><span dir="'+$this.fluidbook.l10n.getLanguageDirection(langCode)+'">'+name+"</span></a></li>"}else{view+='<li data-level="0"><a href="'+url+'" class="level0"><img src="images/flags/'+v.flag+'.png" alt="'+name+'" /><span dir="'+$this.fluidbook.l10n.getLanguageDirection(langCode)+'">'+name+"</span></a></li>"}});view+="</ul>";view+="</div>";$("#view").append('<div class="mview" data-menu="locales">'+view+"</div>");if(callback!=undefined){callback()}},openCart:function(p1,p2,callback){this.fluidbook.cart.instance.openMenu(p1,p2,callback)},openShare:function(p1,p2,callback){this.fluidbook.share.openShare(p1,p2,callback)},openBookmarkHelp:function(p1,p2,callback){var message=__("you don't have any bookmark. to add a bookmark, please click on the icon in the page corner");var view='<div><div class="caption">'+this.fluidbook.menu.closeButton()+"<h2></h2>";view+="</div>";view+='<div class="content">';view+="<p>"+message+"</p>";view+='<div class="visual">';if(this.fluidbook.mobilefirst.enabled){var dim=this.fluidbook.loader.getPageDimensions(2,147);var h=' style="height:'+dim.height+'px;"';view+='<div class="doubleThumb"'+h+'><div class="thumb right"'+h+">"+this.fluidbook.loader.getThumbImage(2,true)+'<div class="circle"></div><a href="#" class="bookmark right" data-enabled="enabled">'+getSpriteIcon("bookmark-corner")+"</a></div></div>"}else{view+='<div class="doubleThumb"><div class="thumb left">'+this.fluidbook.loader.getThumbImage(2,true)+'<div class="circle"></div><a href="#" class="bookmark left" data-enabled="enabled">'+getSpriteIcon("bookmark-corner")+'</a></div><div class="thumb right">'+this.fluidbook.loader.getThumbImage(3,true)+'<div class="circle"></div><a href="#" class="bookmark right" data-enabled="enabled">'+getSpriteIcon("bookmark-corner")+"</a></div></div>"}view+="</div>";view+="";view+="</div>";view+="</div>";$("#view").append('<div class="mview" data-menu="bookmarks-help">'+view+"</div>");if(callback!=undefined){callback()}},openBookmark:function(p1,p2,callback){if(!this.fluidbook.bookmarks.hasBookmarkedPages()){return this.openBookmarkHelp(p1,p2,callback)}var title="";var downloadLabel="";try{title=p1.title}catch(e){}try{downloadLabel=p1.downloadLabel}catch(e){}if(title==undefined){title=""}if(downloadLabel==undefined){downloadLabel=""}var view=this.fluidbook.bookmarks.getView(title,downloadLabel);$("#view").append('<div class="mview" data-menu="bookmarks">'+view+"</div>");if(callback!=undefined){callback()}},openChapters:function(submenu,callback){if(this.fluidbook.datas.externalChaptersHTML!=""){this.openExternalChapters(callback);return}if(this.fluidbook.chapters==undefined){this.fluidbook.chapters=new FluidbookChapters(this.fluidbook,this.fluidbook.datas.chapters)}if(submenu==undefined){submenu="null"}var v=this.fluidbook.chapters.getView(submenu);var menuId="mview-chapters-"+v.sub;var c="";if(this.fluidbook.datas.chaptersCaptionDisplay===false){c+=" h0"}var view='<div class="caption'+c+'">'+this.closeButton();if(this.fluidbook.datas.chaptersCaptionDisplay!==false){view+="<h2>"+v.title+"</h2>"}view+="</div>";view+='<div class="content">';view+=v.view;view+="</div>";var color="";if(v.color!="default"){color=" c_"+v.color}$("#view").append('<div id="'+menuId+'" class="mview'+color+'" data-menu="chapters">'+view+"</div>");this.fluidbook.chapters.removeItemsAfterMaxPage();if(callback!=undefined){callback()}this.fluidbook.stats.track(14)},openExternalChapters:function(callback){var view='<div class="caption">'+this.closeButton()+"</div>";view+='<div class="content"><div class="multimediaHolder"><div class="multimediaScale">';view+='<iframe data-width="'+this.fluidbook.datas.externalChaptersSize.width+'" data-height="'+this.fluidbook.datas.externalChaptersSize.height+'" width="'+this.fluidbook.datas.externalChaptersSize.width+'" height="'+this.fluidbook.datas.externalChaptersSize.height+'" src="data/chapters/index.html" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" onmousewheel=""></iframe>';view+="</div></div></div>";var read=' data-readmode="1"';$("#view").append('<div class="mview" dir="ltr" data-menu="externalchapters"'+read+">"+view+"</div>");if(callback!=undefined){callback()}this.fluidbook.stats.track(14)},openIndex:function(title,group,closeAll,callback){this.index.openIndex(title,group,closeAll,callback)},openArchives:function(title,callback){var archives='<div class="caption">'+this.closeButton()+"<h2>"+title+"</h2></div>";archives+='<div class="image" id="archivesview"><img src="data/images/'+this.fluidbook.datas.externalArchives+'" /><div class="links">'+this.fluidbook.datas.links.archives+"</div></div>";$("#view").append('<div class="mview archives" data-menu="archives">'+archives+"</div>");if(callback!=undefined){callback()}},openText:function(text,callback){var styleMatches=text.match(/\<style\>([^\<]*)<\/style>/);var style="";if(styleMatches!==undefined&&styleMatches!==null&&styleMatches.length>1){style=styleMatches[1].replace(/\s/g,"")}text=text.replace(/\<style\>([^\<]*)<\/style>/g,"");var t='<div class="caption">'+this.closeButton()+"<h2></h2></div>";t+='<div class="content"><div class="text" style="'+style+'">'+text+"</div></div>";$("#view").append('<div class="mview" data-menu="text">'+t+"</div>");if(callback!=undefined){callback()}},openPrint:function(callback){var printDialogue='<div class="caption">'+this.closeButton()+"<h2>"+__("print")+"</h2></div>";printDialogue+=this.fluidbook.printing.getView();$("#view").append('<div class="mview" data-menu="print">'+printDialogue+"</div>");$('.print-dialogue .print-option:first-of-type input[type="radio"]').prop("checked",true);if(callback!=undefined){callback()}},openDownload:function(callback){var downloadDialogue='<div class="caption">'+this.closeButton()+"<h2>"+__("download")+"</h2></div>";downloadDialogue+=this.fluidbook.printing.getView("download");$("#view").append('<div class="mview" data-menu="download">'+downloadDialogue+"</div>");$('.print-dialogue .print-option:first-of-type input[type="radio"]').prop("checked",true);if(callback!=undefined){callback()}},closeView:function(callback,all,animate){if(callback===undefined){callback=function(){}}var currentHash=window.location.hash;window.location.hash="/page/"+this.fluidbook.currentPage;if(window.location.hash==currentHash){this._closeView(callback,all,animate)}},_closeView:function(callback,all,animate){this.hideOverlay();var $this=this;if(all==undefined){all=false}if(animate==undefined){animate=true}all=all||$("#view .mview").length<=1;if(!this.viewMode()){callback();return}var mview=$("#view .mview:last");if(all){var s=$("#view .mview:not(:last)");this.fluidbook.video.killVideosIn(s);$(s).remove()}if(mview.length>0){$(mview).css("opacity",0);setTimeout(function(){$this.fluidbook.video.killVideosIn(mview);mview.remove();callback()},420)}if(all){$("#main").show();$("body").removeClass("view")}resize()},quickCloseView:function(){$("#view .mview").remove()},resize:function(ww,hh){if(ww==undefined){ww=this.fluidbook.resize.ww}if(hh==undefined){hh=this.fluidbook.resize.hh}var m=$(".mview");var w=ww*.6;var h=hh*.8;var forceHeight=false;var fullscreen=m.data("fullscreen")==="1";var nw,nh;var hasCaption=true;$("#viewOverlay").css({width:ww,height:hh});switch(m.data("menu")){case"chapters":hasCaption=this.fluidbook.datas.chaptersCaptionDisplay!==false;this.fluidbook.datas.chaptersColumns=Math.max(1,Math.min(6,this.fluidbook.datas.chaptersColumns));if(this.fluidbook.datas.chaptersCascade){this.fluidbook.datas.chaptersColumns=1}var w;if(this.fluidbook.datas.chaptersColumns>1){w=this.fluidbook.datas.chaptersColMaxWidth*this.fluidbook.datas.chaptersColumns}else{w=Math.min(450,this.fluidbook.datas.chaptersColMaxWidth)}fullscreen=w>=ww*.9;if(fullscreen){w=ww}if(this.fluidbook.datas.chaptersCascade){h=hh*.8;forceHeight=true}if(this.fluidbook.datas.chaptersColumns>1){if(w<this.fluidbook.datas.chaptersColMaxWidth*this.fluidbook.datas.chaptersColumns){$(".mview[data-menu=chapters] ul.chapters").addClass("onecolumn")}else{$(".mview[data-menu=chapters] ul.chapters").removeClass("onecolumn")}}break;case"text":w=parseInt(this.fluidbook.datas.textPopupWidth);fullscreen=w>=ww*.9;break;case"index":var indexWidth=Math.floor(ww/230)*230;$(".indexViewHolder").css("width",indexWidth);if(this.fluidbook.mobilefirst.enabled){var cw=10+130*this.fluidbook.datas.pages;fullscreen=cw>=ww*.9;if(!fullscreen){w=Math.max(400,cw+30)}}else{fullscreen=true}break;case"share":w=200;break;case"locales":w=300;break;case"iframe":w=ww*.8;if(parseInt(this.fluidbook.datas.iframePopupMaxWidth)>0){w=Math.min(w,parseInt(this.fluidbook.datas.iframePopupMaxWidth))}h=hh*.8;if(ww<800){w=ww;h=hh;fullscreen=true}forceHeight=true;var iframe=$("#view .iframeHolder iframe");iframe.css("width",w);try{var doc=getIframeDocument(iframe);doc.body.style.maxWidth=w+"px"}catch(e){}if(!fullscreen){var ih=-1;try{ih=$(iframe).get(0).contentWindow.document.body.getBoundingClientRect().bottom}catch(e){ih=-1}if(ih>0){h=Math.min(ih,h)}}break;case"cart":w=1024;if(ww<1024){fullscreen=true}break;case"bookmarks":if(this.fluidbook.mobilefirst.enabled){var indexWidth=Math.floor(ww/230)*230;$(".indexViewHolder:visible").css("width",indexWidth);var cw=30+10+130*this.fluidbook.bookmarks.getBookmarkedGroups(true).length;fullscreen=cw>=ww*.75||ww<=520;if(!fullscreen){w=Math.max(400,cw)}}else{var max=Math.floor(ww*.8/120)*120+40;w=Math.min(max,Math.max(m.find(".doubleThumb").length,4)*120+40);if(ww<520){fullscreen=true}}break;case"bookmarks-help":w=420;if(ww<520){fullscreen=true}break;case"webvideo":var w=Math.max(ww*.8,600);h=w/16*9;forceHeight=true;if(w>ww*.9){fullscreen=true;w=ww}break;case"video":var maxVideoScale=1;var video=m.find(".video-js");nw=parseInt($(video).data("width"));nh=parseInt($(video).data("height"));forceHeight=true;var w=Math.max(ww*.8);var h=Math.max(hh*.8);if(ww<600){w=ww;h=hh;fullscreen=true}var s=Math.min(w/nw,h/nh,maxVideoScale);if(!fullscreen){w=nw*s;h=nh*s}else{}m.find(".videoContainer").css({width:w,height:h});break;case"multimedia":case"externalchapters":var iframe=m.find("iframe,img");var readmode=m.data("readmode")==1;nw=parseInt($(iframe).data("width"));nh=parseInt($(iframe).data("height"));var w=Math.max(ww*.8);var h=Math.max(hh*.8);if(ww<600){w=ww;h=hh;fullscreen=true}var s,x,y;if(readmode){w=Math.max(w*.5,nw);forceHeight=false;if(w>ww*.9){fullscreen=true;w=ww;h=hh;s=ww/nw}else{s=w/nw}x=0;y=0}else{forceHeight=true;var ms=parseFloat(m.find("iframe").data("scale"));if(isNaN(ms)){ms=2}s=Math.min(ms,w/nw,h/nh);if(iframe.is("img")||fullscreen){s=Math.min(1,s)}if(!fullscreen){w=nw*s;h=nh*s}x=(w-nw*s)/2;y=(h-nh*s)/2}if(s<1){var css={overflow:"hidden",width:nw*s,height:nh*s,top:y,left:x,position:"absolute"};m.find(".multimediaHolder").css(css)}else{m.find(".multimediaHolder").css({position:"",overflow:"",width:"",height:"",top:"",left:""})}m.find(".multimediaScale").css({width:nw,height:nh,overflow:"hidden"}).transform({scale:[s,s],origin:[0,0]}).css("text-align","left");break;case"slideshow":var w=Math.max(ww*.8);var h=Math.max(hh*.8);if(ww<800){w=ww;h=hh;fullscreen=true;$(".fb-slideshow").addClass("fb-slideshow-fullscreen")}else{$(".fb-slideshow").removeClass("fb-slideshow-fullscreen")}var optimizeHeight=h<600;if(optimizeHeight){$(".fb-slideshow-thumbnails").addClass("fb-slideshow-nothumbs");m.find(".back").addClass("small")}else{$(".fb-slideshow-thumbnails").removeClass("fb-slideshow-nothumbs");m.find(".back").removeClass("small")}var headerHeight=m.find(".caption").outerHeight();var thumbnailsHeight=0;if(m.find(".fb-slideshow-thumbnails").length>0){thumbnailsHeight=m.find(".fb-slideshow-thumbnails").outerHeight()}var offset=0;if(optimizeHeight){offset=-headerHeight;headerHeight=0;thumbnailsHeight=0;var contentHeight=h;hasCaption=false}var slideMaxHeight=h-headerHeight-thumbnailsHeight;m.find(".content").css({top:offset});m.find(".fb-slideshow-slide").each(function(){$(this).css("height",slideMaxHeight);var captionHeight=$(this).find(".fb-slideshow-slide-caption").outerHeight()||0;$(this).find(".fb-slideshow-slide-image").css({"max-height":slideMaxHeight-captionHeight})});break;case"print":case"download":w=820;if(!this.fluidbook.datas.printFullBrochure){w=560}if(m.find(".print-dialogue").hasClass("compact")){w=500}if(ww<w){fullscreen=true}break;default:var maxWidth=1e4;if(m.data("maxwidth")!==null){maxWidth=parseInt(m.data("maxwidth"))}w=Math.min(w,maxWidth);break}var captionHeight=m.find(".caption").outerHeight();css={};ccss={};if(fullscreen){w=ww;h=hh;forceHeight=true;css.top=0;css.left=0;m.addClass("fs")}else{m.removeClass("fs")}css.maxWidth=css.minWidth=css.width=w;css.maxHeight=h;if(hasCaption){ccss.maxHeight=h-captionHeight}else{ccss.maxHeight=h}if(forceHeight){css.minHeight=css.height=h;if(contentHeight===undefined){if(hasCaption){ccss.minHeight=ccss.height=h-captionHeight}else{ccss.minHeight=ccss.height=h}}else{ccss.minHeight=ccss.height=contentHeight}}else{ccss.minHeight=ccss.height=css.minHeight=css.height=""}m.css(css);m.find(".content").css(ccss).attr("data-height",ccss.height);if(!fullscreen){m.css({top:(hh-m.outerHeight())/2,left:(ww-m.outerWidth())/2})}if(!Modernizr.ftouch){m.find(".content:not(.noscroll)").perfectScrollbar("update")}$("#popinOverlay>div").each(function(){$(this).css({top:(hh-$(this).outerHeight())/2,left:(ww-$(this).outerWidth())/2})});if($("#archivesview").length==1){var w=this.fluidbook.datas.filesInfos.archives.width;var ratio=$("#archivesview img").width()/w;$("#archivesview .links").transform({scale:[ratio]})}if(m.data("menu")==="index"||m.data("menu")==="bookmarks"){this.fluidbook.mobilefirst.resizeIndex()}},resizePopupAudios:function(){$(".mview audio").each(function(){var w=$(window).width()-200;var h=30;$(this).css({height:h,width:w,display:"block",margin:"40px auto"})})},hideOverlay:function(){$("#viewOverlay").css("opacity",0);setTimeout(function(){$("#viewOverlay").hide()},400)},showOverlay:function(){$("#viewOverlay").css("opacity",0).show();setTimeout(function(){$("#viewOverlay").css("opacity",1)},10)}};function FluidbookSound(fluidbook){this.fluidbook=fluidbook;if(this.fluidbook.datas.soundTheme===""||!Modernizr.audio||this.fluidbook.support.iOS||this.fluidbook.support.android){this.enabled=false;this.on=false;return}this.enabled=true;this.on=!!this.fluidbook.datas.soundOn;this.audios={};this.playing=null;this.preloadSounds();this.initEvents()}FluidbookSound.prototype={initEvents:function(){var $this=this;$(this.fluidbook).on("fluidbook.ready",function(){$this.init()});$(document).on("click touchend",".icon-sound-off,.icon-sound-on",function(){$this.toggle();return false});$(this.fluidbook).on("fluidbook.page.change.start",function(e,page,data){$this.playSoundForPage(data)});$(document).one("click","*",function(){try{$this.audios["empty"].play();$this.playing=$this.audios["empty"]}catch(e){}return true})},preloadSounds:function(){var sounds=["empty","cover-flip","page-flip-1","page-flip-2"];var $this=this;$.each(sounds,function(k,v){var src;if(v==="empty"){src="sound/"+v+".mp3"}else{src="data/sounds/"+v+".mp3"}var s=new Audio(src);s.volume=1;s.preload="auto";$this.audios[v]=s})},init:function(){if(!this.on){this.disable()}else{this.enable()}},toggle:function(){if(this.on){this.disable()}else{this.enable()}},enable:function(){this.on=true;$(".icon-sound-off").hide();$(".icon-sound-on").show()},disable:function(){this.on=false;$(".icon-sound-on").hide();$(".icon-sound-off").show()},playSoundForPage:function(data){if(!this.enabled||!this.on||data.transition<3){return}var page=data.page;if(page%2===1){page--}var last=this.fluidbook.contentlock.getMaxPage();if(last%2===1){last++}var sound="";if(data.turningPages.indexOf(1)>=0||data.turningPages.indexOf(last)>=0){sound="cover-flip"}else{sound="page-flip-"+Math.round(Math.random()+1)}var transitionDuration=this.fluidbook.pagetransitions.getTransitionDuration(page);if(transitionDuration===0){return}var seek=0;if(transitionDuration<.6){seek=.6-transitionDuration}try{this.audios[sound].volume=1;if(this.audios[sound].fastSeek!==undefined){this.audios[sound].fastSeek(seek)}else{this.audios[sound].currentTime=seek}this.audios[sound].play()}catch(e){console.log(e)}}};function FluidbookContentLock(fluidbook){this.fluidbook=fluidbook;this.maxPage;this.linksActions={};this.locks=this.fluidbook.datas.content_lock}FluidbookContentLock.prototype={init:function(){var $this=this;key("⌘+alt+u, ctrl+alt+u",function(){$this.setMaxPage()});this.maxPage=this.getNextLockPage();if(this.maxPage<=0){this.maxPage=this.fluidbook.datas.pages}},getNextLockPage:function(){var res=0;$.each(this.locks,function(k,v){if(v.unlocked===1){return true}res=k;return false});return parseInt(res)},setMaxPage:function(p,allowbackwards){var currentMaxPage=this.maxPage;if(allowbackwards===undefined){allowbackwards=false}if(p===undefined||p<=0){p=this.fluidbook.datas.pages}if(!allowbackwards&&p<this.maxPage){return}this.maxPage=Math.min(p,this.fluidbook.datas.pages);if(currentMaxPage===this.maxPage){return}$(this.fluidbook).trigger("fluidbook.maxpage.set",[this.maxPage]);this.updateMaxPage()},getMaxPage:function(){return this.maxPage},updateMaxPage:function(){if(this.fluidbook.currentPage>this.maxPage){this.fluidbook.setCurrentPage(this.maxPage)}var $this=this;$.each(this.locks,function(k,v){if($this.maxPage>k){$this.locks[k].unlocked=1}});this.fluidbook.hideUnnecessaryButtons();resize()},addAction:function(linkId,action){if(this.linksActions[linkId]===undefined){this.linksActions[linkId]=[]}if(this.linksActions[linkId].indexOf(action)===-1){this.linksActions[linkId].push(action)}this.testConditions()},testConditions:function(){var $this=this;var change=false;$.each(this.locks,function(k,v){if(v.unlocked===1){return}if(v.conditions.length===0){return}var conditionsToObserve=v.conditions.length;$.each(v.conditions,function(i,c){if($this.testCondition(c)){conditionsToObserve--}});if(conditionsToObserve===0){$this.locks[k].unlocked=1;change=true}});if(change||this.getNextLockPage()!==this.getMaxPage()){this.setMaxPage(this.getNextLockPage(),false)}},testCondition:function(condition){var linkId=condition[0];var action=condition[1];if(this.linksActions[linkId]===undefined){return false}return this.linksActions[linkId].indexOf(action)>=0},unlockCurrentPage:function(){var $this=this;var change=false;$.each(this.locks,function(k,v){if(v.unlocked===1){return}var currentPage=$this.fluidbook.currentPage;if(currentPage%2===1){currentPage--}var lockPage=k;if(lockPage%2===1){lockPage--}if(currentPage!==lockPage){return}$this.locks[k].unlocked=1;change=true;return true});if(change){this.setMaxPage(this.getNextLockPage(),false)}}};function FluidbookScorm(fluidbook){this.fluidbook=fluidbook;this.linksToComplete=[];this.manageScore=this.fluidbook.datas.scorm_score;this.init()}FluidbookScorm.prototype={init:function(){var $this=this;if(this.fluidbook.datas.scorm_variables.linkstocomplete){this.linksToComplete=this.fluidbook.datas.scorm_variables.linkstocomplete.split(",")}$(document).on("click","a",function(){var link=$(this).closest(".link[data-id]");if(link.length>0){var id=link.data("id");$this.completeLink(id)}return true});$(this.fluidbook).on("fluidbook.links.ready",function(){$this.hideScormLinks()});if(this.fluidbook.datas.scorm_enable&&window.initScorm!==undefined){initScorm()}$(this.fluidbook).on("fluidbook.page.change.end",function(){if($this.fluidbook.currentPage==$this.fluidbook.datas.pages&&$this.fluidbook.datas.scorm_complete_on_last_page){scormMarkAsComplete()}})},hideScormLinks:function(){if(this.isActive()){return}$('.link[data-scorm="1"]').hide()},completeLink:function(id){var index=this.linksToComplete.indexOf(id);if(index>-1){this.linksToComplete.splice(index,1)}},linksCompleted:function(){return this.linksToComplete.length==0},isActive:function(){if(!this.fluidbook.datas.scorm_enable){return false}if(undefined!==window.FORCE_SCORM&&window.FORCE_SCORM){return true}return pipwerks.SCORM.API.isFound},openLinkIfCompleteOrDisplayImage:function(openLink,openImage){var $this=this;var id=this.linksCompleted()?openLink:openImage;if(!Array.isArray(id)){id=[id]}$.each(id,function(k,v){$this.fluidbook.links.triggerLinkById(v)})}};function Fluidbook3DFlip(fluidbook){var $this=this;this.fluidbook=fluidbook;this.camera=null;this.scene=null;this.renderer=null;this.controls=null;this.action=null;this.clock=new THREE.Clock;this.mesh=null;this.plane=null;this.sizePlane=null;this.loader=null;this.animation=null;this._progressAnimation=0;this._pageRotation=0;this._callbackAfterNextRender=null;this.ready=false;this.performancesTestRunning=true;this.performancesFrames=0;this.performancesTestStart=null;this.performancesTestEnd=null;this.performancesMode="";this.benchmark={};this.textures=[];this.jcontainer=$("#flip3dcontainer");this.pw=this.fluidbook.resize.ww;this.ph=this.fluidbook.resize.hh;this.turnRunning=false;this.pi2=Math.PI*2;this.deg2rad=this.pi2/360;this.errorInitWebGL=false;try{this.testBenchmark(function(){$this.init()})}catch(e){this.errorInitWebGL=true;this.init()}}Fluidbook3DFlip.prototype={webglEnabled:function(){return!this.errorInitWebGL&&this.fluidbook.support.IE===0&&Modernizr.webgl},testBenchmark:function(cb){if(!this.webglEnabled()){cb()}var $this=this;try{var canvas=$this.jcontainer.find("canvas").get(0);var gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");var debugInfo=gl.getExtension("WEBGL_debug_renderer_info");var renderer=gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);if(this.fluidbook.datas.gupsc[renderer]!==undefined&&this.fluidbook.datas.gupsc[renderer]!==null){this.benchmark=this.fluidbook.datas.gupsc[renderer];cb()}else{$.ajax({url:"https://workshop.fluidbook.com/services/gup",dataType:"json",data:{gup:btoa(renderer)},success:function(data){$this.benchmark=parseInt(data);cb()},error:function(){cb()}})}}catch(e){console.log(e);cb()}},init:function(){var $this=this;$(this.fluidbook).on("fluidbook.resize",function(){$this.resize()});this.geometryScale=3;this.container=$(this.jcontainer).get(0);var mode;if($_GET["performance"]==null){mode="performancesTest"}else{var map={1:"highPerf",2:"lowPerf",3:"veryLowPerf"};mode=map[$_GET["performance"]]}this.init3D(mode);this.animate(true);$(this.fluidbook).on("fluidbook.ready",function(){$this.guessCameraZoom(true)});key("⌘+alt+w, ctrl+alt+w",function(){$this.debugGPU()});this.resize()},_guessTestMode:function(){var testMode="";if(!this.webglEnabled()){return"veryLowPerf"}if(isNaN(this.benchmark)||this.benchmark===0){return"lowPerf"}var b=60*(this.benchmark/3580);if(b>50){return"highPerf"}else if(b>30){return"lowPerf"}return"veryLowPerf"},guessTestMode:function(){var mode=this._guessTestMode();if(mode==="highPerf"){if(this.fluidbook.support.edge||this.fluidbook.support.android||this.fluidbook.support.macOs||this.fluidbook.support.iOS){return"lowPerf"}}return mode},debugGPU:function(){console.log("Performances mode",this.performancesMode);console.log("Render engine",this.renderEngine);try{var canvas=this.jcontainer.find("canvas").get(0);var gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");debugInfo=gl.getExtension("WEBGL_debug_renderer_info");vendor=gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);renderer=gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);console.log("GPU vendor",vendor);console.log("GPU renderer",renderer);console.log(gl)}catch(e){}console.log("Quality ratio: "+this.qualityRatio);console.log("Triangles: "+this.triangles);console.log("Animation time: "+this.animationTime);console.log("Antialias: "+this.antialias);console.log("Lights enabled: "+this.enableLight);console.log("Shadows enabled: "+this.enableShadow)},init3D:function(performanceMode){try{this.dispose3D()}catch(e){}this.performancesMode=performanceMode;if(this.performancesMode==="disable"){return}if(this.performancesMode==="performancesTest"){var testMode=this.guessTestMode();if(testMode==="highPerf"){this.lowPerf=this.veryLowPerf=false}else if(testMode==="lowPerf"){this.lowPerf=true;this.veryLowPerf=false}else if(testMode==="veryLowPerf"){this.veryLowPerf=this.lowPerf=true}}else{if(this.performancesMode===undefined||this.performancesMode==="auto"){this.veryLowPerf=this.fluidbook.support.IE>0;this.lowPerf=!Modernizr.webgl||this.veryLowPerf||this.fluidbook.support.edge||this.fluidbook.support.android||this.fluidbook.support.macOs||this.fluidbook.support.iOS}else if(this.performancesMode==="lowPerf"){this.lowPerf=true;this.veryLowPerf=false}else if(this.performancesMode==="highPerf"){this.lowPerf=this.veryLowPerf=false}else if(this.performancesMode==="veryLowPerf"){this.veryLowPerf=this.lowPerf=true}}this.renderEngine="webgl";if(this.veryLowPerf){this.renderEngine="canvas"}if(this.fluidbook.support.android||this.fluidbook.support.iOS){this.renderEngine="webgl"}if(!this.webglEnabled()){this.renderEngine="canvas"}this.enableLight=!this.lowPerf&&this.renderEngine==="webgl";this.enableShadow=!this.lowPerf&&this.enableLight&&this.renderEngine==="webgl";this.antialias=false;this.animationTime=parseFloat(this.fluidbook.datas.mobileTransitionDuration);if(this.veryLowPerf){this.qualityRatio=.8;this.triangles=3;this.animationTime/=1.5}else if(this.lowPerf||this.veryLowPerf){this.qualityRatio=1.2;this.triangles=3;this.animationTime/=1.25}else{this.qualityRatio=1.5;this.triangles=50}this.animationTime=Math.max(.4,this.animationTime);this.pixelRatio=window.devicePixelRatio*this.qualityRatio;this.frames=0;return this.initThree()},initThree:function(){if(this.scene!==null){return}this.scene=new THREE.Scene;if(this.enableLight){this.scene.add(new THREE.AmbientLight(16777215,1.5))}var zoom=.8;var far=24e3*zoom;var near=1e3;this.camera=new THREE.PerspectiveCamera(20,1,near,far);this.camera.zoom=zoom;this.camera.position.z=8873*2*zoom;this.camera.updateProjectionMatrix();if(this.enableLight){var lightIntensity=.3;var light=new THREE.SpotLight(16777215,lightIntensity,0,1);light.position.set(2e3,0,1.72503*1e4);if(this.enableShadow){light.castShadow=true;light.shadow.mapSize.width=512;light.shadow.mapSize.height=512;light.shadow.camera.near=near;light.shadow.camera.far=far;light.shadow.bias=-.0075;light.shadow.radius=3}this.scene.add(light)}var geometry;if(this.enableShadow){geometry=new THREE.PlaneGeometry(this.fluidbook.datas.width*this.geometryScale*2,this.fluidbook.datas.height*this.geometryScale,1,1,true);var shadowTexture=new THREE.ShadowMaterial({color:0,side:THREE.FrontSide,overdraw:.5,opacity:.1});this.shadowPlane=new THREE.Mesh(geometry,[shadowTexture]);this.shadowPlane.receiveShadow=true;this.shadowPlane.translateZ(-1);this.scene.add(this.shadowPlane)}this.geometryWidth=this.fluidbook.datas.width*this.geometryScale;this.geometryHeight=this.fluidbook.datas.height*this.geometryScale;geometry=new THREE.PlaneGeometry(this.geometryWidth,this.geometryHeight,Math.round(this.triangles*5),Math.round(this.triangles),true);var geometry2=geometry.clone();var geometry3=new THREE.PlaneGeometry(this.geometryWidth,this.geometryHeight,1,1,true);geometry.merge(geometry2,(new THREE.Matrix4).makeRotationY(Math.PI),1);var roughness=.8;var meshSettings={side:THREE.FrontSide};if(this.renderEngine==="canvas"){meshSettings.overdraw=true}if(this.enableLight){meshSettings.roughness=roughness;this.textures=[new THREE.MeshStandardMaterial(meshSettings),new THREE.MeshStandardMaterial(meshSettings)]}else{this.textures=[new THREE.MeshBasicMaterial(meshSettings),new THREE.MeshBasicMaterial(meshSettings)]}geometry.translate(this.fluidbook.datas.width*this.geometryScale*.5,0,0);this.plane=new THREE.Mesh(geometry,this.textures);this.plane.castShadow=this.enableShadow;this.plane.receiveShadow=false;this.sizePlane=new THREE.Mesh(geometry3);this.sizePlane.castShadow=this.sizePlane.receiveShadow=false;this.sizePlane.visible=false;this.scene.add(this.sizePlane);this.scene.add(this.plane);this.modifier=new ModifierStack(this.plane);this.bendAngle=250;this.bendOffset=.65;this.bendForceMultiplicator=1;var ratio=this.fluidbook.datas.width/this.fluidbook.datas.height;if(ratio>1.2){this.bendAngle=15;this.bendOffset=.4;this.bendForceMultiplicator=1.3}else if(ratio>=1){this.bendAngle=20;this.bendOffset=.4;this.bendForceMultiplicator=1.2}this.bend=new Bend(0,this.bendOffset,this.bendAngle*.0174533);this.bend.constraint=-1;this.modifier.reset();this.modifier.addModifier(this.bend);var rendererOptions={antialias:this.antialias,alpha:true};if(this.renderEngine==="webgl"){try{this.renderer=new THREE.WebGLRenderer(rendererOptions)}catch(e){this.errorInitWebGL=true;return this.init3D("performancesTest")}}else if(this.renderEngine==="canvas"){this.renderer=new THREE.CanvasRenderer(rendererOptions)}if(this.enableShadow){this.renderer.shadowMap.enabled=true;this.renderer.shadowMap.type=THREE.PCFSoftShadowMap}this.renderer.setClearColor(0,0);this.renderer.setPixelRatio(this.pixelRatio);this.renderer.setSize(this.pw,this.ph);this.jcontainer.empty();this.container.appendChild(this.renderer.domElement);this.initAnimations()},dispose3D:function(){if(this.scene===undefined){return}if(this.renderer!==null){this.renderer.dispose()}this.disposeHierarchy(this.scene,this.disposeNode);this.scene=null;this.camera=null;this.modifier=null;this.textures=null;this.renderer=null},setBendAngle:function(a){this.bend.angle=a*.0174533},clean:function(){this.disposeTextures()},initAnimations:function(){var force=.65*this.bendForceMultiplicator*1.15;var easeOut=Power0.easeOut;var easeIn=Power0.easeIn;this.tlright=new TimelineMax;this.tlright.add(TweenMax.fromTo(this.bend,.5,{force:0},{force:force*-1,ease:easeIn}));this.tlright.add(TweenMax.fromTo(this.bend,.5,{force:force*-1},{force:0,ease:easeOut}));this.tlright.add(TweenMax.fromTo(this,1,{_pageRotation:-0},{_pageRotation:-180,ease:easeIn}),0);this.tlright.pause();this.tlright.progress(0);this.tlleft=new TimelineMax;this.tlleft.add(TweenMax.fromTo(this.bend,.5,{force:0},{force:force,ease:easeIn}));this.tlleft.add(TweenMax.fromTo(this.bend,.5,{force:force},{force:0,ease:easeOut}));this.tlleft.add(TweenMax.fromTo(this,1,{_pageRotation:-180},{_pageRotation:-0,ease:easeIn}),0);this.tlleft.pause();this.tlleft.progress(0)},prepareTurn:function(turning,callback){var $this=this;this.prepareTexture(turning.flip[1],function(t1){$this.prepareTexture(turning.flip[0],function(t2){$this.texturesLoaded(t1,t2,turning.dir,callback)})})},getPerformancesTestResult:function(){var time=(this.performancesEndTime.getTime()-this.performancesStartTime.getTime())/1e3;return this.performancesFrames/time},performancesTest:function(callback){var _cb;var $this=this;if(this.performancesMode!=="performancesTest"){_cb=callback}else{_cb=function(){$this.performancesEndTime=new Date;$this.adjustPerformancesSettings(callback)}}this.prepareTurn({flip:[1,2]},function(){$this.playTurn(1,function(){_cb()},1)})},adjustPerformancesSettings:function(callback){var $this=this;var newMode;var res=this.getPerformancesTestResult();console.log("perf test",res);if(this.fluidbook.support.iOS){if(res<45){newMode="disable"}}else{if(!this.lowPerf){if(res<5){newMode="disable"}else if(res<20){newMode="veryLowPerf"}else if(res<35){newMode="lowPerf"}else{newMode="highPerf"}}else if(this.veryLowPerf){if(res<30){newMode="disable"}else{newMode="veryLowPerf"}}else{if(res<10){newMode="disable"}else if(res<30){if(this.fluidbook.support.edge){newMode="disable"}else{newMode="veryLowPerf"}}else{newMode="lowPerf"}}}if(newMode!=="disable"){this.init3D(newMode);callback();this.prepareTurn({flip:[1,2]},function(){$this.playTurn(.1,function(){$this.prepareTurn({flip:[2,1]},function(){$this.playTurn(-1,function(){callback()},.1,0)})},1,0)})}else{this.fluidbook.support.transitions3dacc=false;callback()}},texturesLoaded:function(t1,t2,dir,callback){if(this.textures===undefined||this.textures===null||this.textures.length===0){console.warn("Texture object not ready. Waiting");var $this=this;setTimeout(function(){$this.texturesLoaded(t1,t2,dir,callback)},500);return}if(t1!=null){this.textures[0].map=t1}if(t2!=null){this.textures[1].map=t2}this.textures[0].needsUpdate=true;this.textures[1].needsUpdate=true;this.ready=true;this.resize();callback()},disposeTextures:function(){if(this.textures[0].map!==null){this.textures[0].map.dispose()}if(this.textures[1].map!==null){this.textures[1].map.dispose()}},prepareTexture:function(page,callback){if(null===THREE){return}this.fluidbook.loader.getTexture(page,function(image){var texture=new THREE.Texture(image);texture.needsUpdate=true;callback(texture)})},initTurn:function(dir){this.turnRunning=true;this.tlname=dir===1?"right":"left";this.tlleft.kill();this.tlright.kill();this.progressAnimation(0);this.animate(false);this.resize()},playTurn:function(dir,callback,timeScale,delay){if(!this.turnRunning){this.initTurn(dir)}if(timeScale===undefined){timeScale=1}var $this=this;if(delay===undefined){delay=this.fluidbook.support.iOS?.15:.06}TweenMax.fromTo(this,this.animationTime*timeScale,{progressAnimation:0},{progressAnimation:1,ease:Power0.easeIn,delay:delay,onStart:function(){if($this.performancesTestRunning){$this.performancesStartTime=new Date}},onComplete:function(){this.tlname="";callback();setTimeout(function(){$this.turnRunning=false},5)}})},animate:function(next){var $this=this;if(next){requestAnimationFrame(function(){$this.animate(true)})}var render=true;var visible;if(this._progressAnimation<1){if(this.turnRunning){if(this.performancesTestRunning){this.performancesFrames++}render=true;visible=true}else{render=false;visible=false}}else{render=false;visible=false}if(render){var d=(720+this._pageRotation)%360;this.plane.rotation.y=d*this.deg2rad;this.renderer.render(this.scene,this.camera);this.modifier&&this.modifier.apply()}this.setJContainerVisibility(visible);if(this._callbackAfterNextRender!==null){try{var c=this._callbackAfterNextRender;this._callbackAfterNextRender=null;c.apply()}catch(e){}}},setJContainerVisibility:function(visibility){var isVisible=this.jcontainer.css("display")==="block";if(isVisible===visibility){return}if(visibility){this.jcontainer.show()}else{this.jcontainer.hide()}},resize:function(){if(!this.ready){return}this.pw=this.fluidbook.resize.ww;this.ph=this.fluidbook.resize.hh;if(null!==THREE){this.camera.aspect=this.pw/this.ph;this.camera.updateProjectionMatrix()}var fw=$("#fluidbook").get(0).getBoundingClientRect();var left=(this.pw-fw.width)/2;this.jcontainer.css({left:left,width:fw.width,height:this.ph});this.jcontainer.find("canvas").css({left:-left,width:this.pw,height:this.ph});if(null!==THREE){this.renderer.setSize(this.pw,this.ph);this.guessCameraZoom()}},guessCameraZoom:function(){if(null===THREE){return}if(this._progressAnimation!==0&&this._progressAnimation!==1){return}this.camera.updateProjectionMatrix();var bookBox=$("#currentDoublePage").get(0).getBoundingClientRect();this.sizePlane.scale.x=this.sizePlane.scale.y=1;for(var i=0;i<25;i++){var bbox=(new THREE.Box3).setFromObject(this.sizePlane);var min=this.to2D(bbox.min);var max=this.to2D(bbox.max);var rect={x:Math.min(min.x,max.x),y:Math.min(min.y,max.y),width:Math.abs(min.x-max.x),height:Math.abs(min.y-max.y)};if(rect.width===0||rect.width>1e5){continue}var s=bookBox.width/2/rect.width;this.sizePlane.scale.x*=s;this.sizePlane.scale.y*=s;this.sizePlane.rotateX(0);if(this.enableShadow){this.shadowPlane.scale.x=this.sizePlane.scale.x;this.shadowPlane.scale.y=this.sizePlane.scale.y}bbox=(new THREE.Box3).setFromObject(this.sizePlane);min=this.to2D(bbox.min);max=this.to2D(bbox.max);rect={x:Math.min(min.x,max.x),y:Math.min(min.y,max.y),width:Math.abs(min.x-max.x),height:Math.abs(min.y-max.y)};this.sizePlane.translateY(rect.y-bookBox.top)}this.plane.position.y=this.sizePlane.position.y;this.plane.scale.x=this.sizePlane.scale.x;this.plane.scale.y=this.sizePlane.scale.y;if(this.enableShadow){this.shadowPlane.scale.x=this.sizePlane.scale.x;this.shadowPlane.scale.y=this.sizePlane.scale.y;this.shadowPlane.position.y=this.sizePlane.position.y;this.shadowPlane.rotateX(0)}},to2D:function(point){var widthHalf=.5*this.pw;var heightHalf=.5*this.ph;var vector=new THREE.Vector3(point.x,point.y,point.z);vector.project(this.camera);vector.x=vector.x*widthHalf+widthHalf;vector.y=-(vector.y*heightHalf)+heightHalf;return{x:vector.x,y:vector.y}},progressAnimation:function(val){if(arguments.length===0){return this._progressAnimation}if(this.tlname==="left"){this.tlleft.progress(val);this.tlleft.pause()}else if(this.tlname==="right"){this.tlright.progress(val);this.tlright.pause()}this._progressAnimation=val},disposeNode:function(node){if(node instanceof THREE.Mesh){if(node.geometry){node.geometry.dispose()}if(node.material){if(node.material instanceof THREE.MeshFaceMaterial){$.each(node.material.materials,function(idx,mtrl){if(mtrl.map)mtrl.map.dispose();if(mtrl.lightMap)mtrl.lightMap.dispose();if(mtrl.bumpMap)mtrl.bumpMap.dispose();if(mtrl.normalMap)mtrl.normalMap.dispose();if(mtrl.specularMap)mtrl.specularMap.dispose();if(mtrl.envMap)mtrl.envMap.dispose();mtrl.dispose()})}else{try{if(node.material.map)node.material.map.dispose();if(node.material.lightMap)node.material.lightMap.dispose();if(node.material.bumpMap)node.material.bumpMap.dispose();if(node.material.normalMap)node.material.normalMap.dispose();if(node.material.specularMap)node.material.specularMap.dispose();if(node.material.envMap)node.material.envMap.dispose();node.material.dispose()}catch(e){}}}}},disposeHierarchy:function(node,callback){if(node===null){return}for(var i=node.children.length-1;i>=0;i--){var child=node.children[i];this.disposeHierarchy(child,callback);callback(child)}}};function FluidbookChapters(fluidbook,chapters){this.fluidbook=fluidbook;this.chapters=chapters;this.style="classic";this.cascade=this.fluidbook.datas.chaptersCascade;this.cascadeEventsInited=false;if(this.fluidbook.datas.mobileChaptersStyle){this.style=this.fluidbook.datas.mobileChaptersStyle}this.html=[];this.titles={null:this.fluidbook.l10n.__("chapters")};this.colors={null:"default"};this.lastColor}FluidbookChapters.prototype={getView:function(sub){if(sub==undefined||sub==null||sub==""){sub="null"}if(this.html[sub]==null){this.makeView(sub)}return{sub:sub,view:this.html[sub],title:this.titles[sub],color:this.colors[sub]}},makeView:function(sub){this.makeClassicMenu(sub);if(this.cascade){this.makeCascadeMenu(sub)}},makeCascadeMenu:function(sub){var h=$(this.html[sub]);for(var i=3;i>=0;i--){$(h).find("li[data-level="+i+"]").each(function(){var siblings=$(this).nextUntil("li[data-level!="+(i+1)+"]","li[data-level="+(i+1)+"]");if(siblings.length>0){$(this).append("<ul></ul>");var nav=$(this).find("ul");$(nav).append(siblings);$(nav).hide()}})}this.html[sub]=$(h).get(0).outerHTML;if(!this.cascadeEventsInited){this.initCascadeEvents()}},initCascadeEvents:function(){this.cascadeEventsInited=true;if(this.style=="ina"){$(document).on("click","ul.chapters a .right",function(e){var p=$(this).data("page");if(p!=""){$this.fluidbook.setCurrentPage(p);e.stopImmediatePropagation();e.stopPropagation();e.preventDefault();return false}})}$(document).on("click","ul.chapters a",function(){var li=$(this).parent();var subnav=$(li).children("ul");if($(subnav).length){$(subnav).slideToggle();return false}else{return true}})},makeClassicMenu:function(sub){var $this=this;var base;var baseLevel=0;var nbItems=0;var columns=parseInt(this.fluidbook.datas.chaptersColumns);$.each(this.chapters,function(k,v){if(v.label==="--"||v.label==="++"){}else{nbItems++}});var perCol=Math.round(nbItems/columns);console.log(nbItems,perCol,columns);var forgetCut=false;var forceCut=false;var ignore=false;var columnId=0;var i=0;var columnsContainers=[];for(var j=0;j<columns;j++){columnsContainers[j]=[]}if(sub==="null"){base=this.chapters}else{var base=[];var vu=false;var level;$.each(this.chapters,function(k,v){if(v.label==="--"||v.label==="++"){}else{nbItems++}if(!vu){if(v.page=="#"+sub){vu=true;level=v.level;baseLevel=v.level+1;$this.titles[sub]=v.label;$this.colors[sub]=v.color}return true}else{if(v.level>level){base.push(v)}else{return false}}})}var $this=this;this.html[sub]='<ul class="chapters">';$.each(base,function(k,v){if(!forgetCut){forgetCut=v.label.indexOf("++")===0;if(forgetCut){return}}forceCut=v.label.indexOf("--")===0||v.label.indexOf("!!!")===0;ignore=forceCut||v.label.indexOf("++")===0;if(!forgetCut&&(columnId+1<columns&&(columns>1&&v.level===0&&i>perCol*.8||forceCut&&i>0))){i=0;columnId++}if(forgetCut){forgetCut=false}columnsContainers[columnId].push($this.addItem(v,baseLevel));if(!ignore){i++}});for(j=0;j<columns;j++){this.html[sub]+='<div class="column">'+columnsContainers[j].join("")+"</div>"}this.html[sub]+="</ul>"},addItem:function(chapter,baseLevel){if(baseLevel==undefined){baseLevel=0}if(chapter.label=="----"){return'<li class="separator"></li>'}var color=chapter.color;if(color==""){if(this.lastColor!=undefined){color=this.lastColor}}if(color!=""){this.lastColor=color}if(chapter.label.substr(0,3)=="!!!"){chapter.label=chapter.label.substring(3);chapter.level="-1"}chapter.label=chapter.label.replace(/\*([^\*]+)\*/g,"<strong>$1</strong>");var res="";var href;var level=chapter.level-baseLevel;var p="";var pdisplay="";if(chapter.page!=""){if(this.fluidbook.datas.chaptersPagesNumber==="virtual"){p=this.fluidbook.virtualToPhysical(chapter.page);pdisplay=chapter.page}else{p=chapter.page;pdisplay=this.fluidbook.physicalToVirtual(p)}if(p===false){p="";href=this.cascade?'href="#"':"nohref"}else{href='href="#/page/'+p+'"'}}else{href=this.cascade?'href="#"':"nohref"}if(this.style=="classic"){res+='<li data-level="'+level+'" data-page="'+p+'"><a '+href+' class="level'+level+'">'}else if(this.style=="ina"){res+='<li style="background-color:#'+color+';" data-level="'+level+'" data-page="'+p+'"><a '+href+' class="nodark level'+level+'">'}res+="<span>"+chapter.label+"</span>";if(href!="nohref"){res+='<div class="right" data-page="'+p+'">';if(this.style=="classic"){if(color==""){if(chapter.page!=""){res+='<span class="pagen">'+pdisplay+"</span>"}}else{res+='<div class="puce" style="background-color:#'+color+';">'+getSpriteIcon("interface-chevron")+"</div>"}}else{if(pdisplay!=""){res+='<span class="pagen">'+pdisplay+"</span>"}res+='<div class="puce noshadow"></div>'}res+="</div>"}res+="</a></li>";return res},removeItemsAfterMaxPage:function(){var max=this.fluidbook.contentlock.getMaxPage();$('.mview[data-menu="chapters"] ul.chapters li[data-page]').each(function(){var p=parseInt($(this).data("page"));if(isNaN(p)){return}if(p>max){$(this).remove()}});for(var i=0;i<=10;i++){$('.mview[data-menu="chapters"] ul.chapters li[data-page=""]').each(function(){if($(this).find("ul li").length==0){$(this).remove()}})}}};function FluidbookIndex(fluidbook){this.fluidbook=fluidbook;this.init()}FluidbookIndex.prototype={init:function(){this.normalHTML="";this.padHTML="";this.singleMode=this.fluidbook.singleMode},getView:function(group){if(this.fluidbook.pad.enabled){return this.getPadView(group)}else{return this.getNormalView()}},getPadView:function(group){return this.fluidbook.bookmarks.getIndex(true,group)},preloadThumbs:function(callback){this.fluidbook.loader.preloadThumbs(callback)},openIndex:function(title,group,closeAll,callback){var $this=this;this.fluidbook.displayLoader();this.preloadThumbs(function(){$this._openIndex(title,group,closeAll,callback)})},_openIndex:function(title,group,closeAll,callback){var c=!closeAll?" one":"";var index='<div class="caption">'+this.fluidbook.menu.closeButton(c)+"<h2>"+title+"</h2></div>";index+=this.getView(group);$("#view").append('<div class="mview" data-menu="index">'+index+"</div>");var cp=this.fluidbook.currentPage;if(!this.fluidbook.singleMode){if(cp%2===1){cp--}}$("#view").find('.doubleThumb[page="'+cp+'"]').addClass("here");this.fluidbook.bookmarks.updateBookmarks();if(callback!=undefined){callback()}},getNormalView:function(forceNormal){if(this.normalHTML===""){this.normalHTML=this._getNormalView()}return this.normalHTML},_getNormalView:function(forceNormal,height){var contentClass="content";if(forceNormal===undefined){forceNormal=false}if(height===undefined){height="auto"}var mobileFirst=this.fluidbook.mobilefirst.enabled&&!forceNormal;if(mobileFirst){contentClass+=" mobilefirst noscroll"}var res="";res+='<div class="'+contentClass+'"><div class="indexView">';if(this.fluidbook.datas.indexMessage!==""){res+='<div class="indexViewMessage">'+this.fluidbook.datas.indexMessage+"</div>"}res+='<div class="indexViewHolder">';var j=0;var ix1="",ix2="",ix="";var c="";var s1,s2;var increment=this.singleMode?1:2;var start=this.singleMode?1:0;for(var i=start;i<=this.fluidbook.contentlock.getMaxPage();i+=increment){var pages=[];j=i+1;ix1="";ix2="";var dim=this.getThumbDimensions(i,height);if(this.singleMode){c=" singlemode simple left ";s2=s1="left"}else{c="";if(this.fluidbook.l10n.dir==="ltr"){s1="left";s2="right"}else{s1="right";s2="left"}}if(i>0){ix1+='<div class="thumb '+s1+'"'+dim.thumb+'><a href="#/page/'+i+'">'+this.fluidbook.loader.getThumbImage(i,true,dim.thumb)+'</a><span class="number"'+dim.pagenumber+">"+this.fluidbook.physicalToVirtual(i)+"</span>";if(this.fluidbook.bookmarks.enabled){ix1+=this.fluidbook.bookmarks.getBookmarkForPage(i,true,mobileFirst)}pages.push(i);ix1+="</div>"}else{c=" simple "+s2}if(this.fluidbook.l10n.dir==="rtl"){s1="left";s2="right"}else{s1="right";s2="left"}if(!this.singleMode){if(j<=this.fluidbook.contentlock.getMaxPage()){ix2+='<div class="thumb '+s1+'"><a href="#/page/'+j+'">'+this.fluidbook.loader.getThumbImage(j,true,dim.thumb)+'</a><span class="number">'+this.fluidbook.physicalToVirtual(j)+"</span>";if(this.fluidbook.bookmarks.enabled){ix2+=this.fluidbook.bookmarks.getBookmarkForPage(j,true)}ix2+="</div>";pages.push(j)}else{c=" simple "+s2}if(j===1){pages.unshift(0)}ix=ix1+ix2}else{ix=ix1}res+='<div class="doubleThumb'+c+'" page="'+i+'" data-pages="'+pages.join(",")+'"'+dim.doublethumb+">"+ix;res+="</div>"}res+="</div></div></div>";return res},getThumbDimensions:function(page,height){var h="";var pnt="";var dth="";if(height===undefined){height="auto"}if(this.fluidbook.mobilefirst.enabled){var ph;if(height==="auto"){ph=this.fluidbook.loader.getPageDimensions(page,100).height}else{ph=height}h=' style="height:'+ph+'px;"';pnt=' style="top:'+(ph-5)+'px;" data-top="'+(ph-5)+'"';dth=' style="height:'+ph+'px;" data-height="'+ph+'" '}return{thumb:h,pagenumber:pnt,pageheight:ph,doublethumb:dth}}};function FluidbookLandingPage(fluidbook){this.fluidbook=fluidbook;this.hasLandingPage=false;this.init()}FluidbookLandingPage.prototype={init:function(){var $this=this;if(this.fluidbook.datas.landingPage!=undefined&&this.fluidbook.datas.landingPage!=""){this.hasLandingPage=true}setTimeout(function(){$this.setupLandingPage()},10)},setupLandingPage:function(){var $this=this;if(this.hasLandingPage){$("#landingPage").html('<iframe id="landingPageIframe" width="100%" height="100%" frameborder="0" src="data/landing-page/index.html"></iframe>');$("#landingPageIframe").on("load",function(){$(this).contents().on("click","a",$this.handleLink)})}},handleLink:function(event){if($(this).data("page")!==undefined){fluidbook.landingpage.hide();fluidbook.setCurrentPage(parseInt($(this).data("page")))}else if($(this).data("link")!==undefined){fluidbook.landingpage.hide();var link=$('[data-id="'+$(this).data("link")+'"] a');if(link.length>0){window.location.hash=link.attr("href")}}else{var href=$(this).attr("href");if(href.indexOf("#")===0){event.preventDefault();window.location.hash=href;fluidbook.landingpage.hide()}else{window.open(href,"_blank")}}event.preventDefault();return false},hide:function(){$("#landingPage").removeClass("visible")},show:function(){$("#landingPage").addClass("visible")},resize:function(w,h){if(!this.hasLandingPage){return}console.log("TODO: landing page resize...")}};function FluidbookSlideshow(fluidbook){this.fluidbook=fluidbook}FluidbookSlideshow.prototype={initSlideshow:function(id){var $slideshow=$("#"+id);var thumbnailsID=id+"_thumbnails";var $thumbnails;var showThumbnails=$slideshow.data("thumbnails")=="1";if($slideshow.length==0)return false;var openIndex=parseInt($slideshow.attr("data-open-index"));if(isNaN(openIndex)){openIndex=1}openIndex--;if(showThumbnails){$('<div class="fb-slideshow-thumbnails" id="'+thumbnailsID+'"></div>').appendTo($slideshow.parent());$thumbnails=$("#"+thumbnailsID);$slideshow.find("img").each(function(){var img=$(this).clone();$thumbnails.append(img)})}var slideshowParams={variableWidth:false,infinite:true,draggable:true};if(showThumbnails){slideshowParams.asNasFor="#"+thumbnailsID}var mainSlideshow=$slideshow.slick(slideshowParams);if(openIndex>0){$slideshow.slick("slickGoTo",openIndex,true)}if(showThumbnails){$thumbnails.slick({slidesToShow:6,asNavFor:"#"+id,focusOnSelect:true,variableWidth:true,arrows:false,draggable:true,swipeToSlide:true,infinite:true,centerMode:false})}}};function FluidbookPrint(fluidbook){this.fluidbook=fluidbook;this.init()}FluidbookPrint.prototype={init:function(){var $this=this;$(document).on("click","#confirmChoice",function(event){event.preventDefault();var element=$(this);var mode=element.data("mode");var print=mode==="print";var dynamicPDF="https://workshop.fluidbook.com/s/"+(print?"ep":"e")+"/"+$this.fluidbook.datas.cid+"/";var leftPageNumber=$this.fluidbook.getPhysicalPageNumberOfSide("left");var rightPageNumber=$this.fluidbook.getPhysicalPageNumberOfSide("right");var choice=$('input[name="pageChoice"]:checked').val();switch(choice){case"left":$this.fluidbook._openFilePreload(dynamicPDF+leftPageNumber,element,"pdf",leftPageNumber+".pdf",print);break;case"right":$this.fluidbook._openFilePreload(dynamicPDF+rightPageNumber,element,"pdf",rightPageNumber+".pdf",print);break;case"double":var pageRange=leftPageNumber+"-"+rightPageNumber;$this.fluidbook._openFilePreload(dynamicPDF+pageRange,element,"pdf",pageRange+".pdf",print);break;case"all":$this.fluidbook.openPDF(element,print);break;case"bookmarks":$this.fluidbook.bookmarks.openPDF(element,print);break;case"range":var rangeStart=$this.fluidbook.virtualToPhysical($("#pageRangeStart").val());var rangeEnd=$this.fluidbook.virtualToPhysical($("#pageRangeEnd").val());if(isNaN(rangeStart)||isNaN(rangeEnd)||rangeStart<1||rangeEnd>$this.fluidbook.datas.pages||rangeStart>rangeEnd){alert(__("Invalid page range. Please try again."));return false}var pageRange=rangeStart+"-"+rangeEnd;$this.fluidbook._openFilePreload(dynamicPDF+pageRange,element,"pdf",pageRange+".pdf",print);break;default:return false}});$(document).on("focus",".page-range-input",function(){$("#pageRange").prop("checked",true)});$(document).on("click",".bookmarks-option.disabled",function(event){event.preventDefault();$this.fluidbook.menu.quickCloseView();$this.fluidbook.menu.openView("bookmarkHelp")})},getView:function(mode){this.compact=this.fluidbook.mobilefirst.enabled;mode=mode==="download"?mode:"print";this.leftPageNumber=this.fluidbook.getPhysicalPageNumberOfSide("left");this.rightPageNumber=this.fluidbook.getPhysicalPageNumberOfSide("right");this.isFirstPage=this.fluidbook.currentPage===0;this.isLastPage=this.fluidbook.currentPage===this.fluidbook.datas.pages;this.isSinglePageMode=this.fluidbook.resize.orientation==="portrait";this.buttonLabels={print:__("print"),download:__("download")};var view="";view+='<div class="content">';view+='<div class="print-dialogue'+(this.compact?" compact":"")+'">';view+=this.getSinglePages();if(!this.isFirstPage&&!this.isLastPage&&!this.isSinglePageMode){view+='<div class="print-option">';if(!this.compact){view+='<label for="doublePage">';view+='<div class="doubleThumb">';view+='<div class="thumb left">';view+=this.fluidbook.loader.getThumbImage(this.leftPageNumber,true);view+="</div>";view+='<div class="thumb right">';view+=this.fluidbook.loader.getThumbImage(this.rightPageNumber,true);view+="</div>";view+="</div>";view+="</label>"}view+='<input type="radio" name="pageChoice" value="double" id="doublePage">';view+='<label for="doublePage" class="print-label-text">'+__("spread")+"</label>";view+="</div>"}if(this.fluidbook.datas.printFullBrochure){view+='<div class="print-option">';if(!this.compact){view+='<label for="allPages">';view+='<div class="doubleThumb">';view+='<div class="thumb left">';view+=this.fluidbook.loader.getThumbImage(1,true);view+="</div>";view+="</div>";view+="</label>"}view+='<input type="radio" name="pageChoice" value="all" id="allPages">';view+='<label for="allPages" class="print-label-text">'+__("entire brochure")+"</label>";view+="</div>"}if(this.fluidbook.datas.bookmark){var hasBookmarks=this.fluidbook.bookmarks.hasBookmarkedPages(),bookmarksDisabled=hasBookmarks?"":"disabled";view+='<div class="print-option bookmarks-option '+bookmarksDisabled+'">';if(!this.compact){view+='<label for="bookmarkedPages">';view+='<div class="doubleThumb bookmarks">';view+=this.fluidbook.bookmarks.getPrintPreview();view+="</div>";view+="</label>"}view+='<input type="radio" name="pageChoice" value="bookmarks" id="bookmarkedPages" '+bookmarksDisabled+">";view+='<label for="bookmarkedPages" class="print-label-text">'+__("bookmarks")+"</label>";view+="</div>"}view+='<div class="print-option blank"></div>';if(this.fluidbook.datas.printPageRange){var rangeStart=Math.max(this.leftPageNumber,1);var rangeEnd=Math.min(rangeStart+1,this.fluidbook.datas.pages);view+='<div class="print-option page-range-option">';view+='<input type="radio" name="pageChoice" value="range" id="pageRange">';view+='<label for="pageRange">';view+=__("From page");view+='<input class="page-range-input" type="text" id="pageRangeStart" value="'+this.fluidbook.physicalToVirtual(rangeStart)+'" autocomplete="off">';view+=__("to");view+='<input class="page-range-input" type="text" id="pageRangeEnd" value="'+this.fluidbook.physicalToVirtual(rangeEnd)+'" autocomplete="off">';view+="</label>";view+="</div>"}view+="</div>";view+='<div class="fonctions">';view+='<a id="confirmChoice" href="#" data-mode="'+mode+'">'+this.buttonLabels[mode]+"</a>";view+="</div>";view+="</div>";return view},getSinglePage:function(side,pageNumber,label,addMask){var sideMask="";if(addMask){sideMask=side==="left"?"right":"left"}var view="";view+='<div class="print-option">';if(!this.compact){view+='<label for="'+side+'Page">';view+='<div class="doubleThumb">';if(addMask&&sideMask==="left"){view+=this.getSideMask(sideMask)}view+='<div class="thumb '+side+'">';view+=this.fluidbook.loader.getThumbImage(pageNumber,true);view+="</div>";if(addMask&&sideMask==="right"){view+=this.getSideMask(sideMask)}view+="</div>";view+="</label>"}view+='<input type="radio" name="pageChoice" value="'+side+'" id="'+side+'Page">';view+='<label for="'+side+'Page" class="print-label-text">'+label+"</label>";view+="</div>";return view},getSideMask:function(side){return'<div class="thumb '+side+' blank"><div class="blank-mask"></div></div>'},getSinglePages:function(){var view="";var onePage=this.isSinglePageMode||this.isFirstPage||this.isLastPage;var leftPage=this.leftPageNumber;var rightPage=this.rightPageNumber;if(this.fluidbook.l10n.dir==="ltr"){if(this.isFirstPage){leftPage=this.rightPageNumber}view+=this.getSinglePage("left",leftPage,onePage?__("Current page"):__("left page"),!onePage);if(!onePage){view+=this.getSinglePage("right",rightPage,__("right page"),true)}}else{if(this.isFirstPage||this.isSinglePageMode){rightPage=this.leftPageNumber}view+=this.getSinglePage("right",rightPage,onePage?__("Current page"):__("right page"),!onePage);if(!onePage){view+=this.getSinglePage("left",leftPage,__("left page"),true)}}return view},advancedPrint:function(){if(this.fluidbook.datas.phonegap!==false){return false}if(this.fluidbook.support.offline&&!this.fluidbook.datas.offlineEnableAdvancedPrinting){return false}return true}};function FluidbookSecure(fluidbook){this.fluidbook=fluidbook;this.init()}FluidbookSecure.prototype={init:function(){if(this.fluidbook.datas.restrictPrintDownload!==""){if(window.location.search.indexOf(this.fluidbook.datas.restrictPrintDownload)===-1){if(this.fluidbook.datas.restrictPrint){this.fluidbook.datas.print=false}if(this.fluidbook.datas.restrictDownload){this.fluidbook.datas.pdf=false}if(this.fluidbook.datas.restrictSendBookmark){this.fluidbook.datas.bookmarkSendEnable=false}}}}};function FluidbookTabs(fluidbook){this.fluidbook=fluidbook;this.hasSVGTabs=false;this.visibility={};if(this.fluidbook.datas.svgTabs){this.hasSVGTabs=true;this.svgLoaded=false;this.cont;this.naturalDimensions={width:0,height:0};this.init()}else if(this.hasTabs()){this.initZip()}}FluidbookTabs.prototype={hasTabs:function(){return this.fluidbook.datas.tabsHTML5!==""},initZip:function(){},checkVisibility:function(types){var res=true;var $this=this;$.each(types,function(k,type){if($this.visibility[type]===false){res=false;return false}});return res},guessTabsWidth:function(bookScale){var fh=this.fluidbook.datas.height*bookScale;var tabsScale=fh/this.naturalDimensions.height;return this.linkWidth*tabsScale},guessBookScale:function(bookScale,aw,fww){if(!this.hasSVGTabs||!this.svgLoaded){return 1}if(this.checkVisibility(["portrait"])===false){this.changeVisibility("priority",true);return 1}var tabsWidth=this.guessTabsWidth(bookScale);var awt=aw-tabsWidth*2;var scale=awt/fww;var ratio=scale/bookScale;var reductionRatio=1-ratio;if(reductionRatio>this.priority){this.changeVisibility("priority",false);return 1}this.changeVisibility("priority",true);return Math.min(1,ratio)},init:function(){if($("#background .links").length===0){$("#background").append('<div class="links"></div>')}this.setOptions();$("#background .links").append('<div id="l_tabs" class="link tabslink multimedia '+this.align+'" data-id="tabs"></div>');this.element=$("#l_tabs");this.addLinks(this.fluidbook.datas.tabsPages);this.initTabs()},setOptions:function(){this.hideOnLastPage=this.fluidbook.datas.tabsHideOnLastPage;this.hideOnFirstPage=this.fluidbook.datas.tabsHideOnCover;this.hideOnPortrait=this.fluidbook.datas.tabsHideOnPortrait;this.hideOnZoom=this.fluidbook.datas.tabsHideOnZoom;this.hideWhenOverlapingArrows=this.fluidbook.datas.tabsHideWhenOverlapingArrows;this.mode="side";this.side=this.align=this.fluidbook.datas.tabsSide;this.margin=parseFloat(this.fluidbook.datas.tabsMargin);this.hideEdge=this.fluidbook.datas.tabsHideEdges;this.linkWidth=parseFloat(this.fluidbook.datas.tabsLinkWidth);this.priority=parseFloat(this.fluidbook.datas.tabsPriority)/100;this.sections=this.fluidbook.datas.tabsSections.map(function(x){return parseInt(x)})},addLinks:function(pages){pages=pages.map(function(x){return parseInt(x)});this.links=[];var $this=this;var sections=[];if(this.hasSections()){$.each(this.sections,function(id,limit){var sectionPages=[];$.each(pages,function(k,p){if($this.getSectionByPageNumber(p)-1===id){sectionPages.push(p)}});sections.push(sectionPages)})}else{sections.push(pages)}var index=1;$.each(sections,function(k,sectionPages){var nbPages=sectionPages.length;var i=0;$.each(sectionPages,function(k,value){if(value%2===1){value--}$this.links.push({css:{height:100/nbPages+"%",top:100/nbPages*i+"%"},page:parseInt(value),index:index,id:"o"+index});i++;index++})})},initTabs:function(){var $this=this;this.element.append('<div class="tabs"></div>');this.cont=this.element.find(".tabs");var svgPath="data/tabs.svg";$.get(svgPath,{},function(data){$this.cont.append(data);$this.naturalDimensions.width=Math.floor(parseFloat($(data).attr("width")));$this.naturalDimensions.height=Math.floor(parseFloat($(data).attr("height")));$this.svg=$this.cont.find("svg");$this.svg.addClass("tabsimg").css({height:"100%",width:"auto"});$this.svgLoaded=true;$this.createLinks();$this.initStandardEvents()},"text")},changePage:function(page){var id="oo";var $this=this;$.each(this.links,function(k,v){if(page>=v.page){try{if(v.last!==undefined&&page>=v.last){id="none"}else{id=v.id}}catch(e){}}});if(id==="none"){this.svg.find('[id^="o"].active').removeClass("active")}else{try{this.svg.find('[id^="o"].active:not(#'+id+")").removeClass("active");this.svg.find("#"+id).addClass("active")}catch(err){}}if(this.hasSections()){this.changeSection(page)}},changeSection:function(page){var currentSection=this.getSectionByPageNumber(page);if(currentSection>0){var sectionSelector="#s"+currentSection;this.svg.find('[id^="s"]').not(sectionSelector).addClass("section_hidden");this.svg.find(sectionSelector).removeClass("section_hidden");this.cont.find("[data-section]").not('[data-section="'+currentSection+'"]').hide();this.cont.find('[data-section="'+currentSection+'"]').show()}},hasSections:function(){return!(this.sections===undefined||this.sections==null||this.sections===""||this.sections.length===0)},getSectionByPageNumber:function(page){if(!this.hasSections()){return 0}var section=0;$.each(this.sections,function(k,v){if(page>=v){section=k+1}});return section},hideEdges:function(hide){if(!hide){$("#edges .edge, #shadow .shadow.side").css("visibility","visible");return}if(this.hideEdge===undefined||this.hideEdge==="none"){return}if(this.hideEdge==="left"||this.hideEdge==="both"){$("#edges .edge.left, #shadow .shadow.side.left").css({visibility:"hidden"})}if(this.hideEdge==="right"||this.hideEdge==="both"){$("#edges .edge.right, #shadow .shadow.side.right").css({visibility:"hidden"})}},createLinks:function(){var $this=this;var commoncss={};commoncss.width=100*(this.linkWidth/this.naturalDimensions.width)+"%";commoncss.left=-100*(this.margin/this.naturalDimensions.width)+"%";console.log(commoncss);$(this.links).each(function(k,v){var l=$('<a class="tablink" />');$this.cont.append(l);l.css(commoncss);l.css(v.css);if(v.page){l.attr("href","#/page/"+v.page)}if($this.hasSections()){l.attr("data-section",$this.getSectionByPageNumber(v.page))}if($this.svg.find("#t"+v.index).length>0){l.attr("data-labelid","t"+v.index)}})},initStandardEvents:function(){var $this=this;$(this.fluidbook).on("fluidbook.resize",function(e,data){$this.resize(data);return true});if(this.hideOnZoom){this.visibility.zoomin=true;$(this.fluidbook).on("fluidbook.zoom.in.start",function(e){$this.changeVisibility("zoomin",false)});$(this.fluidbook).on("fluidbook.zoom.out.end",function(e){$this.changeVisibility("zoomin",true)})}if(this.hideOnPortrait){this.visibility.portrait=true;$(this.fluidbook).on("fluidbook.resize.orientation",function(e,data){if(data.orientation==="portrait"){$this.changeVisibility("portrait",false)}else{$this.changeVisibility("portrait",true)}})}if(this.hideOnLastPage||this.hideOnFirstPage){if(this.hideOnLastPage){this.visibility.lastpage=true}if(this.hideOnFirstPage){this.visibility.firstpage=true}$(this.fluidbook).on("fluidbook.page.change.start",function(e,page){if($this.hideOnFirstPage){if(page<=1){$this.changeVisibility("firstpage",false)}}if($this.hideOnLastPage){var last=$this.fluidbook.datas.pages;if(last%2===1){last--}if(page>=last){$this.changeVisibility("lastpage",false)}}$this.changePage(page)});$(this.fluidbook).on("fluidbook.page.change.end",function(e,page){if($this.hideOnFirstPage){if(page>1){$this.changeVisibility("firstpage",true)}}if($this.hideOnLastPage){var last=$this.fluidbook.datas.pages;if(last%2===1){last--}if(page<last){$this.changeVisibility("lastpage",true)}}});$(document).on("mouseover",".tablink[data-labelid]",function(){$this.svg.find('[id^="t"].active').removeClass("active");$this.svg.find("#"+$(this).data("labelid")).addClass("active")});$(document).on("mouseout",".tablink[data-labelid]",function(){$this.svg.find('[id^="t"].active').removeClass("active")})}},changeVisibility:function(type,visible){this.visibility[type]=visible;var tabsvisible=true;$.each(this.visibility,function(k,v){if(!v){tabsvisible=false;return false}});if(!tabsvisible){this.cont.addClass("hide")}else{this.cont.removeClass("hide")}this.hideEdges(tabsvisible)},resize:function(data){var $this=this;var css={position:"absolute"};var svgcss={height:css.height};if(this.mode==="side"){var scale=data.fluidbookrect.height/this.naturalDimensions.height;var w=this.naturalDimensions.width*scale;css.top=data.fluidbookrect.top;css.height=data.fluidbookrect.height;if(this.fluidbook.support.IE>0){svgcss.width=w}css.width="auto";if(this.align==="right"){css.left=data.fluidbookrect.left+data.fluidbookrect.width+this.margin*scale}else if(this.align==="left"){css.left=data.fluidbookrect.left-w-this.margin}}try{this.svg.css(svgcss)}catch(e){}this.cont.css(css)}};function Fluidbook(datas){this.init(datas)}Fluidbook.NONE=3;Fluidbook.STRETCH=0;Fluidbook.RATIO=2;Fluidbook.REPEAT=1;Fluidbook.CENTER=4;Fluidbook.LEFT=5;Fluidbook.RIGHT=6;Fluidbook.MIDDLE=7;Fluidbook.TOP=8;Fluidbook.BOTTOM=9;Fluidbook.prototype={init:function(datas){this.flags={};this.canNavigate=false;this.initSettings(datas);this.singleMode=this.datas.mobileNavigationType==="portrait"||this.datas.mobileNavigationType==="mobilefirst";this.junk=datas.cacheDate;this.networkControl=new FluidbookNetworkControl(this);this.input=new FluidbookInput(this);if(this.datas.landingPage!=undefined&&this.datas.landingPage!=""){this.landingpage=new FluidbookLandingPage(this)}this.secure=new FluidbookSecure(this);this.contentlock=new FluidbookContentLock(this);this.menu=new FluidbookMenu(this);this.support=new FluidbookSupport(this);this.search=new FluidbookSearch(this);this.mobilefirst=new FluidbookMobileFirst(this);this.zoom=new FluidbookZoom(this);this.zoom.resetZoom();this.cache=new FluidbookCache(datas);this.service=new FluidbookService(this,datas.id);this.loader=new FluidbookLoader(this);this.pad=new FluidbookPad(this);this.scorm=new FluidbookScorm(this);this.links=new FluidbookLinks(this);this.waiters=[];this.viewport=new FluidbookViewport(this);this.viewport.updateViewport();this.desktop=new FluidbookDesktop(this);this.share=new FluidbookShare(this);this.firstTransition=true;if(this.input.hasTouch){this.touch=new FluidbookTouch(this)}this.background=new FluidbookBackground(this);this.l10n=new FluidbookL10N(this,$_GET["lang"]);this.video=new FluidbookVideo(this);this.bookmarks=new FluidbookBookmarks(this);this.tooltip=new FluidbookTooltip(this);this.audiodescription=new FluidbookAudioDescription(this);this.sound=new FluidbookSound(this);this.slideshow=new FluidbookSlideshow(this);this.printing=new FluidbookPrint(this);if(this.datas.basket){this.cart=new FluidbookCart(this)}if(this.datas.form=="bulle"){this.form=new FluidbookBulleForm(this)}else if(this.datas.form=="bourbon"){this.form=new FluidbookBourbonForm(this)}else if(this.datas.form=="avery"){this.form=new FluidbookAveryForm(this)}else{this.form==false}this.privacy=new FluidbookPrivacy(this);if(typeof window.FluidbookTabs==="function"){this.tabs=new FluidbookTabs(this)}this.refw=0;this.refh=0;this.searchString="";this.vectorTexts=!this.support.imagesVersion;this.displayOnePage=false;this.indexHTML="";this.gal=null;this.isReady=false;this.transitionAxis="x";if(this.support.isMobile){$("body").addClass("mobile")}else{$("body").addClass("desktop")}if(this.pad.enabled){$("body").addClass("pad")}$("html").addClass(this.datas.mobileLVersion);this.currentPage=-1;this.currentPageURL=-1;this.contentlock.init();this.nav=new FluidbookNav(this);this.interface=new FluidbookInterface(this);this.resize=new FluidbookResize(this);this.pagetransitions=new FluidbookPageTransition(this);this.stats=new FluidbookStats(this);this.stats.track(10);this.initTheme();this.initKeyboardShortcuts();this.initLoading()},initSettings:function(datas){this.datas=datas;if($_GET["transition"]!=null){var map={1:"none",2:"slide",3:"flip",4:"flip3d"};this.datas.mobileTransitions=map[$_GET["transition"]]}},setMaxPage:function(p,allowbackwards){return this.contentlock.setMaxPage(p,allowbackwards)},initTheme:function(){var $this=this;if(this.datas.arrowsTheme){$("html").addClass("sharp")}if(this.datas.invertMenuPosition){$("html").addClass("menu-inverted")}else{$("html").addClass("menu-default")}$(document).on("fluidbook.init",function(){var logoImg=$("#splash .logo img");if($(logoImg).isLoaded()){$this.splashLogoLoaded()}else{$(logoImg).on("load",function(){$this.splashLogoLoaded()})}})},splashLogoLoaded:function(){resize();$("#splash .logo img").css("opacity",1)},initLoading:function(){if($("#loader svg").length>0){return}$("#loader").append(getSpriteIcon("interface-loader"));this.displayLoader();var $this=this;this.loader.preloadStart(function(){$this.ready()})},initKeyboardShortcuts:function(){var $this=this;key("home",function(){$this.goFirstPage()});key("end",function(){$this.goLastPage()});key("left",function(){if($this.l10n.dir==="ltr"){$this.goPreviousPage()}else{$this.goNextPage()}});key("right",function(){if($this.l10n.dir==="ltr"){$this.goNextPage()}else{$this.goPreviousPage()}})},hideSplash:function(){if($("#splash").length==0){return}try{navigator.splashscreen.hide()}catch(err){}$(this).trigger("fluidbook.splash.beforehide");var $this=this;if(this.support.transitions3dacc&&this.datas.mobileTransitions==="flip3d"&&!this.mobilefirst.enabled){$("#main,#viewOverlay,#view").css("visibility","visible");resize();this.networkControl.pause(4e3);setTimeout(function(){this.fluidbook.pagetransitions.flip3d.performancesTest(function(){$this.networkControl.resume();$this._hideSplash()})},500)}else{this._hideSplash()}},_hideSplash:function(){var $this=this;var timeout=1200;setTimeout(function(){$this.__hideSplash()},timeout)},__hideSplash:function(){$("#main,#viewOverlay,#view").css("visibility","visible");this.resize.resize(false,true);this.hideLoader(0,true);if(this.support.transitions2d&&!this.support.iOS){$("#splash").css("opacity",0).one("transitionend",function(){$(this).remove()})}else{$("#splash").fadeOut(500,function(){$(this.remove())})}setTimeout(function(){$("#splash").remove()},1500);this.allowChangePage();$(this).trigger("fluidbook.splash.hide")},allowChangePage:function(){var $this=this;setTimeout(function(){$this.canNavigate=true;$($this).trigger("fluidbook.navigation.cannavigate")},1500)},ready:function(){if(this.isReady){return}this.isReady=true;$("#main").css("display","block");if(!this.mobilefirst.enabled){this.slider=new FluidbookSlider(this)}this.help=new FluidbookHelp(this);resize();$(this).trigger("fluidbook.ready");$(document).trigger("fluidbook.ready");this.changeAddress();var $this=this;setTimeout(function(){$this.help.displayAtStartup()},1500)},loadPlugins:function(){$.each(this.datas.plugins,function(k,plugin){try{var functionName=plugin.replace(/\./g,"_");eval(functionName+"();")}catch(err){}});$.each(this.datas.htmlmultimedia,function(k,code){try{eval(code)}catch(err){}})},initPage:function(pageNr,doublePage,position){if($("#page_"+pageNr).length>0){return}$(doublePage).find("."+position).remove();var page='<div class="page '+position+'" id="page_'+pageNr+'" data-page="'+pageNr+'"><div class="background" page="'+pageNr+'"></div><div class="texts" highlight=""></div><div class="clinks"></div><div class="shade"></div></div>';$(doublePage).append(page)},hidePage:function(position){$("#pages ."+position).hide()},canChangePage:function(){try{return this.pagetransitions.canChangePage()}catch(e){}return false},initVideos:function(){var $this=this;$(".videoContainer").each(function(){$this.video.initVideo(this)})},getNextOffset:function(){var offset=2;if(this.displayOnePage){offset=1}this.transitionAxis="x";return offset},goNextPage:function(){if(!this.canChangePage()){return}if(this.search.resultsNavActive()){this.search.nextResultsPage()}else{this.transitionAxis="x";this.setCurrentPage(this.normalizePage(this.currentPage)+this.getNextOffset())}},goFirstPage:function(){if(!this.canChangePage()){return}this.transitionAxis="x";this.setCurrentPage(1)},goPreviousPage:function(){if(!this.canChangePage()){return}if(this.search.resultsNavActive()){this.search.previousResultsPage()}else{this.transitionAxis="x";this.setCurrentPage(this.normalizePage(this.currentPage)-this.getNextOffset())}},goLastPage:function(){if(!this.canChangePage()){return}this.transitionAxis="x";this.setCurrentPage(this.contentlock.getMaxPage())},goNextChapter:function(){if(!this.canChangePage()){return}var next=this.bookmarks.getNextGroupCover(this.currentPage);if(next===false){return}this.transitionAxis="x";this.setCurrentPage(this.normalizePage(next))},goPreviousChapter:function(){if(!this.canChangePage()){return}var prev=this.bookmarks.getPreviousGroupCover(this.currentPage);if(prev===false){return}this.transitionAxis="x";this.setCurrentPage(this.normalizePage(prev))},goNextChapterPage:function(){if(!this.canChangePage()){return}var next=this.bookmarks.getNextPageInGroupOfPage(this.currentPage);if(next===false){return}this.transitionAxis="y";this.setCurrentPage(this.normalizePage(next))},goPreviousChapterPage:function(){if(!this.canChangePage()){return}var prev=this.bookmarks.getPreviousPageInGroupOfPage(this.currentPage);if(prev===false){return}this.transitionAxis="y";this.setCurrentPage(this.normalizePage(prev))},normalizePage:function(page){page=Math.max(1,Math.min(page,this.contentlock.getMaxPage()));if(!this.displayOnePage&&page%2===1){page--}return page},setCurrentPage:function(page){window.location.hash="#/page/"+this.normalizePage(page)},changeAddress:function(){var $this=this;var page;var args=window.location.hash.split("/");var defaultStartPage=1;if(FLUIDBOOK_START_PAGE!==undefined){defaultStartPage=FLUIDBOOK_START_PAGE}if(args.length<=1||args[1]==""||args[1]==undefined){if(this.landingpage!==undefined&&this.landingpage.hasLandingPage){window.location.hash="/landing";return}return this.setCurrentPage(defaultStartPage)}if(args.length>1){var a1=args[1];if(a1.match(/^[0-9]+$/)){args=["#","page",a1]}}if(args[1]==="closeview"){return this.setCurrentPage(this.currentPage)}else if(args[1]==="page"){if(fluidbook.datas.pageLabels[args[2]]!==undefined){page=fluidbook.datas.pageLabels[args[2]]}else{page=parseInt(args[2])}if(isNaN(page)||page==undefined){return this.setCurrentPage("1")}this.currentPageURL=page;if(page!==$this.currentPage){$($this).trigger("fluidbook.page.navigation",[page]);$($this).trigger("changePage",[page])}if(this.landingpage!==undefined){this.landingpage.hide()}this.menu._closeView(function(){if(page!==$this.currentPage){$this.pagetransitions.pageTransition(page);$this.stats.track(0,page)}$this.zoom.resetZoom();$this.hideSplash()},true)}else if(args[1]==="landing"){$this.hideSplash();if(this.landingpage!==undefined){this.landingpage.show()}}else{var view=args[1];if(this.currentPage===-1){if(view==="multimedia"||view==="video"||view==="iframe"){var searchURL=args.join("/");$.each(this.datas.links,function(pageNr,links){var hl=$("<root>"+links+"</root>");if($(hl).find('[href="'+searchURL+'"]').length>0){$this.currentPage=pageNr;return false}});if(this.currentPage===-1){this.currentPage=0}}else{this.currentPage=0}$this.pagetransitions.pageTransition(this.currentPage)}this.menu.openView(view,args[2],args[3],function(){$this.hideSplash()})}return},reloadCurrentPage:function(){this.pageTransition(this.currentPage)},readingPage:function(side){if(!this.displayOnePage){var page=this.currentPage;var change=false;if(side==="left"&&page%2===1){page--;change=true}else if(side==="right"&&page%2===0){page++;change=true}if(change){window.location.hash="/page/"+page}}},getButtonsVisibility:function(page){var max=this.contentlock.getMaxPage();if(this.contentlock.getMaxPage()%2===1&&this.datas.mobileNavigationType!=="portrait"&&this.datas.mobileNavigationType!=="mobilefirst"&&this.resize.orientation!=="portrait"){max--}var next=page<max;var previous=page>1;return{previous:previous,next:next}},hideUnnecessaryButtons:function(page){var speed=500;if(page===undefined){page=this.currentPage;speed=0}var visibility=this.getButtonsVisibility(page);if(visibility.next){$("#next").removeClass("hidden")}else{$("#next").addClass("hidden")}if(visibility.previous){$("#previous").removeClass("hidden")}else{$("#previous").addClass("hidden")}},updateShadows:function(page,animationDuration){if(animationDuration===undefined){animationDuration=0}animationDuration*=1e3;var delay;if(animationDuration===0){delay=0}else{delay=animationDuration}var left=true,right=true;if(!this.displayOnePage){if(page<=1&&this.l10n.dir==="ltr"||page>=this.contentlock.getMaxPage()&&this.l10n.dir==="rtl"){left=false}else if(page<=1&&this.l10n.dir==="rtl"||page>=this.contentlock.getMaxPage()&&this.l10n.dir==="ltr"){right=false}}var s=$("#shadow,#edges");var s_in=[];var s_out=[];if(left){s_in.push(".left.hidden")}else{s_out.push(".left:not('.hidden')")}if(right){s_in.push(".right.hidden")}else{s_out.push(".right:not('.hidden')")}if(s_in.length>0){setTimeout(function(){$(s).children(s_in.join(",")).removeClass("hidden")},delay)}if(s_out.length>0){$(s).children(s_out.join(",")).addClass("hidden")}},showAllButtons:function(){$("#next,#previous").addClass("help").show()},setPageNumbers:function(){$("#pagesnumbers .left").html(this.getPageNumberOfSide("left",true));$("#pagesnumbers .right").html(this.getPageNumberOfSide("right",true));$("#pagesnumbers").removeClass("hidden")},getPhysicalPageNumberOfSide:function(side,strict){if(undefined===strict){strict=false}var pageSide=$("#currentDoublePage").find("."+side);if(pageSide.length===0){if(strict){return false}pageSide=$("#currentDoublePage").find(".page").eq(0)}return $(pageSide).data("page")},getPageNumberOfSide:function(side,strict){if(undefined===strict){strict=false}var physical=this.getPhysicalPageNumberOfSide(side,strict);if(!physical||physical===1){return""}return this.physicalToVirtual(physical)},clickLogo:function(){if(this.datas.url_link==""||this.datas.url_link=="http://"){return}if(this.datas.url_link.indexOf("#")===0){window.location.hash=this.datas.url_link}else{this.wopen(this.datas.url_link,"_blank")}},addWaiter:function(reset){if(reset==undefined){reset=false}if(reset){this.resetWaiters()}var rand=Math.round(Math.random()*1e5);this.waiters.push(rand);return rand},waiterActive:function(id){return this.waiters.indexOf(id)>-1},resetWaiters:function(){this.waiters=[]},physicalToVirtual:function(page){return this.datas.numerotation[page-1]},virtualToPhysical:function(page){if(page===undefined){return false}var i=this.datas.numerotation.indexOf(page.toString());if(i==-1){return false}return i+1},hideMenuItems:function(){$("#menuList > ul > li, #shareLinks,footer#mobile-credits").fadeOut(100)},showMenuItems:function(){$("#menuList > ul > li, #shareLinks,footer#mobile-credits").fadeIn(300)},print:function(button){this.stats.track(3);return this.openPDF(button,true)},downloadPDF:function(button){this.stats.track(7);return this.openPDF(button,false)},openPDF:function(button,print){var $this=this;var pdf;var pdfName;if(this.datas.pages!=this.contentlock.getMaxPage()){pdf="https://workshop.fluidbook.com/s/e/"+this.datas.cid+"/1-"+this.contentlock.getMaxPage()}else if(this.datas.pdfName.substr(0,4)==="http"){pdf=this.datas.pdfName}else{pdf=this.relativeToAbsolute("data/"+this.datas.pdfName)}var e=pdf.split("/");pdfName=e.pop();this._openFile(pdf,button,"pdf",pdfName,print)},_openFile:function(url,e,type,localname,print){if(print===undefined){print=false}var $this=this;if(this.datas.phonegap!=false){if(type==undefined){var e=url.split(".");type=e.pop()}if(url.indexOf("http")===0){return this._downloadFilePhonegap(url,localname,window.TEMPORARY,this._openFilePhonegap,[url,e,type])}else{if(this._openFilePhonegap(url,e,type)){return}}}var w=this.wopen(url,"_blank","");if(print){setTimeout(function(){w.print()},2e3)}},_openFilePreload:function(url,e,type,localname,print){var $this=this;this.displayLoader();$.ajax({url:url,type:"HEAD",success:function(data){$this._openFile(url,e,type,localname,print);$this.hideLoader(1,true)}})},_downloadFilePhonegap:function(url,localname,fs,callback,callbackArgs){console.log("download file phonegap");var $this=this;if(fs===undefined){fs=LocalFileSystem.PERSISTENT}var requestFileSystem=window.requestFileSystem||window.webkitRequestFileSystem;requestFileSystem(fs,0,function(fileSystem){console.log("fs requested");fileSystem.root.getFile("dummy.html",{create:true,exclusive:false},function(fileEntry){console.log("dummy file created");var filePath=fileEntry.toURL().replace("dummy.html","")+localname;var fileTransfer=new FileTransfer;var uri=encodeURI(url);fileTransfer.download(uri,filePath,function(entry){console.log("file donwloaded");if(callback!==undefined){if(callbackArgs===undefined){callbackArgs=[]}callbackArgs[0]=entry.toURL();callback.apply($this,callbackArgs)}},function(error){console.log("file error")})})},function(){})},_openFilePhonegap:function(url,e,type){var $this=this;var types_ios={pdf:"com.adobe.pdf"};var types_android={pdf:"application/pdf"};if(this.datas.phonegap==="ios"){console.log("open download on ios "+type+" -> "+types_ios[type]);this.displayLoader();if(types_ios[type]!==undefined){console.log("intro to open with External file util");try{var offset=$(e).offset();offset.left+=$(e).width()/2;offset.top+=$(e).height()/2;offset.left*=2;offset.top*=2;if($(e).data("ios-preview")==="1"){offset.top=offset.left=0}}catch(err){console.log("error while getting offset")}try{console.log("attempt to open with External file util");ExternalFileUtil.openWith(url,types_ios[type],function(){console.log("ok to open with External file util : "+url);$this.hideLoader()},function(){console.log("failed to open with External file util");$this.wopen(url,"_blank","location=no");$this.hideLoader()},offset)}catch(err){console.error("unable to open with externalfileutil");$this.wopen(url,"_blank","location=no");$this.hideLoader()}return true}}if(this.datas.phonegap==="android"){if(types_android[type]!==undefined){var errorCallback=function(e){$this.bugreport(e);$this.hideLoader()};console.log("open pdf file");this.displayLoader();try{window.requestFileSystem(LocalFileSystem.TEMPORARY,0,function(fileSystem){console.log("got local file system");console.log("try to resolve url");window.resolveLocalFileSystemURL(url,function(entry){console.log("resolved from file");window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory,function(dirEntry){console.log("resolved to dir");entry.copyTo(dirEntry,entry.name,function(copyEntry){console.log("copied file");window.plugins.webintent.startActivity({action:window.plugins.webintent.ACTION_VIEW,type:types_android[type],url:copyEntry.toURL()},function(args){$this.hideLoader(5)},function(args){$this.wopen(copyEntry.toURL(),"_blank","");$this.hideLoader(5)})},errorCallback)},errorCallback)},errorCallback)},errorCallback)}catch(e){$this.bugreport(e);$this.hideLoader()}}return true}return false},relativeToAbsolute:function(relative){var a=document.createElement("a");a.href=relative;return a.cloneNode(false).href},alertInternetRequired:function(){navigator.notification.alert("",function(){},this.l10n.__("an internet connection is required for this action"))},touchOffset:function(offset){offset*=$("#currentDoublePage").width();$("#currentDoublePage").addClass("sliding");$("#currentDoublePage").css({translateX:offset})},displayLoader:function(){$("#loader").addClass("show");if(!this.support.isMobile){$("body").addClass("loading")}},hideLoader:function(delay,force){if(force==undefined){force=false}if(delay==undefined){delay=0}var $this=this;if(delay==0){return this._hideLoader(force)}setTimeout(function(){$this._hideLoader(force)},delay*1e3)},_hideLoader:function(force){if(force==undefined){force=false}if(!force&&$("#splash").css("visibility")=="visible"){return}$("#loader").removeClass("show");if(!this.support.isMobile){$("body").removeClass("loading")}},wopen:function(url,target,options,print){var win;if(this.support.nwjs){win=nw.Window.get().window}else{win=window}if(target==undefined){target="_self"}if(options==undefined){options=""}var locationdefault="yes";var mtarget=target;var replace=true;if(this.datas.phonegap){if(target=="_unique"||target=="_new"){mtarget="_blank"}}else{if(target=="_new"){mtarget="fb_"+this.datas.id+"_"+Math.round(Math.random()*1e7);options+=",scrollbars=yes"}else if(target=="_unique"){mtarget="fb_"+this.datas.id;options+=",scrollbars=yes"}else{}}if(this.datas.phonegap){locationdefault="yes"}if(options==""){options="location="+locationdefault}else if(options.indexOf("location=")==-1){options+=",location="+locationdefault}if(this.datas.phonegap&&mtarget=="_blank"){options+=",zoom=yes,enableViewportScale=yes"}if(!this.datas.phonegap&&mtarget=="_blank"){options=undefined;replace=undefined}var w;if(options==undefined&&replace==undefined){if(this.support.IE==0){w=win.open(url,mtarget)}else{$("#wopen").remove();$("body").append('<a id="wopen" href="'+url+'" target="'+mtarget+'"></a>');$("#wopen").get(0).click();setTimeout(function(){$("#wopen").remove()},200)}}else{w=win.open(url,mtarget,options,replace)}try{if(target=="_new"||target=="_unique"){w.focus()}}catch(e){}return w},setFlag:function(name,value){if(value===undefined){value=true}this.flags[name]=value},hasFlag:function(name){return this.flags[name]===true},hasFlags:function(names){var res=true;var $this=this;$.each(names,function(k,v){if($this.hasFlag(v)){return}res=false;return true});return res},unlockCurrentPage:function(){this.contentlock.unlockCurrentPage()},bugreport:function(e){if(window.confirm("An error occured: "+e.name+". Do you want to send a report ?")){var subject="[Fluidbook error report] "+e.message;var o={name:e.name,message:e.message,stack:e.stack};window.location="mailto:tech@fluidbook.com?subject="+encodeURIComponent(subject)+"&body="+encodeURIComponent(JSON.stringify(o))}}};var DEVICE_READY_BEFORE_JQUERY=false;var JQUERY_READY=false;document.addEventListener("deviceready",_onDeviceReady,false);function _onDeviceReady(){if(JQUERY_READY){onDeviceReady()}else{DEVICE_READY_BEFORE_JQUERY=true}}var fluidbook;var desktopScale;var dektopScaleAmount;var INITED;var $_GET;var maskHashChange=false;var jsLibraries=[];var longpresstime=undefined;var startAfterLoading=false;var gal=null;var home=window.location.toString();var resolution="auto";var OFFLINEAPP=false;var FINISHLOADING=false;var PLATFORM="web";var DEVICE_READY=false;try{$(function(){JQUERY_READY=true;$("#message").hide();$("#splash").show();$_GET=parseGet();INITED=false;if(DATAS&&DATAS.phonegap){loadPhonegap()}else{setTimeout(function(){init()},10)}});function loadPhonegap(){var cordovaPath="data/cordova.js";var cordovaStorage=window.localStorage.getItem("cordova");OFFLINEAPP=window.localStorage.getItem("offlineapp")=="1";if(window.localStorage.getItem("offline."+DATAS.id)=="1"){FINISHLOADING=true}if(cordovaStorage){cordovaPath=window.localStorage.getItem("cordova")}document.addEventListener("resume",onAppResume,false);loadJSLibrary(cordovaPath,cordovaLoaded);if(window.cordova){console.log("cordova already loaded");cordovaLoaded()}if(DEVICE_READY_BEFORE_JQUERY){onDeviceReady()}}function cordovaLoaded(){}function onDeviceOffline(){if(OFFLINEAPP){return}if(FINISHLOADING){return}navigator.notification.alert(__("This publication is not available offline. To read it, an internet connection is required"),function(){window.location=window.localStorage.getItem("apphome")},__("An internet connection is required"))}function onAppResume(){if(!INITED){return}fluidbook.hideLoader(1)}function onDeviceReady(){if(DEVICE_READY){return}DEVICE_READY=true;setInterval(function(){try{StatusBar.hide()}catch(e){}},2e3);console.log("device ready !");document.addEventListener("offline",onDeviceOffline,false);var manifest;var fsprefix=window.localStorage.getItem("galfsprefix");PLATFORM=DATAS.phonegap;if(PLATFORM=="ios"){try{window.ExternalFileUtil=cordova.require("com.techblue.cordova.plugin.externalfileutilios.ExternalFileUtilIos")}catch(err){console.error("Error while loading ExternalFileUtil plugin")}}else if(PLATFORM=="android"){}var collection;try{collection=json_parse(window.localStorage.getItem("collection"))}catch(err){console.log("error parsing collection")}if(collection.res!=undefined&&collection.res){resolution=collection.res}if(OFFLINEAPP){resolution=150}if(!OFFLINEAPP){console.log("set manifest from manifest pub");manifest=collection.manifestPub[DATAS.id]}if(navigator.onLine&&!OFFLINEAPP){console.log("init online");var readyToLoad=false;var finishedLoading=false;gal=new GameAssetLoader(manifest,fsprefix);gal.init(galLoaded);var timeout=setTimeout(function(){window.location.reload(true)},1e3);gal.onLoaded(function(info){console.log("gal loaded");clearTimeout(timeout);$(window).trigger("GALBundleLoaded",[info])});gal.check("content_4",function(info){if(info.success){fluidbook.changeAddress()}});gal.check("extras",function(info){if(info.success){console.log("set offline flag");FINISHLOADING=true;window.localStorage.setItem("offline."+DATAS.id,"1")}});$(window).on("GALBundleLoaded",function(e,info){console.log("Loaded :: "+info.bundleName);if(info.bundleName=="content_4"){fluidbook.changeAddress()}if(info.bundleName=="extras"){console.log("set offline flag");FINISHLOADING=true;window.localStorage.setItem("offline."+DATAS.id,"1")}try{if(fluidbook&&fluidbook.loader){fluidbook.loader.retryErrorImages()}}catch(err){}})}else{init()}}function loadJSLibrary(url,callback,error){if(jsLibraries.indexOf(url)>-1){if(callback!=undefined){callback()}return}jsLibraries[jsLibraries.length]=url;var script=document.createElement("script");script.type="text/javascript";if(script.readyState){script.onreadystatechange=function(){if(script.readyState=="loaded"||script.readyState=="complete"){script.onreadystatechange=null;if(callback!=undefined){callback()}}}}else{script.onload=function(){if(callback!=undefined){callback()}};script.onerror=function(){console.error("Error loading "+url);if(error!=undefined){error()}}}script.src=url;document.getElementsByTagName("head")[0].appendChild(script)}function galLoaded(){startAfterLoading=true;init()}function init(){if(INITED==true){return}INITED=true;window.fluidbook=new Fluidbook(DATAS);if(null!=gal){fluidbook.gal=gal}window.fluidbook.loadPlugins();$(document).trigger("fluidbook.init");desktopScale=1;desktopScaleAmount=1.5;if($_GET.s=="1"){$("html").addClass("screenshot");$("#splash").hide();window.fluidbook.ready()}initEvents()}function initEvents(){resize(true);if(DATAS.preventRightClick){$(document).on("contextmenu",function(){return false});$(document).on("mousedown",function(e){if(e.button==2){return false}else{return true}})}$(window).on("hashchange",function(){if(maskHashChange){return}fluidbook.changeAddress();return false});$(document).on("webkitfullscreenchange mozfullscreenchange msfullscreenchange fullscreenchange",function(){resize();setTimeout(function(){resize()},100);for(var i=1;i<=3;i++){setTimeout(function(){resize()},1e3*i)}});$(document).on("click","#popinOverlay",function(){closePopin();return false});$(document).on("click","a.popin",function(){var iframeid="iframe_"+Math.round(Math.random()*1e5);var html='<div style="width:'+$(this).data("width")+"px;height:"+$(this).data("height")+'px"><iframe id="'+iframeid+'" width="'+$(this).data("width")+'" height="'+$(this).data("height")+'" src="'+$(this).data("src")+'" frameborder="0"></iframe></div>';$("#popinOverlay").append(html).show();var frame=$("#"+iframeid);$(frame).load(function(){var f=$(frame).contents();$(f).click(function(e){if($(e.target).hasClass("closePopup")){closePopin();return}$(e.target).parents().each(function(){if($(this).hasClass("closePopup")){closePopin();return}})})});resize();return false});$(document).on("click","a.appswitchlocale",function(){try{fluidbook.displayLoader();if($(".mview").length>0){$("#main").hide();$("#view").addClass("fadeout")}else{$("#main").addClass("fadeout")}var $this=this;var locale=$(this).data("locale");var id=$(this).data("id");window.localStorage.setItem("locale",locale);if(OFFLINEAPP){window.location=getPublicationURL(id)}else{var topmanifest=window.localStorage.getItem("topmanifest");window.gallocale=new GameAssetLoader(json_parse(topmanifest,"topmanifest"),window.localStorage.getItem("galfsprefix"));window.gallocale.init(function(){window.gallocale.downloadAndCall("p_"+id,function(){window.location=getPublicationURL(id)})})}}catch(err){}return false});$("#logo").click(clickLogo);$(document).on("click",".lazy",function(){return false});$(document).trigger("fluidbook.ready");setTimeout(function(){resize()},1e3)}}catch(err){console.log(err)}function checkScroll(){if(fluidbook.viewMode()){return}if(window.innerWidth==0){return}var left=$(window).width()/2-window.scrollX;var right=window.innerWidth-left;var reading=left>=right?"left":"right";fluidbook.readingPage(reading)}function changeAddress(event){fluidbook.changeAddress(event)}function resize(init){if(init==undefined||init==null){init=false}fluidbook.resize.resize(init)}function goNextPage(e){if(fluidbook.help.isVisible()){return}fluidbook.interface.resetTimeout();var y=e.offsetY==undefined?e.originalEvent.layerY:e.offsetY;if(y<65){if(fluidbook.pad.enabled){fluidbook.goNextChapter()}else{fluidbook.goNextPage()}}else{fluidbook.goLastPage()}return false}function goPreviousPage(e){if(fluidbook.help.isVisible()){return}var y=e.offsetY==undefined?e.originalEvent.layerY:e.offsetY;if(y<65){if(fluidbook.pad.enabled){fluidbook.goPreviousChapter()}else{fluidbook.goPreviousPage()}}else{fluidbook.goFirstPage()}return false}function clickLogo(){fluidbook.clickLogo();return false}function preloadBackground(page,resolution){fluidbook.preloadBackground(page,resolution)}function setBackground(page,resolution){fluidbook.setBackground(page,resolution)}function searchHints(){if($("#q").val().length>=1){fluidbook.search.initSearchHints();fluidbook.search.getSearchHints($("#q").val())}else{try{if($("#q").val().length==0){fluidbook.search.hideSearchHints();fluidbook.search.hideSearchResults();fluidbook.showMenuItems()}}catch(err){}}}function lazy(){}function __(str){return fluidbook.l10n.__(str)}function cacheUpdated(e){applicationCache.swapCache();if(window.confirm(fluidbook.l10n.__("An update of the publication is available. Do you want to load it ?"))){window.location.reload()}}function closePopin(){$("#popinOverlay").html("").hide()}(function(){var proxied=window.alert;window.alert=function(){if(navigator.notification){navigator.notification.alert(arguments[0],function(){},"Alert","Ok")}else{return proxied.apply(this,arguments)}}})();function getPublicationURL(id){var url=window.home;var replace="/"+fluidbook.datas.id+"/";var replaceby="/"+id+"/";url=url.replace(replace,replaceby);return url}$(function(){$.fn.isLoaded=function(){if($(this).length===0){return true}var img=$(this).get(0);if(img.readyState===4||img.readyState==="complete"){return true}if(img.complete){return true}return false}});