mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Code cosmetics
This commit is contained in:
		| @@ -15,7 +15,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|  | ||||
|     // =========================================================================== | ||||
|     // Stolen from Closure because it's the best way to do Java-like inheritance. | ||||
|     bitjs.base = function(me, opt_methodName, var_args) { | ||||
|     bitjs.base = function(me, optMethodName, var_args) { | ||||
|         var caller = arguments.callee.caller; | ||||
|         if (caller.superClass_) { | ||||
|             // This is a constructor. Call the superclass constructor. | ||||
| @@ -27,10 +27,10 @@ bitjs.archive = bitjs.archive || {}; | ||||
|         var foundCaller = false; | ||||
|         for (var ctor = me.constructor; | ||||
|             ctor; ctor = ctor.superClass_ && ctor.superClass_.constructor) { | ||||
|             if (ctor.prototype[opt_methodName] === caller) { | ||||
|             if (ctor.prototype[optMethodName] === caller) { | ||||
|                 foundCaller = true; | ||||
|             } else if (foundCaller) { | ||||
|                 return ctor.prototype[opt_methodName].apply(me, args); | ||||
|                 return ctor.prototype[optMethodName].apply(me, args); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -38,12 +38,12 @@ bitjs.archive = bitjs.archive || {}; | ||||
|         // then one of two things happened: | ||||
|         // 1) The caller is an instance method. | ||||
|         // 2) This method was not called by the right caller. | ||||
|         if (me[opt_methodName] === caller) { | ||||
|             return me.constructor.prototype[opt_methodName].apply(me, args); | ||||
|         if (me[optMethodName] === caller) { | ||||
|             return me.constructor.prototype[optMethodName].apply(me, args); | ||||
|         } else { | ||||
|             throw Error( | ||||
|                 'goog.base called from a method of one name ' + | ||||
|                 'to a method of a different name'); | ||||
|                 "goog.base called from a method of one name " + | ||||
|                 "to a method of a different name"); | ||||
|         } | ||||
|     }; | ||||
|     bitjs.inherits = function(childCtor, parentCtor) { | ||||
| @@ -75,12 +75,12 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      * The UnarchiveEvent types. | ||||
|      */ | ||||
|     bitjs.archive.UnarchiveEvent.Type = { | ||||
|         START: 'start', | ||||
|         PROGRESS: 'progress', | ||||
|         EXTRACT: 'extract', | ||||
|         FINISH: 'finish', | ||||
|         INFO: 'info', | ||||
|         ERROR: 'error' | ||||
|         START: "start", | ||||
|         PROGRESS: "progress", | ||||
|         EXTRACT: "extract", | ||||
|         FINISH: "finish", | ||||
|         INFO: "info", | ||||
|         ERROR: "error" | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
| @@ -141,12 +141,12 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      * Progress event. | ||||
|      */ | ||||
|     bitjs.archive.UnarchiveProgressEvent = function( | ||||
|             currentFilename, | ||||
|             currentFileNumber, | ||||
|             currentBytesUnarchivedInFile, | ||||
|             currentBytesUnarchived, | ||||
|             totalUncompressedBytesInArchive, | ||||
|             totalFilesInArchive) | ||||
|         currentFilename, | ||||
|         currentFileNumber, | ||||
|         currentBytesUnarchivedInFile, | ||||
|         currentBytesUnarchived, | ||||
|         totalUncompressedBytesInArchive, | ||||
|         totalFilesInArchive) | ||||
|     { | ||||
|         bitjs.base(this, bitjs.archive.UnarchiveEvent.Type.PROGRESS); | ||||
|  | ||||
| @@ -188,10 +188,10 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      * Base class for all Unarchivers. | ||||
|      * | ||||
|      * @param {ArrayBuffer} arrayBuffer The Array Buffer. | ||||
|      * @param {string} opt_pathToBitJS Optional string for where the BitJS files are located. | ||||
|      * @param {string} optPathToBitJS Optional string for where the BitJS files are located. | ||||
|      * @constructor | ||||
|      */ | ||||
|     bitjs.archive.Unarchiver = function(arrayBuffer, opt_pathToBitJS) { | ||||
|     bitjs.archive.Unarchiver = function(arrayBuffer, optPathToBitJS) { | ||||
|         /** | ||||
|         * The ArrayBuffer object. | ||||
|         * @type {ArrayBuffer} | ||||
| @@ -204,7 +204,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|         * @type {string} | ||||
|         * @private | ||||
|         */ | ||||
|         this.pathToBitJS_ = opt_pathToBitJS || ''; | ||||
|         this.pathToBitJS_ = optPathToBitJS || ""; | ||||
|  | ||||
|         /** | ||||
|         * A map from event type to an array of listeners. | ||||
| @@ -229,7 +229,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      * @protected. | ||||
|      */ | ||||
|     bitjs.archive.Unarchiver.prototype.getScriptFileName = function() { | ||||
|         throw 'Subclasses of AbstractUnarchiver must overload getScriptFileName()'; | ||||
|         throw "Subclasses of AbstractUnarchiver must overload getScriptFileName()"; | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
| @@ -240,7 +240,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      */ | ||||
|     bitjs.archive.Unarchiver.prototype.addEventListener = function(type, listener) { | ||||
|         if (type in this.listeners_) { | ||||
|             if (this.listeners_[type].indexOf(listener) == -1) { | ||||
|             if (this.listeners_[type].indexOf(listener) === -1) { | ||||
|                 this.listeners_[type].push(listener); | ||||
|             } | ||||
|         } | ||||
| @@ -255,7 +255,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|     bitjs.archive.Unarchiver.prototype.removeEventListener = function(type, listener) { | ||||
|         if (type in this.listeners_) { | ||||
|             var index = this.listeners_[type].indexOf(listener); | ||||
|             if (index != -1) { | ||||
|             if (index !== -1) { | ||||
|                 this.listeners_[type].splice(index, 1); | ||||
|             } | ||||
|         } | ||||
| @@ -270,8 +270,10 @@ bitjs.archive = bitjs.archive || {}; | ||||
|     bitjs.archive.Unarchiver.prototype.handleWorkerEvent_ = function(e) { | ||||
|         if ((e instanceof bitjs.archive.UnarchiveEvent || e.type) && | ||||
|             this.listeners_[e.type] instanceof Array) { | ||||
|             this.listeners_[e.type].forEach(function (listener) { listener(e) }); | ||||
|             if (e.type == bitjs.archive.UnarchiveEvent.Type.FINISH) { | ||||
|             this.listeners_[e.type].forEach(function (listener) { | ||||
|                 listener(e); | ||||
|             }); | ||||
|             if (e.type === bitjs.archive.UnarchiveEvent.Type.FINISH) { | ||||
|                 this.worker_.terminate(); | ||||
|             } | ||||
|         } else { | ||||
| @@ -281,20 +283,20 @@ bitjs.archive = bitjs.archive || {}; | ||||
|  | ||||
|     /** | ||||
|      * Starts the unarchive in a separate Web Worker thread and returns immediately. | ||||
|      */ | ||||
|      bitjs.archive.Unarchiver.prototype.start = function() { | ||||
|     */ | ||||
|     bitjs.archive.Unarchiver.prototype.start = function() { | ||||
|         var me = this; | ||||
|         var scriptFileName = this.pathToBitJS_ + this.getScriptFileName(); | ||||
|         if (scriptFileName) { | ||||
|             this.worker_ = new Worker(scriptFileName); | ||||
|  | ||||
|             this.worker_.onerror = function(e) { | ||||
|                 console.log('Worker error: message = ' + e.message); | ||||
|                 console.log("Worker error: message = " + e.message); | ||||
|                 throw e; | ||||
|             }; | ||||
|  | ||||
|             this.worker_.onmessage = function(e) { | ||||
|                 if (typeof e.data == 'string') { | ||||
|                 if (typeof e.data == "string") { | ||||
|                     // Just log any strings the workers pump our way. | ||||
|                     console.log(e.data); | ||||
|                 } else { | ||||
| @@ -323,32 +325,38 @@ bitjs.archive = bitjs.archive || {}; | ||||
|      * @extends {bitjs.archive.Unarchiver} | ||||
|      * @constructor | ||||
|      */ | ||||
|     bitjs.archive.Unzipper = function(arrayBuffer, opt_pathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, opt_pathToBitJS); | ||||
|     bitjs.archive.Unzipper = function(arrayBuffer, optPathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, optPathToBitJS); | ||||
|     }; | ||||
|     bitjs.inherits(bitjs.archive.Unzipper, bitjs.archive.Unarchiver); | ||||
|     bitjs.archive.Unzipper.prototype.getScriptFileName = function() { return 'unzip.js' }; | ||||
|     bitjs.archive.Unzipper.prototype.getScriptFileName = function() { | ||||
|         return "unzip.js"; | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Unrarrer | ||||
|      * @extends {bitjs.archive.Unarchiver} | ||||
|      * @constructor | ||||
|      */ | ||||
|     bitjs.archive.Unrarrer = function(arrayBuffer, opt_pathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, opt_pathToBitJS); | ||||
|     bitjs.archive.Unrarrer = function(arrayBuffer, optPathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, optPathToBitJS); | ||||
|     }; | ||||
|     bitjs.inherits(bitjs.archive.Unrarrer, bitjs.archive.Unarchiver); | ||||
|     bitjs.archive.Unrarrer.prototype.getScriptFileName = function() { return 'unrar.js' }; | ||||
|     bitjs.archive.Unrarrer.prototype.getScriptFileName = function() { | ||||
|         return "unrar.js"; | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Untarrer | ||||
|      * @extends {bitjs.archive.Unarchiver} | ||||
|      * @constructor | ||||
|      */ | ||||
|     bitjs.archive.Untarrer = function(arrayBuffer, opt_pathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, opt_pathToBitJS); | ||||
|     bitjs.archive.Untarrer = function(arrayBuffer, optPathToBitJS) { | ||||
|         bitjs.base(this, arrayBuffer, optPathToBitJS); | ||||
|     }; | ||||
|     bitjs.inherits(bitjs.archive.Untarrer, bitjs.archive.Unarchiver); | ||||
|     bitjs.archive.Untarrer.prototype.getScriptFileName = function() { return 'untar.js' }; | ||||
|     bitjs.archive.Untarrer.prototype.getScriptFileName = function() { | ||||
|         return "untar.js"; | ||||
|     }; | ||||
|  | ||||
| })(); | ||||
|   | ||||
| @@ -417,14 +417,14 @@ bitjs.io = bitjs.io || {}; | ||||
|      */ | ||||
|     bitjs.io.ByteBuffer.prototype.writeNumber = function(num, numBytes) { | ||||
|         if (numBytes < 1) { | ||||
|             throw 'Trying to write into too few bytes: ' + numBytes; | ||||
|             throw "Trying to write into too few bytes: " + numBytes; | ||||
|         } | ||||
|         if (num < 0) { | ||||
|             throw 'Trying to write a negative number (' + num + | ||||
|                 ') as an unsigned number to an ArrayBuffer'; | ||||
|             throw "Trying to write a negative number (" + num + | ||||
|                 ") as an unsigned number to an ArrayBuffer"; | ||||
|         } | ||||
|         if (num > (Math.pow(2, numBytes * 8) - 1)) { | ||||
|             throw 'Trying to write ' + num + ' into only ' + numBytes + ' bytes'; | ||||
|             throw "Trying to write " + num + " into only " + numBytes + " bytes"; | ||||
|         } | ||||
|  | ||||
|         // Roll 8-bits at a time into an array of bytes. | ||||
|   | ||||
| @@ -17,9 +17,13 @@ | ||||
| */ | ||||
|  | ||||
| if (window.opera) { | ||||
|     window.console.log = function(str) {opera.postError(str);}; | ||||
|     window.console.log = function(str) { | ||||
|         opera.postError(str); | ||||
|     }; | ||||
| } | ||||
|  | ||||
| var kthoom; | ||||
|  | ||||
| // gets the element with the given id | ||||
| function getElem(id) { | ||||
|     if (document.documentElement.querySelector) { | ||||
| @@ -31,7 +35,7 @@ function getElem(id) { | ||||
| } | ||||
|  | ||||
| if (window.kthoom === undefined) { | ||||
|     var kthoom = {}; | ||||
|     kthoom = {}; | ||||
| } | ||||
|  | ||||
| // key codes | ||||
| @@ -58,27 +62,23 @@ var imageFiles = []; | ||||
| var imageFilenames = []; | ||||
| var totalImages = 0; | ||||
| var lastCompletion = 0; | ||||
| var library = { | ||||
|         allBooks: [], | ||||
|         currentBookNum: 0, | ||||
| }; | ||||
|    | ||||
|  | ||||
| var hflip = false, vflip = false, fitMode = kthoom.Key.B; | ||||
| var canKeyNext = true, canKeyPrev = true; | ||||
|  | ||||
| kthoom.saveSettings = function() { | ||||
|     localStorage.kthoom_settings = JSON.stringify({ | ||||
|     localStorage.kthoomSettings = JSON.stringify({ | ||||
|         rotateTimes: kthoom.rotateTimes, | ||||
|         hflip: hflip, | ||||
|         vflip: vflip, | ||||
|         fitMode: fitMode | ||||
|     }); | ||||
| } | ||||
| }; | ||||
|  | ||||
| kthoom.loadSettings = function() { | ||||
|     try { | ||||
|         if (localStorage.kthoom_settings.length < 10) return; | ||||
|         var s = JSON.parse(localStorage.kthoom_settings); | ||||
|         if (localStorage.kthoomSettings.length < 10) return; | ||||
|         var s = JSON.parse(localStorage.kthoomSettings); | ||||
|         kthoom.rotateTimes = s.rotateTimes; | ||||
|         hflip = s.hflip; | ||||
|         vflip = s.vflip; | ||||
| @@ -88,6 +88,36 @@ kthoom.loadSettings = function() { | ||||
|     } | ||||
| } | ||||
|  | ||||
| var createURLFromArray = function(array, mimeType) { | ||||
|     var offset = array.byteOffset, len = array.byteLength; | ||||
|     var bb, url; | ||||
|     var blob; | ||||
|  | ||||
|     // TODO: Move all this browser support testing to a common place | ||||
|     //     and do it just once. | ||||
|  | ||||
|     // Blob constructor, see http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob. | ||||
|     if (typeof Blob == "function") { | ||||
|         blob = new Blob([array], {type: mimeType}); | ||||
|     } else { | ||||
|         throw "Browser support for Blobs is missing." | ||||
|     } | ||||
|  | ||||
|     if (blob.slice) { | ||||
|         blob = blob.slice(offset, offset + len, mimeType); | ||||
|     } else { | ||||
|         throw "Browser support for Blobs is missing." | ||||
|     } | ||||
|  | ||||
|     if ((typeof URL != "function" && typeof URL != "object") || | ||||
|       typeof URL.createObjectURL != "function") { | ||||
|         throw "Browser support for Object URLs is missing"; | ||||
|     } | ||||
|  | ||||
|     return URL.createObjectURL(blob); | ||||
| } | ||||
|  | ||||
|  | ||||
| // Stores an image filename and its data: URI. | ||||
| // TODO: investigate if we really need to store as base64 (leave off ;base64 and just | ||||
| //       non-safe URL characters are encoded as %xx ?) | ||||
| @@ -95,9 +125,9 @@ kthoom.loadSettings = function() { | ||||
| kthoom.ImageFile = function(file) { | ||||
|     this.filename = file.filename; | ||||
|     var fileExtension = file.filename.split(".").pop().toLowerCase(); | ||||
|     var mimeType = fileExtension =="png" ? "image/png" : | ||||
|     var mimeType = fileExtension === "png" ? "image/png" : | ||||
|         (fileExtension === "jpg" || fileExtension === "jpeg") ? "image/jpeg" : | ||||
|         fileExtension === "gif" ? "image/gif" : undefined; | ||||
|             fileExtension === "gif" ? "image/gif" : null; | ||||
|     this.dataURI = createURLFromArray(file.fileData, mimeType); | ||||
|     this.data = file; | ||||
| }; | ||||
| @@ -189,52 +219,51 @@ kthoom.initProgressMeter = function() { | ||||
|     pdiv.appendChild(svg); | ||||
|    | ||||
|     svg.onclick = function(e) { | ||||
|         for (var x = pdiv, l = 0; x != document.documentElement; x = x.parentNode) l += x.offsetLeft; | ||||
|         var page = Math.max(1, Math.ceil(((e.clientX - l)/pdiv.offsetWidth) * totalImages)) - 1; | ||||
|         for (var x = pdiv, l = 0; x !== document.documentElement; x = x.parentNode) l += x.offsetLeft; | ||||
|         var page = Math.max(1, Math.ceil(((e.clientX - l) / pdiv.offsetWidth) * totalImages)) - 1; | ||||
|         currentImage = page; | ||||
|         updatePage(); | ||||
|     }; | ||||
| } | ||||
|  | ||||
| kthoom.setProgressMeter = function(pct, opt_label) { | ||||
|     var pct = (pct*100); | ||||
|     var part = 1/totalImages; | ||||
|     var remain = ((pct - lastCompletion)/100)/part; | ||||
| kthoom.setProgressMeter = function(pct, optLabel) { | ||||
|     pct = (pct * 100); | ||||
|     var part = 1 / totalImages; | ||||
|     var remain = ((pct - lastCompletion) / 100) / part; | ||||
|     var fract = Math.min(1, remain); | ||||
|     var smartpct = ((imageFiles.length/totalImages) + fract * part )* 100; | ||||
|     if (totalImages == 0) smartpct = pct; | ||||
|     var smartpct = ((imageFiles.length / totalImages) + (fract * part))* 100; | ||||
|     if (totalImages === 0) smartpct = pct; | ||||
|    | ||||
|       // + Math.min((pct - lastCompletion), 100/totalImages * 0.9 + (pct - lastCompletion - 100/totalImages)/2, 100/totalImages); | ||||
|       var oldval = parseFloat(getElem("meter").getAttribute("width")); | ||||
|       if (isNaN(oldval)) oldval = 0; | ||||
|       var weight = 0.5; | ||||
|       smartpct = (weight * smartpct + (1-weight) * oldval); | ||||
|       if (pct == 100) smartpct = 100; | ||||
|      | ||||
|       if (!isNaN(smartpct)) { | ||||
|     // + Math.min((pct - lastCompletion), 100/totalImages * 0.9 + (pct - lastCompletion - 100/totalImages)/2, 100/totalImages); | ||||
|     var oldval = parseFloat(getElem("meter").getAttribute("width")); | ||||
|     if (isNaN(oldval)) oldval = 0; | ||||
|     var weight = 0.5; | ||||
|     smartpct = ((weight * smartpct) + ((1 - weight) * oldval)); | ||||
|     if (pct == 100) smartpct = 100; | ||||
|  | ||||
|     if (!isNaN(smartpct)) { | ||||
|         getElem("meter").setAttribute("width", smartpct + "%"); | ||||
|       } | ||||
|       var title = getElem("progress_title"); | ||||
|       while (title.firstChild) title.removeChild(title.firstChild); | ||||
|     } | ||||
|     var title = getElem("progress_title"); | ||||
|     while (title.firstChild) title.removeChild(title.firstChild); | ||||
|  | ||||
|       var labelText = pct.toFixed(2) + "% " + imageFiles.length + "/" + totalImages + ""; | ||||
|       if (opt_label) { | ||||
|         labelText = opt_label + " " + labelText; | ||||
|       } | ||||
|       title.appendChild(document.createTextNode(labelText)); | ||||
|     var labelText = pct.toFixed(2) + "% " + imageFiles.length + "/" + totalImages + ""; | ||||
|     if (optLabel) { | ||||
|         labelText = optLabel + " " + labelText; | ||||
|     } | ||||
|     title.appendChild(document.createTextNode(labelText)); | ||||
|  | ||||
|       getElem("meter2").setAttribute("width", | ||||
|           100 * (totalImages == 0 ? 0 : ((currentImage+1)/totalImages)) + "%"); | ||||
|    | ||||
|       var title = getElem("page"); | ||||
|       while (title.firstChild) title.removeChild(title.firstChild); | ||||
|       title.appendChild(document.createTextNode( (currentImage+1) + '/' + totalImages )); | ||||
|    | ||||
|    | ||||
|       if (pct > 0) { | ||||
|     getElem("meter2").setAttribute("width", | ||||
|         100 * (totalImages == 0 ? 0 : ((currentImage+1) / totalImages)) + "%"); | ||||
|  | ||||
|     var title = getElem("page"); | ||||
|     while (title.firstChild) title.removeChild(title.firstChild); | ||||
|     title.appendChild(document.createTextNode( (currentImage+1) + '/' + totalImages )); | ||||
|  | ||||
|     if (pct > 0) { | ||||
|         //getElem('nav').className = ''; | ||||
|         getElem("progress").className = ''; | ||||
|       } | ||||
|     } | ||||
| } | ||||
|  | ||||
| function loadFromArrayBuffer(ab) { | ||||
| @@ -275,43 +304,15 @@ function loadFromArrayBuffer(ab) { | ||||
|                 } | ||||
|             }); | ||||
|         unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.FINISH, | ||||
|         function(e) { | ||||
|             var diff = ((new Date).getTime() - start)/1000; | ||||
|             console.log("Unarchiving done in " + diff + "s"); | ||||
|         }); | ||||
|             function(e) { | ||||
|                 var diff = ((new Date).getTime() - start)/1000; | ||||
|                 console.log("Unarchiving done in " + diff + "s"); | ||||
|             }); | ||||
|         unarchiver.start(); | ||||
|     } else { | ||||
|         alert("Some error"); | ||||
|     } | ||||
| } | ||||
| var createURLFromArray = function(array, mimeType) { | ||||
|     var offset = array.byteOffset, len = array.byteLength; | ||||
|     var bb, url; | ||||
|     var blob; | ||||
|  | ||||
|     // TODO: Move all this browser support testing to a common place | ||||
|     //     and do it just once. | ||||
|  | ||||
|     // Blob constructor, see http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob. | ||||
|     if (typeof Blob == "function") { | ||||
|         blob = new Blob([array], {type: mimeType}); | ||||
|     } else { | ||||
|         throw "Browser support for Blobs is missing." | ||||
|     } | ||||
|  | ||||
|     if (blob.slice) { | ||||
|         blob = blob.slice(offset, offset + len, mimeType); | ||||
|     } else { | ||||
|         throw "Browser support for Blobs is missing." | ||||
|     } | ||||
|  | ||||
|     if ((typeof URL != "function" && typeof URL != "object") || | ||||
|       typeof URL.createObjectURL != "function") { | ||||
|         throw "Browser support for Object URLs is missing"; | ||||
|     } | ||||
|  | ||||
|     return URL.createObjectURL(blob); | ||||
| } | ||||
|  | ||||
|  | ||||
| function updatePage() { | ||||
| @@ -319,8 +320,8 @@ function updatePage() { | ||||
|     while (title.firstChild) title.removeChild(title.firstChild); | ||||
|     title.appendChild(document.createTextNode( (currentImage+1) + "/" + totalImages )); | ||||
|  | ||||
|     getElem("meter2").setAttribute("width", | ||||
|       100 * (totalImages == 0 ? 0 : ((currentImage+1)/totalImages)) + "%"); | ||||
|     getElem('meter2').setAttribute('width', | ||||
|     	100 * (totalImages == 0 ? 0 : ((currentImage+1)/totalImages)) + "%"); | ||||
|     if (imageFiles[currentImage]) { | ||||
|         setImage(imageFiles[currentImage].dataURI); | ||||
|     } else { | ||||
| @@ -414,56 +415,42 @@ function setImage(url) { | ||||
|  | ||||
| function showPrevPage() { | ||||
|     currentImage--; | ||||
|  | ||||
|     if (currentImage < 0) { | ||||
|         if (library.allBooks.length == 1) { | ||||
|             currentImage = imageFiles.length - 1; | ||||
|         } else if (library.currentBookNum > 0) { | ||||
|             loadPrevBook(); | ||||
|         } else { | ||||
|             // Freeze on the current page. | ||||
|             currentImage++; | ||||
|             return; | ||||
|         } | ||||
|         // Freeze on the current page. | ||||
|         currentImage++; | ||||
|     } else { | ||||
|         updatePage(); | ||||
|     } | ||||
|     updatePage(); | ||||
| } | ||||
|  | ||||
| function showNextPage() { | ||||
|     currentImage++; | ||||
|    | ||||
|     if (currentImage >= Math.max(totalImages, imageFiles.length)) { | ||||
|         if (library.allBooks.length == 1) { | ||||
|             currentImage = 0; | ||||
|         } else if (library.currentBookNum < library.allBooks.length - 1) { | ||||
|             loadNextBook(); | ||||
|         } else { | ||||
|             // Freeze on the current page. | ||||
|             currentImage--; | ||||
|             return; | ||||
|         } | ||||
|         // Freeze on the current page. | ||||
|         currentImage--; | ||||
|     } else { | ||||
|         updatePage(); | ||||
|     } | ||||
|     updatePage(); | ||||
| } | ||||
|  | ||||
| function updateScale(clear) { | ||||
|     var mainImageStyle = getElem("mainImage").style; | ||||
|     mainImageStyle.width = ""; | ||||
|     mainImageStyle.height = ""; | ||||
|     mainImageStyle.maxWidth = ""; | ||||
|     mainImageStyle.maxHeight = ""; | ||||
|   var mainImageStyle = getElem('mainImage').style; | ||||
|   mainImageStyle.width = ''; | ||||
|   mainImageStyle.height = ''; | ||||
|   mainImageStyle.maxWidth = ''; | ||||
|   mainImageStyle.maxHeight = ''; | ||||
|     var maxheight = innerHeight - 15; | ||||
|     if (!/main/.test(getElem("titlebar").className)) { | ||||
|   if (!/main/.test(getElem('titlebar').className)) { | ||||
|         maxheight -= 25; | ||||
|     } | ||||
|     if (clear || fitMode == kthoom.Key.N) { | ||||
|     } else if (fitMode == kthoom.Key.B) { | ||||
|         mainImageStyle.maxWidth = "100%"; | ||||
|         mainImageStyle.maxHeight = maxheight + "px"; | ||||
|     mainImageStyle.maxWidth = '100%'; | ||||
|     mainImageStyle.maxHeight = maxheight + 'px'; | ||||
|     } else if (fitMode == kthoom.Key.H) { | ||||
|         mainImageStyle.height = maxheight + "px"; | ||||
|     mainImageStyle.height = maxheight + 'px'; | ||||
|     } else if (fitMode == kthoom.Key.W) { | ||||
|         mainImageStyle.width = "100%"; | ||||
|     mainImageStyle.width = '100%'; | ||||
|     } | ||||
|     kthoom.saveSettings(); | ||||
| } | ||||
| @@ -471,8 +458,9 @@ function updateScale(clear) { | ||||
| function keyHandler(evt) { | ||||
|     var code = evt.keyCode; | ||||
|  | ||||
|     if (getComputedStyle(getElem("progress")).display == "none") return; | ||||
|     canKeyNext = ((document.body.offsetWidth+document.body.scrollLeft)/ document.body.scrollWidth) >= 1; | ||||
|     if ($("#progress").css('display') == "none") | ||||
|         return; | ||||
|     canKeyNext = (($("body").css("offsetWidth")+$("body").css("scrollLeft"))/ $("body").css("scrollWidth")) >= 1; | ||||
|     canKeyPrev = (scrollX <= 0); | ||||
|  | ||||
|     if (evt.ctrlKey || evt.shiftKey || evt.metaKey) return; | ||||
| @@ -561,8 +549,8 @@ function init(filename) { | ||||
|         $("#mainImage").click(function(evt) { | ||||
|             // Firefox does not support offsetX/Y so we have to manually calculate | ||||
|             // where the user clicked in the image. | ||||
|             var mainContentWidth = getElem("mainContent").clientWidth; | ||||
|             var mainContentHeight = getElem("mainContent").clientHeight; | ||||
|             var mainContentWidth = $("#mainContent").width(); | ||||
|             var mainContentHeight = $("#mainContent").height(); | ||||
|             var comicWidth = evt.target.clientWidth; | ||||
|             var comicHeight = evt.target.clientHeight; | ||||
|             var offsetX = (mainContentWidth - comicWidth) / 2; | ||||
| @@ -588,9 +576,9 @@ function init(filename) { | ||||
|               break; | ||||
|             } | ||||
|             if (clickedPrev) { | ||||
|             showPrevPage(); | ||||
|                 showPrevPage(); | ||||
|             } else { | ||||
|             showNextPage(); | ||||
|                 showNextPage(); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|   | ||||
| @@ -42,7 +42,7 @@ var postProgress = function() { | ||||
| var readCleanString = function(bstr, numBytes) { | ||||
|     var str = bstr.readString(numBytes); | ||||
|     var zIndex = str.indexOf(String.fromCharCode(0)); | ||||
|     return zIndex != -1 ? str.substr(0, zIndex) : str; | ||||
|     return zIndex !== -1 ? str.substr(0, zIndex) : str; | ||||
| }; | ||||
|  | ||||
| // takes a ByteStream and parses out the local file information | ||||
| @@ -61,7 +61,7 @@ var TarLocalFile = function(bstream) { | ||||
|     this.linkname = readCleanString(bstream, 100); | ||||
|     this.maybeMagic = readCleanString(bstream, 6); | ||||
|  | ||||
|     if (this.maybeMagic == "ustar") { | ||||
|     if (this.maybeMagic === "ustar") { | ||||
|         this.version = readCleanString(bstream, 2); | ||||
|         this.uname = readCleanString(bstream, 32); | ||||
|         this.gname = readCleanString(bstream, 32); | ||||
| @@ -71,10 +71,10 @@ var TarLocalFile = function(bstream) { | ||||
|  | ||||
|         if (this.prefix.length) { | ||||
|             this.name = this.prefix + this.name; | ||||
|   	    } | ||||
|   	    bstream.readBytes(12); // 512 - 500 | ||||
|         } | ||||
|         bstream.readBytes(12); // 512 - 500 | ||||
|     } else { | ||||
|       	bstream.readBytes(255); // 512 - 257 | ||||
|         bstream.readBytes(255); // 512 - 257 | ||||
|     } | ||||
|    | ||||
|     // Done header, now rest of blocks are the file contents. | ||||
| @@ -86,7 +86,7 @@ var TarLocalFile = function(bstream) { | ||||
|     info("  typeflag = " + this.typeflag); | ||||
|  | ||||
|     // A regular file. | ||||
|     if (this.typeflag == 0) { | ||||
|     if (this.typeflag === 0) { | ||||
|         info("  This is a regular file."); | ||||
|         var sizeInBytes = parseInt(this.size); | ||||
|         this.fileData = new Uint8Array(bstream.bytes.buffer, bstream.ptr, this.size); | ||||
| @@ -101,8 +101,8 @@ var TarLocalFile = function(bstream) { | ||||
|         if (remaining > 0 && remaining < 512) { | ||||
|             bstream.readBytes(remaining); | ||||
|         } | ||||
|     } else if (this.typeflag == 5) { | ||||
|         info("  This is a directory.") | ||||
|     } else if (this.typeflag === 5) { | ||||
|         info("  This is a directory."); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| @@ -122,7 +122,7 @@ var untar = function(arrayBuffer) { | ||||
|     var localFiles = []; | ||||
|  | ||||
|     // While we don't encounter an empty block, keep making TarLocalFiles. | ||||
|     while (bstream.peekNumber(4) != 0) { | ||||
|     while (bstream.peekNumber(4) !== 0) { | ||||
|         var oneLocalFile = new TarLocalFile(bstream); | ||||
|         if (oneLocalFile && oneLocalFile.isValid) { | ||||
|             localFiles.push(oneLocalFile); | ||||
| @@ -132,7 +132,7 @@ var untar = function(arrayBuffer) { | ||||
|     totalFilesInArchive = localFiles.length; | ||||
|  | ||||
|     // got all local files, now sort them | ||||
|     localFiles.sort(function(a,b) { | ||||
|     localFiles.sort(function(a, b) { | ||||
|         var aname = a.filename.toLowerCase(); | ||||
|         var bname = b.filename.toLowerCase(); | ||||
|         return aname > bname ? 1 : -1; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 OzzieIsaacs
					OzzieIsaacs