Luz Paz 96e3049197 Fix follow-up typos
Found via `codespell -q 3 -S "*.svg,./Changelog.*,./recipes,./resources/dictionaries,./src/unicode_names/names.h" -L alo,ans,bootup,clen,fo,lokales,nam,nd,oclock,pard,re-use,re-used,ro,secnd,som,succeded,te,ue,vailable`
2025-03-22 19:40:58 -04:00

227 lines
5.1 KiB
JavaScript

var gPosition = 0;
var gProgress = 0;
var gCurrentPage = 0;
var gPageCount = 0;
var gClientHeight = null;
function getPosition()
{
return gPosition;
}
function getProgress()
{
return gProgress;
}
function getPageCount()
{
return gPageCount;
}
function getCurrentPage()
{
return gCurrentPage;
}
function turnOnNightMode(nightModeOn) {
var body = document.getElementsByTagName('body')[0].style;
var aTags = document.getElementsByTagName('a');
var textColor;
var bgColor;
if (nightModeOn > 0) {
textColor = "#FFFFFF !important";
bgColor = "#000000 !important";
} else {
textColor = "#000000 !important";
bgColor = "#FFFFFF !important";
}
for (i = 0; i < aTags.length; i++) {
aTags[i].style.color = textColor;
}
body.color = textColor;
body.backgroundColor = bgColor;
window.device.turnOnNightModeDone();
}
function setupBookColumns()
{
var body = document.getElementsByTagName('body')[0].style;
body.marginLeft = '0px !important';
body.marginRight = '0px !important';
body.marginTop = '0px !important';
body.marginBottom = '0px !important';
body.paddingTop = '0px !important';
body.paddingBottom = '0px !important';
body.webkitNbspMode = 'space';
var bc = document.getElementById('book-columns').style;
bc.width = (window.innerWidth * 2) + 'px !important';
bc.height = window.innerHeight + 'px !important';
bc.marginTop = '0px !important';
bc.webkitColumnWidth = window.innerWidth + 'px !important';
bc.webkitColumnGap = '0px !important';
bc.overflow = 'none';
bc.paddingTop = '0px !important';
bc.paddingBottom = '0px !important';
gCurrentPage = 1;
gProgress = gPosition = 0;
var bi = document.getElementById('book-inner').style;
bi.marginLeft = '10px';
bi.marginRight = '10px';
bi.padding = '0';
window.device.print ("bc.height = "+ bc.height);
window.device.print ("window.innerHeight ="+ window.innerHeight);
gPageCount = document.body.scrollWidth / window.innerWidth;
if (gClientHeight < window.innerHeight) {
gPageCount = 1;
}
}
function paginate(tagId)
{
// Get the height of the page. We do this only once. In setupBookColumns we compare this
// value to the height of the window and then decide whether to force the page count to one.
if (gClientHeight == undefined) {
gClientHeight = document.getElementById('book-columns').clientHeight;
}
setupBookColumns();
//window.scrollTo(0, window.innerHeight);
window.device.reportPageCount(gPageCount);
var tagIdPageNumber = 0;
if (tagId.length > 0) {
tagIdPageNumber = estimatePageNumberForAnchor (tagId);
}
window.device.finishedPagination(tagId, tagIdPageNumber);
}
function repaginate(tagId) {
window.device.print ("repaginating, gPageCount:" + gPageCount);
paginate(tagId);
}
function paginateAndMaintainProgress()
{
var savedProgress = gProgress;
setupBookColumns();
goProgress(savedProgress);
}
function updateBookmark()
{
gProgress = (gCurrentPage - 1.0) / gPageCount;
var anchorName = estimateFirstAnchorForPageNumber(gCurrentPage - 1);
window.device.finishedUpdateBookmark(anchorName);
}
function goBack()
{
if (gCurrentPage > 1)
{
--gCurrentPage;
gPosition -= window.innerWidth;
window.scrollTo(gPosition, 0);
window.device.pageChanged();
} else {
window.device.previousChapter();
}
}
function goForward()
{
if (gCurrentPage < gPageCount)
{
++gCurrentPage;
gPosition += window.innerWidth;
window.scrollTo(gPosition, 0);
window.device.pageChanged();
} else {
window.device.nextChapter();
}
}
function goPage(pageNumber, callPageReadyWhenDone)
{
if (pageNumber > 0 && pageNumber <= gPageCount)
{
gCurrentPage = pageNumber;
gPosition = (gCurrentPage - 1) * window.innerWidth;
window.scrollTo(gPosition, 0);
if (callPageReadyWhenDone > 0) {
window.device.pageReady();
} else {
window.device.pageChanged();
}
}
}
function goProgress(progress)
{
progress += 0.0001;
var progressPerPage = 1.0 / gPageCount;
var newPage = 0;
for (var page = 0; page < gPageCount; page++) {
var low = page * progressPerPage;
var high = low + progressPerPage;
if (progress >= low && progress < high) {
newPage = page;
break;
}
}
gCurrentPage = newPage + 1;
gPosition = (gCurrentPage - 1) * window.innerWidth;
window.scrollTo(gPosition, 0);
updateProgress();
}
/* BOOKMARKING CODE */
/**
* Estimate the first anchor for the specified page number. This is used on the broken WebKit
* where we do not know for sure if the specific anchor actually is on the page.
*/
function estimateFirstAnchorForPageNumber(page)
{
var spans = document.getElementsByTagName('span');
var lastKoboSpanId = "";
for (var i = 0; i < spans.length; i++) {
if (spans[i].id.substr(0, 5) == "kobo.") {
lastKoboSpanId = spans[i].id;
if (spans[i].offsetTop >= (page * window.innerHeight)) {
return spans[i].id;
}
}
}
return lastKoboSpanId;
}
/**
* Estimate the page number for the specified anchor. This is used on the broken WebKit where we
* do not know for sure how things are columnized. The page number returned is zero based.
*/
function estimatePageNumberForAnchor(spanId)
{
var span = document.getElementById(spanId);
if (span) {
return Math.floor(span.offsetTop / window.innerHeight);
}
return 0;
}