JAVASCRIPT   36

FlippingBook

Guest on 27th June 2022 03:58:19 PM

  1. function FlippingBook() {
  2.         this.pages = [];
  3.         this.zoomPages = [];
  4.         this.printPages = [];
  5.         this.contents = [];
  6.  
  7.         this.stageWidth = "100%";
  8.         this.stageHeight = "100%";
  9.        
  10.         this.settings = {
  11.                         bookWidth: 640,
  12.                         bookHeight: 480,
  13.                         pagesSet: this.pages,
  14.                         zoomPagesSet: this.zoomPages,
  15.                         printPagesSet: this.printPages,
  16.                         scaleContent: true,
  17.                         preserveProportions: false,
  18.                         centerContent: true,
  19.                         hardcover: false,
  20.                         hardcoverThickness: 3,
  21.                         hardcoverEdgeColor: 0xFFFFFF,
  22.                         highlightHardcover: true,
  23.                         frameWidth: 0,
  24.                         frameColor: 0xFFFFFF,
  25.                         frameAlpha: 100,
  26.                         firstPageNumber: 1,
  27.                         autoFlipSize: 50,
  28.                         navigationFlipOffset: 30,
  29.                         flipOnClick: true,
  30.                         handOverCorner: true,
  31.                         handOverPage: true,
  32.                         alwaysOpened: false,
  33.                         staticShadowsType: "Asymmetric", // Asymmetric, Symmetric, Default
  34.                         staticShadowsDepth: 1,
  35.                         staticShadowsLightColor: 0xFFFFFF, // works for "Symmetric" shadows only
  36.                         staticShadowsDarkColor: 0x000000,
  37.                         dynamicShadowsDepth: 1,
  38.                         dynamicShadowsLightColor: 0xFFFFFF, // works for "dark" pages only
  39.                         dynamicShadowsDarkColor: 0x000000,
  40.                         moveSpeed: 2,
  41.                         closeSpeed: 3,
  42.                         gotoSpeed: 3,
  43.                         rigidPageSpeed: 5,
  44.                         flipSound: "",
  45.                         hardcoverSound: "",
  46.                         preloaderType: "Thin", // "Progress Bar", "Round", "Thin", "Dots", "Gradient Wheel", "Gear Wheel", "Line", "Animated Book", "None"
  47.                         pageBackgroundColor: 0x99CCFF,
  48.                         loadOnDemand: true,
  49.                         allowPagesUnload: true,
  50.                         showUnderlyingPages: false,
  51.                         playOnDemand: true,
  52.                         freezeOnFlip: false,
  53.                         darkPages: false,
  54.                         smoothPages: false,
  55.                         rigidPages: false,
  56.                         flipCornerStyle: "manually",// "first page only", "each page", "manually"
  57.                         flipCornerPosition: "bottom-right",// "bottom-right","top-right","bottom-left","top-left"
  58.                         flipCornerAmount: 50,
  59.                         flipCornerAngle: 20,
  60.                         flipCornerRelease: true,
  61.                         flipCornerVibrate: true,
  62.                         flipCornerPlaySound: false,
  63.                         zoomEnabled: true,
  64.                         zoomPath: BaseHTTP+"pages/large/",
  65.                         zoomImageWidth: 900,
  66.                         zoomImageHeight: 1165,
  67.                         zoomOnClick: true,
  68.                         zoomUIColor: 0x8f9ea6,
  69.                         zoomHint: "Double click for zooming.",
  70.                         zoomHintEnabled: false,
  71.                         centerBook: true,              
  72.                         useCustomCursors: true,
  73.                         dropShadowEnabled: true,
  74.                         dropShadowHideWhenFlipping: true,
  75.                         backgroundColor: 0xFFFFFF,
  76.                         backgroundImage: BaseHTTP+"img/bookBackground.jpg",
  77.                         backgroundImagePlacement: "fit", //  "top left", "center", "fit"
  78.                         printEnabled: true,
  79.                         printTitle: "Print Pages",
  80.                         downloadURL: "",
  81.                         downloadTitle: "Download PDF",
  82.                         downloadSize: "Size: 4.7 Mb",
  83.                         downloadComplete: "Complete",
  84.                         extXML: ""
  85.                 };
  86.                
  87.                 this.containerId = "fbContainer";
  88.                 this.forwardButtonId = "fbForwardButton";
  89.                 this.backButtonId = "fbBackButton";
  90.                 this.zoomButtonId = "fbZoomButton";
  91.                 this.printButtonId = "fbPrintButton";
  92.                 this.downloadButtonId = "fbDownloadButton";
  93.                 this.currentPagesId = "fbCurrentPages";
  94.                 this.totalPagesId = "fbTotalPages";
  95.                 this.contentsMenuId = "fbContentsMenu";        
  96. };
  97.  
  98. FlippingBook.prototype.create = function(){
  99.         this.settings.pagesSet = this.pages;
  100.         this.settings.zoomPagesSet = this.zoomPages;
  101.         this.settings.printPagesSet = this.printPages;
  102.        
  103.         if( location.hash.substr(1) != "" )
  104.                 this.settings.firstPageNumber = location.hash.substr(1);
  105.        
  106.         this.addLoadEvent( this.onWindowLoad );
  107.         swfobject.embedSWF(BaseHTTP+"FlippingBook.swf", this.containerId, this.stageWidth, this.stageHeight, "8.0.0", BaseHTTP+"js/expressInstall.swf", this.settings, {allowScriptAccess: "always", bgcolor:  "#" + this.settings.backgroundColor.toString( 16 ) });
  108. }
  109.  
  110. FlippingBook.prototype.getFlippingBookReference = function() {
  111.         return this.getObjectReference( this.containerId );
  112. }
  113.  
  114. FlippingBook.prototype.getObjectReference = function( id ) {
  115.         return document.getElementById( id );
  116. }
  117.  
  118. FlippingBook.prototype.flipForward = function() {
  119.         flippingBook.getFlippingBookReference().flipForward();
  120. }
  121.  
  122. FlippingBook.prototype.flipBack = function() {
  123.         flippingBook.getFlippingBookReference().flipBack();
  124. }
  125.  
  126. FlippingBook.prototype.zoomButtonClick = function() {
  127.         if( flippingBook.getFlippingBookReference().isZoomedIn() )
  128.                 flippingBook.zoomOut();
  129.         else
  130.                 flippingBook.zoomIn();
  131. }
  132.  
  133. FlippingBook.prototype.zoomIn = function() {
  134.         this.getFlippingBookReference().zoomIn();
  135. }
  136.  
  137. FlippingBook.prototype.zoomOut = function() {
  138.         this.getFlippingBookReference().zoomOut();
  139. }
  140.  
  141. FlippingBook.prototype.print = function() {    
  142.         flippingBook.getFlippingBookReference().print();
  143. }
  144.  
  145. FlippingBook.prototype.downloadFile = function() {     
  146.         if( flippingBook.settings.downloadURL )
  147.                 flippingBook.getFlippingBookReference().downloadFile();
  148. }
  149.  
  150. FlippingBook.prototype.onWindowLoad = function(){      
  151.         var forwardButton = flippingBook.getObjectReference( flippingBook.forwardButtonId );
  152.         if( forwardButton ){
  153.                 forwardButton.style.cursor = "pointer";
  154.                 forwardButton.onclick = flippingBook.flipForward;
  155.         }
  156.        
  157.         var backButton = flippingBook.getObjectReference( flippingBook.backButtonId );
  158.         if( backButton ){
  159.                 backButton.style.cursor = "pointer";
  160.                 backButton.onclick = flippingBook.flipBack;
  161.         }
  162.        
  163.         var zoomButton = flippingBook.getObjectReference( flippingBook.zoomButtonId );
  164.         if( zoomButton ){
  165.                 zoomButton.style.cursor = "pointer";
  166.                 zoomButton.onclick = flippingBook.zoomButtonClick;
  167.         }
  168.        
  169.         var printButton = flippingBook.getObjectReference( flippingBook.printButtonId );
  170.         if( printButton ){
  171.                 printButton.style.cursor = "pointer";
  172.                 printButton.onclick = flippingBook.print;
  173.         }
  174.  
  175.         var downloadButton = flippingBook.getObjectReference( flippingBook.downloadButtonId );
  176.         if( downloadButton ){
  177.                 downloadButton.style.cursor = "pointer";
  178.                 downloadButton.onclick = flippingBook.downloadFile;
  179.         }
  180.        
  181.         flippingBook.buildContentsMenu();
  182. }
  183.  
  184. FlippingBook.prototype.onPutPage = function( leftPageNumber, rightPageNumber ){
  185.         this.updatePagination( leftPageNumber, rightPageNumber );
  186.         this.updateContentsMenu( leftPageNumber, rightPageNumber );
  187. }
  188.  
  189. FlippingBook.prototype.updatePagination = function( leftPageNumber, rightPageNumber ){
  190.         var leftPageExists = ( leftPageNumber != undefined );
  191.         var rightPageExists = ( rightPageNumber != undefined );
  192.                        
  193.         var pageNumberString = leftPageNumber + "-" + rightPageNumber;
  194.         if( !leftPageExists )
  195.                 pageNumberString = rightPageNumber;    
  196.         if( !rightPageExists )
  197.                 pageNumberString = leftPageNumber;
  198.  
  199.         this.getObjectReference( this.currentPagesId ).innerHTML = pageNumberString;
  200.         this.getObjectReference( this.totalPagesId ).innerHTML = " / " + this.getFlippingBookReference().totalPages(); 
  201. }
  202.  
  203. FlippingBook.prototype.buildContentsMenu = function(){
  204.         var contentsSelect = this.getObjectReference( this.contentsMenuId );
  205.        
  206.         if( contentsSelect ){
  207.                 for( var i = 0; i < this.contents.length; i++ )
  208.                         contentsSelect.options[i] = new Option(this.contents[i][0], this.contents[i][1]);
  209.                        
  210.                 contentsSelect.onchange = this.onContentsChange;
  211.         }
  212. }
  213.  
  214. FlippingBook.prototype.onContentsChange = function(){
  215.         var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );
  216.         var pageNumber = contentsSelect.options[contentsSelect.selectedIndex].value;
  217.        
  218.         if( pageNumber )
  219.                 flippingBook.getFlippingBookReference().flipGotoPage( pageNumber );
  220. }
  221.  
  222. FlippingBook.prototype.updateContentsMenu = function( leftPageNumber, rightPageNumber ){
  223.         var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );
  224.  
  225.         if( contentsSelect ){
  226.                 for( var i = 0; i < this.contents.length - 1; i++ ){
  227.                         var minPage = contentsSelect.options[i].value;
  228.                         var maxPage = contentsSelect.options[i+1].value;
  229.                         var leftOK = false;
  230.                         var rightOK = false;
  231.                        
  232.                         if( leftPageNumber )
  233.                                 leftOK = ( Number( leftPageNumber ) >=  minPage && Number( leftPageNumber ) <= maxPage );
  234.                         else
  235.                                 leftOK = true;
  236.  
  237.                         if( rightPageNumber )
  238.                                 rightOK = ( Number( rightPageNumber ) >=  minPage && Number( rightPageNumber ) <= maxPage );
  239.                         else
  240.                                 rightOK = true;
  241.                                
  242.                         if( leftOK && rightOK )
  243.                                 break;
  244.                 }      
  245.                 contentsSelect.selectedIndex = i;
  246.         }
  247. }
  248.  
  249. FlippingBook.prototype.getWindowHeight = function() {
  250.         var windowHeight = 0;
  251.        
  252.         if (typeof(window.innerHeight) == 'number' ) {
  253.                 windowHeight=window.innerHeight;
  254.         }
  255.         else {
  256.                 if (document.documentElement && document.documentElement.clientHeight) {
  257.                                 windowHeight = document.documentElement.clientHeight;
  258.                 }
  259.                 else {
  260.                         if (document.body&&document.body.clientHeight) {
  261.                                 windowHeight=document.body.clientHeight;
  262.                         }
  263.                 }
  264.         }
  265.        
  266.         return windowHeight;
  267. }
  268.  
  269. FlippingBook.prototype.addLoadEvent = function ( fn ) {
  270.         if (typeof window.addEventListener != "undefined") {
  271.                 window.addEventListener("load", fn, false);
  272.         }
  273.         else if (typeof document.addEventListener != "undefined") {
  274.                 document.addEventListener("load", fn, false);
  275.         }
  276.         else if (typeof window.attachEvent != "undefined") {
  277.                 window.attachEvent("onload", fn);
  278.         }
  279.         else if (typeof window.onload == "function") {
  280.                 var fnOld = window.onload;
  281.                 window.onload = function() {
  282.                         fnOld();
  283.                         fn();
  284.                 };
  285.         }
  286.         else {
  287.                 window.onload = fn;
  288.         }
  289. }
  290.  
  291. FlippingBook.prototype.handleWheel = function ( delta ){
  292.         this.getFlippingBookReference().onWheelScroll( delta );
  293. }
  294.  
  295. flippingBook = new FlippingBook();
  296.  
  297. function wheel(event){
  298.         var delta = 0;
  299.         if (!event) event = window.event;
  300.         if (event.wheelDelta) {
  301.                 delta = event.wheelDelta/120;
  302.                 if (window.opera) delta = -delta;
  303.         } else if (event.detail) {
  304.                 delta = -event.detail/3;
  305.         }
  306.         if (delta)
  307.                 flippingBook.handleWheel(delta);
  308.         if (event.preventDefault)
  309.                 event.preventDefault();
  310.         event.returnValue = false;
  311. }
  312.  
  313. if (window.addEventListener)
  314.         window.addEventListener('DOMMouseScroll', wheel, false);
  315. window.onmousewheel = document.onmousewheel = wheel;

Raw Paste


Login or Register to edit or fork this paste. It's free.