var images = [];
var done = 0;
var display = 1;
var dir;
var curPanel = 0;
//Generic error handler
function errorHandler(e) {
console.log("*** ERROR ***");
console.dir(e);
}
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
function init() {
var params = getSearchParameters();
if(params['library'] !== undefined) {
var modalString = 'Downloading comic from library.';
$("#statusModalText").html(modalString);
$("#statusModal").modal({keyboard:false});
console.log('Library = '+params['library']);
// Get file from library
var xhr = new XMLHttpRequest();
xhr.open('GET', 'library/'+params['library'], true);
xhr.responseType = 'blob';
xhr.onprogress = function(e) {
var done = e.position || e.loaded;
var total = e.totalSize || e.total;
var present = Math.floor(done / total * 100);
var pString = 'Downloading comic from library.';
pString += '
';
pString += '
';
pString += '
';
$("#statusModalText").html(pString);
};
xhr.onload = function(e) {
if (this.status == 200) {
var myBlob = this.response;
handleFile(myBlob);
}
};
xhr.send();
}
// Upload file
window.webkitStorageInfo.requestQuota(window.TEMPORARY, 20*1024*1024, function(grantedBytes) {
window.webkitRequestFileSystem(window.TEMPORARY, grantedBytes, onInitFs, errorHandler);
}, errorHandler);
}
function onInitFs(fs) {
dir = fs.root;
$(document).on("dragover", dragOverHandler);
$(document).on("drop", dropHandler);
console.log('onInitFs done, new');
}
function dragOverHandler(e) {
e.preventDefault();
}
function dropHandler(e) {
e.stopPropagation();
e.preventDefault();
if(!e.originalEvent.dataTransfer.files) return;
var files = e.originalEvent.dataTransfer.files;
var count = files.length;
if(!count) return;
//Only one file allowed
if(count > 1) {
doError("You may only drop one file.");
return;
}
handleFile(files[0]);
}
function doError(s) {
var errorBlock = "";
errorBlock += '
';
errorBlock += "
"+s+"
";
errorBlock += "
";
$("#alertArea").html(errorBlock);
}
// Dropbox support
options = {
linkType: "direct",
success: function(files) {
handleDropboxFile(files[0].link);
},
cancel: function() { }
};
function handleFile(file) {
console.log(file);
zip.workerScriptsPath = "js/";
zip.createReader(new zip.BlobReader(file), function(reader) {
console.log("Created reader.");
reader.getEntries(function(entries) {
console.log("Got entries.");
$("#introText").hide();
//Start a modal for our status
var modalString = 'Parsed the CBZ - Saving Images. This takes a long time!';
$("#statusModalText").html(modalString);
$("#statusModal").modal({keyboard:false});
entries.forEach(function(entry) {
if(!entry.directory && entry.filename.indexOf(".jpg") != -1) {
//rewrite w/o a path
var cleanName = entry.filename;
if(cleanName.indexOf("/") >= 0) cleanName = cleanName.split("/").pop();
dir.getFile(cleanName, {create:true}, function(file) {
console.log("Yes, I opened "+file.fullPath);
images.push({path:file.toURL(), loaded:false})
entry.getData(new zip.FileWriter(file), function(e) {
done++;
var perc = Math.floor((done/images.length)*100);
var pString = 'Processing images.';
pString += '';
pString += '
';
pString += '
';
$("#statusModalText").html(pString);
for(var i=0; i= images.length || num+index < 0) {
$(this).hide();
} else {
$(this).attr("src",images[num+index].path);
$(this).show();
}
});
$("#panelCount").html("Panel "+(curPanel+display)+" out of "+images.length);
}
function prevPanel() {
if(curPanel > 0) drawPanel(curPanel-display);
}
function nextPanel() {
if(curPanel+display < images.length) drawPanel(curPanel+display);
}
function fitHorizontal() {
$("#comicImages").removeClass();
$("#comicImages img").removeClass();
$("#comicImages img").addClass('fitHorizontal');
}
function fitVertical() {
$("#comicImages img").removeClass();
$("#comicImages img").addClass('fitVertical');
$("#comicImages").addClass('fit');
}
function fitBoth() {
$("#comicImages img").removeClass();
$("#comicImages img").addClass('fitBoth');
$("#comicImages").addClass('fit');
}
function singleSpread() { $("#singlePage").parent().hide(); $("#fullSpread").parent().show(); spread(1); }
function fullSpread() { $("#singlePage").parent().show(); $("#fullSpread").parent().hide(); spread(2); }
function spread(num) {
$('body').removeClass('spread'+display);
display = num;
$('body').addClass('spread'+display);
$("#comicImages").empty();
for(i=0; i < display; i++) {
var image = document.createElement("img");
$("#comicImages").append(image);
}
drawPanel(curPanel);
fitBoth();
}