version 1.3, 2004/10/04 20:58:01
|
version 1.10, 2011/02/14 16:33:43
|
Line 17 Foundation, Inc., 59 Temple Place - Suit
|
Line 17 Foundation, Inc., 59 Temple Place - Suit
|
Authors: |
Authors: |
Christian Luginbuehl, 01.05.2003 (first version) |
Christian Luginbuehl, 01.05.2003 (first version) |
DW 24.03.2004 (Changed for digiLib in Zope) |
DW 24.03.2004 (Changed for digiLib in Zope) |
Robert Casties, 04.10.2004 |
Robert Casties, 14.7.2006 |
|
|
! Requires baselib.js ! |
! Requires baselib.js ! |
|
|
*/ |
*/ |
|
|
var dlScriptVersion = "1.0b3"; |
|
|
function identify() { |
|
// used for identifying a digilib instance |
|
// Relato uses that function - lugi |
|
return "Digilib 0.6"; |
|
} |
|
|
|
|
/* |
/* |
* more parameter handling |
* more parameter handling |
*/ |
*/ |
|
|
var dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); |
|
var dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); |
|
|
|
function parseArea() { |
function parseArea() { |
// returns area Rectangle from current parameters |
// returns area Rectangle from current parameters |
return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh")); |
return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh")); |
Line 46 function setParamFromArea(rect) {
|
Line 49 function setParamFromArea(rect) {
|
return true; |
return true; |
} |
} |
|
|
var dlTrafo = new Transform(); |
|
|
|
function parseTrafo(elem) { |
function parseTrafo(elem) { |
// returns Transform from current dlArea and picsize |
// returns Transform from current dlArea and picsize |
var picsize = getElementRect(elem); |
var picsize = getElementRect(elem); |
Line 71 function parseTrafo(elem) {
|
Line 72 function parseTrafo(elem) {
|
} |
} |
|
|
|
|
var dlMarks = new Array(); |
|
|
|
function parseMarks() { |
function parseMarks() { |
// returns marks array from current parameters |
// returns marks array from current parameters |
var marks = new Array(); |
var marks = new Array(); |
Line 116 function deleteMark() {
|
Line 115 function deleteMark() {
|
return true; |
return true; |
} |
} |
|
|
var dlFlags = new Object(); |
|
|
|
function hasFlag(mode) { |
function hasFlag(mode) { |
// returns if mode flag is set |
// returns if mode flag is set |
return (dlFlags[mode]); |
return (dlFlags[mode]); |
Line 181 function bestPicSize(elem, inset) {
|
Line 178 function bestPicSize(elem, inset) {
|
inset = 25; |
inset = 25; |
} |
} |
var ws = getWinSize(); |
var ws = getWinSize(); |
|
var wsold = ws.copy(); |
var es = getElementPosition(elem); |
var es = getElementPosition(elem); |
if (es) { |
if (es) { |
|
if ((es.x > ws.width)||(es.y > ws.height)) { |
|
alert("es="+es+" is outside ws="+ws+" fixing..."); |
|
ws.width = ws.width - inset; |
|
ws.height = ws.height - inset; |
|
} else { |
ws.width = ws.width - es.x - inset; |
ws.width = ws.width - es.x - inset; |
ws.height = ws.height - es.y - inset; |
ws.height = ws.height - es.y - inset; |
} |
} |
|
} |
|
alert("ws="+wsold+" es="+es+" -> ws="+ws); |
|
//alert("ws="+ws+"("+typeof(ws)+") es="+es); |
return ws; |
return ws; |
} |
} |
|
|
|
function setDLParam(e, s, relative) { |
|
// sets parameter based on HTML event |
|
var nam; |
|
var val; |
|
if (s.type && (s.type == "select-one")) { |
|
nam = s.name; |
|
val = s.options[s.selectedIndex].value; |
|
} else if (s.name && s.value) { |
|
nam = s.name; |
|
val = s.value; |
|
} |
|
if (nam && val) { |
|
setParameter(nam, val, relative); |
|
display(); |
|
} else { |
|
alert("ERROR: unable to process event!"); |
|
} |
|
return true; |
|
} |
|
|
|
|
/* ********************************************** |
/* ********************************************** |
* digilib specific routines |
* digilib specific routines |
* ******************************************** */ |
* ******************************************** */ |
|
|
var elemScaler = null; |
|
var picElem = null; |
|
|
|
|
|
function dl_param_init() { |
function dl_param_init() { |
// parameter initialisation before onload |
// parameter initialisation before onload |
|
if (!baseScriptVersion) { |
|
base_init(); |
|
} |
|
dlScriptVersion = "1.3a"; |
|
dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); |
|
dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); |
|
dlTrafo = new Transform(); |
|
dlMarks = new Array(); |
|
dlFlags = new Object(); |
|
elemScaler = null; |
|
picElem = null; |
|
ZOOMFACTOR = Math.sqrt(2); |
|
|
// put the query parameters (sans "?") in the parameters array |
// put the query parameters (sans "?") in the parameters array |
parseParameters(location.search.slice(1)); |
// non-digilib parameters get detail level 32 |
|
parseParameters(location.search.slice(1),32); |
// treat special parameters |
// treat special parameters |
dlMarks = parseMarks(); |
dlMarks = parseMarks(); |
dlArea = parseArea(); |
dlArea = parseArea(); |
dlFlags = parseFlags(); |
dlFlags = parseFlags(); |
|
// mask for parameters when creating new URL |
|
dlUrlParamMask = 255; |
} |
} |
|
|
|
|
function dl_init() { |
function dl_init() { |
// initalisation on load |
// initalisation on load |
|
if (!dlScriptVersion) { |
|
dl_param_init(); |
|
} |
elemScaler = getElement("scaler", true); |
elemScaler = getElement("scaler", true); |
picElem = getElement("pic", true); |
picElem = getElement("pic", true); |
if (picElem == null && elemScaler) { |
if (picElem == null && elemScaler) { |
Line 219 function dl_init() {
|
Line 260 function dl_init() {
|
picElem = elemScaler.document.images[0]; |
picElem = elemScaler.document.images[0]; |
} |
} |
if ((!elemScaler)||(!picElem)) { |
if ((!elemScaler)||(!picElem)) { |
alert("Sorry, zogilib doesn't work here!"); |
alert("Sorry, digilib doesn't work here!"); |
return false; |
return false; |
} |
} |
// give a name to the window containing digilib |
// give a name to the window containing digilib |
Line 229 function dl_init() {
|
Line 270 function dl_init() {
|
window.name = "digilib"; |
window.name = "digilib"; |
} |
} |
// put the query parameters (sans "?") in the parameters array |
// put the query parameters (sans "?") in the parameters array |
parseParameters(location.search.slice(1)); |
//parseParameters(location.search.slice(1),32); |
// treat special parameters |
// treat special parameters |
dlMarks = parseMarks(); |
dlMarks = parseMarks(); |
dlArea = parseArea(); |
dlArea = parseArea(); |
Line 245 function dl_init() {
|
Line 286 function dl_init() {
|
function display(detail) { |
function display(detail) { |
// redisplay the page |
// redisplay the page |
if (! detail) { |
if (! detail) { |
detail = 9; |
detail = 255; |
} |
} |
var queryString = getAllParameters(detail); |
var queryString = getAllParameters(detail & dlUrlParamMask); |
location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString; |
location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString; |
} |
} |
|
|
Line 405 function zoomArea() {
|
Line 446 function zoomArea() {
|
registerEvent("mousedown", eck4, zoomClick); |
registerEvent("mousedown", eck4, zoomClick); |
} |
} |
|
|
var ZOOMFACTOR = Math.sqrt(2); |
|
|
|
function zoomBy(factor) { |
function zoomBy(factor) { |
// zooms by the given factor |
// zooms by the given factor |
var newarea = dlArea.copy(); |
var newarea = dlArea.copy(); |
Line 433 function zoomFullpage() {
|
Line 472 function zoomFullpage() {
|
function moveCenter() { |
function moveCenter() { |
// move visible area so that it's centered around the clicked point |
// move visible area so that it's centered around the clicked point |
if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) { |
if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) { |
// noting to do |
// nothing to do |
return; |
return; |
} |
} |
window.focus(); |
window.focus(); |
Line 454 function moveCenter() {
|
Line 493 function moveCenter() {
|
registerEvent("mousedown", elemScaler, moveCenterEvent); |
registerEvent("mousedown", elemScaler, moveCenterEvent); |
} |
} |
|
|
|
function moveBy(movx, movy) { |
|
// move visible area by movx and movy (in units of ww, wh) |
|
if ((dlArea.width == 1.0)&&(dlArea.height == 1.0)) { |
|
// nothing to do |
|
return; |
|
} |
|
var newarea = dlArea.copy(); |
|
newarea.x += parseFloat(movx)*dlArea.width; |
|
newarea.y += parseFloat(movy)*dlArea.height; |
|
newarea = dlMaxArea.fit(newarea); |
|
// set parameters |
|
setParamFromArea(newarea); |
|
parseArea(); |
|
display(); |
|
} |
|
|
function getRef() { |
function getRef() { |
// returns a reference to the current digilib set |
// returns a reference to the current digilib set |
Line 462 function getRef() {
|
Line 515 function getRef() {
|
var baseUrl = location.protocol + "//" + location.host + location.pathname; |
var baseUrl = location.protocol + "//" + location.host + location.pathname; |
} |
} |
var hyperlinkRef = baseUrl; |
var hyperlinkRef = baseUrl; |
var par = getAllParameters(9); |
var par = getAllParameters((7+32+64) & dlUrlParamMask); // all without ddpi, pt |
if (par.length > 0) { |
if (par.length > 0) { |
hyperlinkRef += "?" + par; |
hyperlinkRef += "?" + par; |
} |
} |
Line 473 function getRefWin(type, msg) {
|
Line 526 function getRefWin(type, msg) {
|
// shows an alert with a reference to the current digilib set |
// shows an alert with a reference to the current digilib set |
if (! msg) { |
if (! msg) { |
msg = "Link for HTML documents"; |
msg = "Link for HTML documents"; |
|
} |
prompt(msg, getRef()); |
prompt(msg, getRef()); |
} |
} |
|
|
|
|
|
function getQuality() { |
|
// returns the current q setting |
|
for (var i = 0; i < 3; i++) { |
|
if (hasFlag("q"+i)) { |
|
return i; |
|
} |
|
} |
|
return 1 |
|
} |
|
|
|
function setQuality(qual) { |
|
// set the image quality |
|
for (var i = 0; i < 3; i++) { |
|
removeFlag("q"+i); |
|
if (i == qual) { |
|
addFlag("q"+i); |
|
} |
|
} |
|
setParameter("mo", getAllFlags()); |
|
display(); |
|
} |
|
|
|
function setQualityWin(msg) { |
|
// dialog for setting quality |
|
if (! msg) { |
|
msg = "Quality (0..2)"; |
|
} |
|
var q = getQuality(); |
|
var newq = window.prompt(msg, q); |
|
if (newq) { |
|
setQuality(newq); |
|
} |
|
} |
|
|
|
function mirror(dir) { |
|
// mirror the image horizontally or vertically |
|
if (dir == "h") { |
|
toggleFlag("hmir"); |
|
} else { |
|
toggleFlag("vmir"); |
|
} |
|
setParameter("mo", getAllFlags()); |
|
display(); |
|
} |
|
|
|
function gotoPage(gopage, keep) { |
|
// goto given page nr (+/-: relative) |
|
var oldpn = parseInt(getParameter("pn")); |
|
setParameter("pn", gopage, true); |
|
var pn = parseInt(getParameter("pn")); |
|
if (pn < 1) { |
|
alert("No such page! (Page number too low)"); |
|
setParameter("pn", oldpn); |
|
return; |
|
} |
|
if (hasParameter("pt")) { |
|
pt = parseInt(getParameter("pt")) |
|
if (pn > pt) { |
|
alert("No such page! (Page number too high)"); |
|
setParameter("pn", oldpn); |
|
return; |
|
} |
|
} |
|
if (keep) { |
|
display(63+128); // all, no mark |
|
} else { |
|
display(3+32+128); // fn, pn, ws, mo + pt |
|
} |
|
} |
|
|
|
function gotoPageWin() { |
|
// dialog to ask for new page nr |
|
var pn = getParameter("pn"); |
|
var gopage = window.prompt("Go to page", pn); |
|
if (gopage) { |
|
gotoPage(gopage); |
|
} |
|
} |
|
|
|
function setParamWin(param, text, relative) { |
|
// dialog to ask for new parameter value |
|
var val = getParameter(param); |
|
var newval = window.prompt(text, val); |
|
if (newval) { |
|
setParameter(param, newval, relative); |
|
display(); |
|
} |
|
} |
|
|
|
function showOptions(show) { |
|
// show or hide option div |
|
var elem = getElement("dloptions"); |
|
showElement(elem, show); |
|
} |
|
|
|
function toggleOptions() { |
|
// toggle option div |
|
var elem = getElement("dloptions"); |
|
showOptions(! isElementVisible(elem)); |
|
} |