<html> <head> <script> var bookcount = "0"; var book = []; var path = []; var plowest = []; var phighest = []; var porigin = []; var lowest = []; var highest = []; var origin = []; var prefix = []; var suffix = []; var padding = []; </script> <script src="viewer.js"></script> <script> function Pad(book, page) { var pad = padding[book]; if (pad != "") { while (String(page).length < pad) { page = "0" + page; } } return page; } function ToRoman(num) { var sign = ""; if (num < 0) { sign = "-"; num = -num; } var result = ""; if (num == 0) { result = "0"; } else if (num < 4000) { var ref = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']; var xis = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]; for (var x = 0; x<ref.length; x++) { while(num >= xis[x]) { result = result + ref[x]; num = num - xis[x]; } } } return sign + result.toLowerCase(); } var imageFiles = ""; function NewBook() { if (bookcount == 0) { return; } // hide the download button if book pages are on a different server var i = document.myform.book.selectedIndex; if (path[i].indexOf(":") == -1) { // it is not on a different server Show("downloadspan"); } else { // we can't download from another server Hide("downloadspan"); } // treat a book of pdf files different from a book of jpeg files var suffix4 = suffix[i].substr(suffix[i].length - 4).toLowerCase(); var suffix5 = suffix[i].substr(suffix[i].length - 5).toLowerCase(); if (suffix4 == ".jpg" || suffix5 == "jpeg" || suffix4 == "gif" || suffix4 == "png" || suffix4 == "bmp") { imageFiles = true; Show("jpgspan"); Show("magnifyspan"); Hide("pdfspan"); } else { imageFiles = false; Show("pdfspan"); Hide("jpgspan"); Hide("magnifyspan"); } // generate the page dropdown list var html = "<select name='page' onchange='NewPage();'>"; if (plowest[i] != "" && phighest[i] != "") { for (var j=Number(plowest[i]); j<=Number(phighest[i]); j++) { html += "<option value='" + prefix[i] + Pad(i, j) + suffix[i] + "'>" + ToRoman(j-(plowest[i]-porigin[i])) + "</option>"; } } if (lowest[i] != "" && highest[i] != "") { for (var j=Number(lowest[i]); j<=Number(highest[i]); j++) { html += "<option value='" + prefix[i] + Pad(i, j) + suffix[i] + "'>" + (j-(lowest[i]-origin[i])) + "</option>"; } } html += "</select>"; document.getElementById("pagespan").innerHTML = html; NewPage(); } function NewPage() { if (imageFiles) { // put up a please-stand-by page window.frames.myimage.document.getElementById('frameimage').src = "wait.jpg" // need to do a delay, otherwise stand-by message doesn't get displayed setTimeout(NewPageContinued, 10); } else { NewPageContinued(); } } function NewPageContinued() { // enable or disable the NEXT and PREV buttons as appropriate var index = document.myform.page.selectedIndex; if (index >= document.myform.page.length-1) { document.myform.next.disabled = true; } else { document.myform.next.disabled = false; } if (index == 0) { document.myform.prev.disabled = true; } else { document.myform.prev.disabled = false; } // display the new page var i = document.myform.book.selectedIndex; fileName = path[i] + "/" + document.myform.page[document.myform.page.selectedIndex].value; if (imageFiles) { window.frames.myimage.document.getElementById('frameimage').src = fileName; } else { document.getElementById('pdfspan').innerHTML = "<iframe src='" + fileName + "' width='100%' height='89%'></iframe>"; } } function Prev() { var index = document.myform.page.selectedIndex; if (index > 0) { index--; } document.myform.page.selectedIndex = index; NewPage(); } function Next() { var index = document.myform.page.selectedIndex; if (index < document.myform.page.length-1) { index++; } document.myform.page.selectedIndex = index; NewPage(); } function PrinterFriendly() { var i = document.myform.book.selectedIndex; var page = path[i] + "/" + document.myform.page[document.myform.page.selectedIndex].value; var wind = window.open(page, '_blank'); wind.focus(); } function Download() { var i = document.myform.book.selectedIndex; var page = path[i] + "/" + document.myform.page[document.myform.page.selectedIndex].value; document.location = "http://stevemorse.org/viewer/downloadimage.php?file=" + page; } var scaleExponent = 0; var factor = Math.pow(2, 0.5); function Magnify() { scaleExponent++; ShowScale(); var height = window.frames.myimage.document.getElementById('frameimage').height; var width = window.frames.myimage.document.getElementById('frameimage').width; window.frames.myimage.document.getElementById('frameimage').height = factor * height; window.frames.myimage.document.getElementById('frameimage').width = factor * width; } function Reduce() { scaleExponent--; ShowScale(); var height = window.frames.myimage.document.getElementById('frameimage').height; var width = window.frames.myimage.document.getElementById('frameimage').width; window.frames.myimage.document.getElementById('frameimage').height = height / factor; window.frames.myimage.document.getElementById('frameimage').width = width / factor; } function ShowScale() { // use this in place of ShowScaleFactor() if you want to see a relative scale number document.getElementById('scale').innerHTML = scaleExponent; return; } function ShowScaleFactor() { // use this in place of ShowScaleExponent() if you want to see the scale multiplying factor var scale = "x "; if (scaleExponent < 0) { scale += "1/"; } scale += Math.pow(factor,Math.abs(scaleExponent)); document.getElementById('scale').innerHTML = scale; } function GetParameter(parameter) { // convert query string to array of individual arguments var query = GetQueryString(); var arglist = query.split("&"); // process each argument for (var j in arglist) { var equalSign = arglist[j].indexOf("="); var leftSide = (equalSign == -1) ? arglist[j] : arglist[j].substr(0, equalSign); if (leftSide == parameter) { var rightSide = (equalSign == -1) ? "" : arglist[j].substr(equalSign+1); return unescape(rightSide); } } return ""; } function GetQueryString() { var url = document.location.toString(); var questionmarkPosition = url.indexOf("?"); return (questionmarkPosition == -1) ? "" : url.substr(questionmarkPosition+1); } function Hide(id) { // removes space taken up by element var object = document.getElementById(id); object.style.display = "none"; } function Show(id) { // makes space for element var object = document.getElementById(id); object.style.display = ""; } function Init() { var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth; var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight; var iframe = document.getElementById("iframe"); iframe.width = .97*width; iframe.height = height - 100; NewBook(); if (bookcount == 0) { // js file not found return; } var bookName = GetParameter("bookname"); var pageNumber = GetParameter("pagenumber"); if (bookName != "") { for (var i=0; i<document.myform.book.length; i++) { if (document.myform.book[i].text == bookName) { document.myform.book.selectedIndex = i; NewBook(); break; } } if (pageNumber != "") { for (var i=0; i<document.myform.page.length; i++) { if (document.myform.page[i].text == pageNumber) { document.myform.page.selectedIndex = i; NewPage(); break; } } } } ShowScale(); } </script> </head> <body onload="Init();"> <center> <form name="myform"> Book: <select name="book" onchange="NewBook();"> <script> for (var i=0; i<bookcount; i++) { document.write("<option>" + book[i] + "</option>"); } </script> </select> Page: <input type="button" name="prev" value="Prev" onclick="Prev();"> <span id="pagespan"><select name=page"><option></option></select></span> <input type="button" name="next" value="Next" onclick="Next();"> <span id="magnifyspan"> <input type='button' value='Reduce' onclick='Reduce();'> <span id="scale"></span> <input type='button' value='Enlarge' onclick='Magnify();'> </span> <input type="button" name="printer" value="Printer Friendly" onclick="PrinterFriendly();"> <span id="downloadspan"> <input type="button" name="download" value="Download Page" onclick="Download();"> </span> </form> <span id="jpgspan"> <iframe name='myimage' id = 'iframe' src='viewerframe.html' srcdoc='<html><body><center><img name="frameimage" id="frameimage"></center></body></html>' xsrc='javascript:"<html><body><center><img name=\"frameimage\" id=\"frameimage\"></center></body></html>"' xwidth='97%' xheight='89%'></iframe> </span> <span id="pdfspan"> </span> </center> <font size='2'> <br> this tool was created using Stephen P Morse's <a href='http://stevemorse.org/viewer/createviewer.html'>One-Step Viewer generator</a> </font> </body> </html>