# HG changeset patch # User luginbue # Date 1057626057 -7200 # Node ID 28f96364040f6c64cfbca8c1441bbdbb072bc395 # Parent d111b3d572384603ea366a4df49e24b530783ba5 unified scripts, nice xul sidebar, bugfixes diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/digilib.jsp --- a/client/digitallibrary/digilib.jsp Wed Jul 02 00:17:06 2003 +0200 +++ b/client/digitallibrary/digilib.jsp Tue Jul 08 03:00:57 2003 +0200 @@ -1,247 +1,249 @@ -<%@ page language="java" %> - -<%! -// authentication stuff - robert -// ----------------------------- -// create DocumentBean instance for all JSP requests -digilib.servlet.DocumentBean docBean = new digilib.servlet.DocumentBean(); - -// initialize DocumentBean instance in JSP init -public void jspInit() { - try { - // set servlet init-parameter - docBean.setConfig(getServletConfig()); - } catch (javax.servlet.ServletException e) { - System.out.println(e); - } -} -%> - - - - -<% - -// parsing the query -// ----------------- - -//digilib.servlet.DigilibRequest dlRequest = new digilib.servlet.DigilibRequest(request); -digilib.servlet.DigilibRequest dlRequest = new digilib.servlet.DigilibRequest(); -dlRequest.setWithRequest(request); -// check if authentication is needed and redirect if necessary -docBean.doAuthentication(dlRequest, response); - -%> - -<% - -// the different levels of presentation -// ------------------------------------ - - -// level 3 representation hack - lugi - // it would be much more interesting to check - // if the sidebar is actually installed and in - // the case it isn't - automatically do it. - // however this requires client-side tests and - // so slows down everything. - // we might want to talk about it for a future - // release - -if (dlRequest.getLv() == 3) { - String userAgent = request.getHeader("User-Agent").toLowerCase(); - - if (userAgent.indexOf("mozilla/5.0") == 0) { - - // mozilla 5 that does not support xul-sidebars - if (userAgent.indexOf("opera") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("chimera") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("camino") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("konqueror") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("safari") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("galeon") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("skipstone") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("k-meleon") > -1) dlRequest.setLv(2); - if (userAgent.indexOf("firebird") > -1) dlRequest.setLv(2); - - // the chance is quite big, that the browser supports xul-sidebars - dlRequest.setLv(1); - - } else { - - // redirect to level 2 because of definitive lack of sidebar support - dlRequest.setLv(2); - } -} - - - -switch (dlRequest.getLv()) { - - // LEVEL 0 -------------------------------------------------------------- - - case 0: -%> - -<% - break; // level 0 - - - - - // LEVEL 1 -------------------------------------------------------------- - - case 1: -%> - -<% - // checking if the height and width of this client is already known - if ((dlRequest.getDw() == 0) || (dlRequest.getDh() == 0)) { -%> - - - - - - - - - -<% - } else { - - // add number of pages - dlRequest.setPt(docBean.getNumPages(dlRequest)); - - String imageLocation = dlRequest.getBaseURL() + "/servlet/Scaler/?" + dlRequest.getAsString(); -%> - - - -Digital Document Library - Alcatraz (Level 1) - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -<% - } -%> - -<% - break; // level 1 - - - - - // LEVEL 2 -------------------------------------------------------------- - - case 2: -%> - -<% - // retrieve request in new paramter format and redirect to level 1 - dlRequest.setLv(1); - String query = "digilib.jsp?" + dlRequest.getAsString(); -%> - - - -Digital Document Library - Alcatraz (Level 2) - - - - - - - - - - - - -<% - break; // level 2 - -} // end switch - -%> \ No newline at end of file +<%@ page language="java" %> + +<%! +// authentication stuff - robert +// ----------------------------- +// create DocumentBean instance for all JSP requests +digilib.servlet.DocumentBean docBean = new digilib.servlet.DocumentBean(); + +// initialize DocumentBean instance in JSP init +public void jspInit() { + try { + // set servlet init-parameter + docBean.setConfig(getServletConfig()); + } catch (javax.servlet.ServletException e) { + System.out.println(e); + } +} +%> + + + + +<% + +// parsing the query +// ----------------- + +//digilib.servlet.DigilibRequest dlRequest = new digilib.servlet.DigilibRequest(request); +digilib.servlet.DigilibRequest dlRequest = new digilib.servlet.DigilibRequest(); +dlRequest.setWithRequest(request); +// check if authentication is needed and redirect if necessary +docBean.doAuthentication(dlRequest, response); + +%> + +<% + +// the different levels of presentation +// ------------------------------------ + + +// level 3 representation hack - lugi + // it would be much more interesting to check + // if the sidebar is actually installed and in + // the case it isn't - automatically do it. + // however this requires client-side tests and + // so slows down everything. + // we might want to talk about it for a future + // release + +if (dlRequest.getLv() == 3) { + String userAgent = request.getHeader("User-Agent").toLowerCase(); + + if (userAgent.indexOf("mozilla/5.0") == 0) { + + // mozilla 5 that does not support xul-sidebars + if (userAgent.indexOf("opera") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("chimera") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("camino") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("konqueror") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("safari") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("galeon") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("skipstone") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("k-meleon") > -1) dlRequest.setLv(2); + if (userAgent.indexOf("firebird") > -1) dlRequest.setLv(2); + + // the chance is quite big, that the browser supports xul-sidebars + dlRequest.setLv(1); + + } else { + + // redirect to level 2 because of definitive lack of sidebar support + dlRequest.setLv(2); + } +} + + + +switch (dlRequest.getLv()) { + + // LEVEL 0 -------------------------------------------------------------- + + case 0: +%> + +<% + break; // level 0 + + + + + // LEVEL 1 -------------------------------------------------------------- + + case 1: +%> + +<% + // checking if the height and width of this client is already known + if ((dlRequest.getDw() == 0) || (dlRequest.getDh() == 0)) { +%> + + + + + + + + + +<% + } else { + + // add number of pages + dlRequest.setPt(docBean.getNumPages(dlRequest)); + + String imageLocation = dlRequest.getBaseURL() + "/servlet/Scaler/?" + dlRequest.getAsString(); +%> + + + +Digital Document Library - Alcatraz (Level 1) + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +<% + } +%> + +<% + break; // level 1 + + + + + // LEVEL 2 -------------------------------------------------------------- + + case 2: +%> + +<% + // retrieve request in new paramter format and redirect to level 1 + dlRequest.setLv(1); + String query = "digilib.jsp?" + dlRequest.getAsString(); +%> + + + +Digital Document Library - Alcatraz (Level 2) + + + + + + + + + + + + +<% + break; // level 2 + +} // end switch + +%> diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/navigation.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/navigation.js Tue Jul 08 03:00:57 2003 +0200 @@ -0,0 +1,697 @@ +/* + +Copyright (C) 2003 WTWG, Uni Bern + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Author: Christian Luginbuehl, 01.05.2003 , Version Alcatraz 0.4 + +*/ + +var ZOOMFACTOR = Math.sqrt(2); + +dlParams = new Object(); + +function newParameter(name, value, defaultValue, detail) { + + if ( !dlParams[name] ) { + + dlParams[name] = new Object(); + + dlParams[name].value = value; + dlParams[name].defaultValue = defaultValue; + dlParams[name].detail = detail; + + return dlParams[name]; + + } else { + + alert("Fatal: An object with name '" + name + "' already exists - cannot recreate!"); + return false; + + } +} + +function getParameter(name) { + + if ( dlParams[name] ) { + return dlParams[name].value; + } else { + return false; + } +} + + + +function listParametersAsString() { + + var params = new Array(); + + for ( param in dlParams ) { + params.push(param); + } + + return params.join(","); + +} + + +function listParameters() { + + var params = new Array(); + + for ( param in dlParams ) { + params.push(param); + } + + return params; + +} + + +function init() { + + // give a name to the window containing digilib - this way one can test if there is already a + // digilib-window open and replace the contents of it (ex. digicat) + top.window.name = "digilib"; + + placeMarks(); + + if ( document.all ) { + this.document.onkeypress = parseKeypress; + } else if ( typeof(document.addEventListener) == "function" ) { + this.document.addEventListener('keypress', parseKeypress, true); + } else { + window.captureEvents(Event.KEYDOWN); + window.onkeydown = parseKeypress; + } + + focus(); +} + + +function display(detail) { + + var queryString = ''; + + for ( param in dlParams ) { + + if ( dlParams[param].defaultValue != dlParams[param].value ) { + if ( dlParams[param].detail <= detail ) { + queryString += "&" + param + "=" + dlParams[param].value; + } else { + queryString += "&" + param + "=" + dlParams[param].defaultValue; + } + } + + } + + if ( document.body ) { + queryString += "&dw=" + (document.body.clientWidth-30) + "&dh=" + (document.body.clientHeight-30); + } else { + queryString += "&dw=" + (innerWidth-30) + "&dh=" + (innerHeight-30); + } + + queryString += "&lv=1"; + + queryString = queryString.slice(1); + + location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString; + +} + + +// constructor holding different values of a point +function Point(evt) { + + if ( document.all ) { + + this.pageX = parseInt(document.body.scrollLeft+event.clientX); + this.pageY = parseInt(document.body.scrollLeft+event.clientY); + + this.x = this.pageX-parseInt(document.all.lay1.style.left); + this.y = this.pageY-parseInt(document.all.lay1.style.top); + + this.relX = cropFloat(parseFloat(dlParams.wx.value)+(dlParams.ww.value*this.x/document.all.lay1.offsetWidth)); + this.relY = cropFloat(parseFloat(dlParams.wy.value)+(dlParams.wh.value*this.y/document.all.lay1.offsetHeight)); + + } else { + + this.pageX = parseInt(evt.pageX); + this.pageY = parseInt(evt.pageY); + + if ( typeof(document.getElementById) == "function" ) { + + this.x = this.pageX-parseInt(document.getElementById("lay1").style.left); + this.y = this.pageY-parseInt(document.getElementById("lay1").style.top); + + this.relX = cropFloat(parseFloat(dlParams.wx.value)+(dlParams.ww.value*this.x/document.pic.offsetWidth)); + this.relY = cropFloat(parseFloat(dlParams.wy.value)+(dlParams.wh.value*this.y/document.pic.offsetHeight)); + + } else { + + this.x = this.pageX-document.lay1.left; + this.y = this.pageY-document.lay1.top; + + this.relX = cropFloat(parseFloat(dlParams.wx.value)+(dlParams.ww.value*this.x/document.lay1.clip.width)); + this.relY = cropFloat(parseFloat(dlParams.wy.value)+(dlParams.wh.value*this.y/document.lay1.clip.height)); + + } + + } + + return this; + +} + + +function page(page, details) { + + if ( details == null ) { + details = 1; + } + + if ( page.indexOf('-') == 0 ) { + if ( dlParams.pn.value > 1 ) { + page = Math.max(parseInt(dlParams.pn.value) - parseInt(page.slice(1)), 1); + dlParams.pn.value = page; + display(details); + } else { + alert("You are already on the first page!"); + } + + } else if ( page.indexOf('+') == 0 ) { + page = parseInt(dlParams.pn.value) + parseInt(page.slice(1)); + dlParams.pn.value = page; + display(details); + } else if ( page == parseInt(page) ) { + dlParams.pn.value = parseInt(page); + display(details); + } + +} + + +function digicat() { + + var url = baseUrl + "/digicat.jsp?" + dlParams.fn.value + "+" + dlParams.pn.value; + win = window.open(url, "digicat"); + win.focus(); + +} + + +function ref(select) { + + var hyperlinkRef = baseUrl + "/digilib.jsp?"; + hyperlinkRef += dlParams.fn.value + "+" + dlParams.pn.value + "+" + dlParams.ws.value + "+"; + hyperlinkRef += dlParams.mo.value + "+" + dlParams.mk.value; + + if ( (dlParams.wx.value != 0) || (dlParams.wy.value != 0) || (dlParams.ww.value != 1) || (dlParams.wh.value != 1) ) { + hyperlinkRef += "+" + dlParams.wx.value + "+" + dlParams.wy.value + "+" + dlParams.ww.value; + hyperlinkRef += "+" + dlParams.wh.value; + } + + if ( select == 0 ) { + prompt("Link for LaTeX-documents", "\\href{" + hyperlinkRef + "}{TEXT}"); + } else if ( select == 1 ) { + prompt("Link for HTML-documents", hyperlinkRef); + } +} + + +function mark() { + + if ( dlParams.mk.value.split(";").length > 7 ) { + alert("Only 8 marks are possible at the moment!"); + return; + } + + function markEvent(evt) { + + var point = new Point(evt); + + if ( dlParams.mk.value != '' ) { + dlParams.mk.value += ';'; + } + + dlParams.mk.value += point.relX + '/' + point.relY; + + // stopping event capture + if ( document.all ) { + document.all.lay1.onmousedown = null; + } else if ( typeof(document.removeEventListener) == "function" ) { + document.getElementById("lay1").removeEventListener("mousedown", markEvent, true); + } else { + document.lay1.releaseEvents(Event.MOUSEDOWN); + } + + placeMarks(); + + } + + // starting event capture + if ( document.all ) { + document.all.lay1.onmousedown = markEvent; + } else if ( typeof(document.addEventListener) == "function" ) { + document.getElementById("lay1").addEventListener("mousedown", markEvent, true); + } else { + document.lay1.captureEvents(Event.MOUSEDOWN); + document.lay1.onmousedown = markEvent; + } +} + + +function placeMarks() { + + if ( dlParams.mk.value != '' ) { + + var mark = dlParams.mk.value.split(";"); + var mark_count = mark.length; + + // maximum of marks is 8 + // we do not report this error because this is already done in function 'mark' + if ( mark_count > 8 ) mark_count = 8; + + var picWidth = (document.all) ? parseInt(document.all.lay1.offsetWidth) : (typeof(document.getElementById) == "function") ? parseInt(document.pic.offsetWidth) : parseInt(document.pic.clip.width); + var picHeight = (document.all) ? parseInt(document.all.lay1.offsetHeight) : (typeof(document.getElementById) == "function") ? parseInt(document.pic.offsetHeight) : parseInt(document.pic.clip.height); + + // catch the cases where the picture had not been loaded already and + // make a timeout so that the coordinates are calculated with the real dimensions + if ( (document.pic.complete) || (picWidth > 30) ) { + + var xOffset = (document.all) ? parseInt(document.all.lay1.style.left) : (typeof(document.getElementById) == "function") ? parseInt(document.getElementById('lay1').style.left) : document.lay1.left; + var yOffset = (document.all) ? parseInt(document.all.lay1.style.top) : (typeof(document.getElementById) == "function") ? parseInt(document.getElementById('lay1').style.top) : document.lay1.top; + + for (var i = 0; i < mark_count; i++) { + mark[i] = mark[i].split("/"); + + if ( (mark[i][0] >= dlParams.wx.value) && (mark[i][1] >= dlParams.wy.value) && (mark[i][0] <= (parseFloat(dlParams.wx.value) + parseFloat(dlParams.ww.value))) && (mark[i][1] <= (parseFloat(dlParams.wy.value) + parseFloat(dlParams.wh.value))) ) { + + mark[i][0] = parseInt(xOffset + picWidth * (mark[i][0] - dlParams.wx.value)/dlParams.ww.value); + mark[i][1] = parseInt(yOffset + picHeight * (mark[i][1] - dlParams.wy.value)/dlParams.wh.value); + + if ( (document.all) || (typeof(document.getElementById) == "function") ) { + // suboptimal to place -5 pixels and not half size of mark-image + // should be changed in the future + document.getElementById("dot" + i).style.left = mark[i][0]-5; + document.getElementById("dot" + i).style.top = mark[i][1]-5; + document.getElementById("dot" + i).style.visibility = "visible"; + } else { + document.layers[i+1].moveTo(mark[i][0]-5, mark[i][1]-5); + document.layers[i+1].visibility = "show"; + } + } + } + + } else { + setTimeout("placeMarks()", 100); + } + } +} + + +function zoomPoint() { + + function zoomPointEvent(evt) { + + var point = new Point(evt); + + dlParams.wx.value = cropFloat(point.relX-0.5*dlParams.ww.value*(1/ZOOMFACTOR)); + dlParams.wy.value = cropFloat(point.relY-0.5*dlParams.wh.value*(1/ZOOMFACTOR)); + + dlParams.ww.value = cropFloat(dlParams.ww.value*(1/ZOOMFACTOR)); + dlParams.wh.value = cropFloat(dlParams.wh.value*(1/ZOOMFACTOR)); + + if ( dlParams.wx.value < 0 ) { + dlParams.wx.value = 0; + } + if ( dlParams.wy.value < 0 ) { + dlParams.wy.value = 0; + } + if ( dlParams.wx.value + dlParams.ww.value > 1 ) { + dlParams.wx.value = 1 - dlParams.ww.value; + } + if ( dlParams.wy.value + dlParams.wh.value > 1 ) { + dlParams.wy.value = 1 - dlParams.wh.value; + } + + // stopping event capture + if ( document.all ) { + document.all.lay1.onmousedown = null; + } else if ( typeof(document.removeEventListener) == "function" ) { + document.getElementById("lay1").removeEventListener("mousedown", zoomPointEvent, true); + } else { + document.lay1.releaseEvents(Event.MOUSEDOWN); + } + + display(3); + } + + // starting event capture + if ( document.all ) { + document.all.lay1.onmousedown = zoomPointEvent; + } else if ( typeof(document.addEventListener) == "function" ) { + document.getElementById("lay1").addEventListener("mousedown", zoomPointEvent, true); + } else { + document.lay1.captureEvents(Event.MOUSEDOWN); + document.lay1.onmousedown = zoomPointEvent; + } +} + + +function zoomArea() { + var state = 0; + var pt1, pt2; + + function click(evt) { + + if (state == 0) { + state = 1; + + pt1 = new Point(evt); + pt2 = pt1; + + if ( document.all ) { + + document.all.eck1.style.left = pt1.pageX; + document.all.eck1.style.top = pt1.pageY; + document.all.eck2.style.left = pt2.pageX-12; + document.all.eck2.style.top = pt1.pageY; + document.all.eck3.style.left = pt1.pageX; + document.all.eck3.style.top = pt2.pageY-12; + document.all.eck4.style.left = pt2.pageX-12; + document.all.eck4.style.top = pt2.pageY-12; + + document.all.eck1.style.visibility="visible"; + document.all.eck2.style.visibility="visible"; + document.all.eck3.style.visibility="visible"; + document.all.eck4.style.visibility="visible"; + + document.all.lay1.onmousemove = move; + document.all.eck4.onmousemove = move; + + } else if ( typeof(document.addEventListener) == "function" ) { + + document.getElementById("eck1").style.left = pt1.pageX; + document.getElementById("eck1").style.top = pt1.pageY; + document.getElementById("eck2").style.left = pt2.pageX-12; + document.getElementById("eck2").style.top = pt1.pageY; + document.getElementById("eck3").style.left = pt1.pageX; + document.getElementById("eck3").style.top = pt2.pageY-12; + document.getElementById("eck4").style.left = pt2.pageX-12; + document.getElementById("eck4").style.top = pt2.pageY-12; + + document.getElementById("eck1").style.visibility="visible"; + document.getElementById("eck2").style.visibility="visible"; + document.getElementById("eck3").style.visibility="visible"; + document.getElementById("eck4").style.visibility="visible"; + + document.getElementById("lay1").addEventListener("mousemove", move, true); + document.getElementById("eck4").addEventListener("mousemove", move, true); + + } else { + + document.eck1.moveTo(pt1.pageX, pt1.pageY); + document.eck2.moveTo(pt2.pageX-12, pt1.pageY); + document.eck3.moveTo(pt1.pageX, pt2.pageY-12); + document.eck4.moveTo(pt2.pageX-12, pt2.pageY-12); + + document.eck1.visibility="show"; + document.eck2.visibility="show"; + document.eck3.visibility="show"; + document.eck4.visibility="show"; + + document.lay1.captureEvents(Event.MOUSEMOVE); + document.eck4.captureEvents(Event.MOUSEMOVE); + document.lay1.onmousemove = move; + document.eck4.onmousemove = move; + + } + + } else { + + pt2 = new Point(evt); + + if ( document.all ) { + + document.all.eck1.visibility="hidden"; + document.all.eck2.visibility="hidden"; + document.all.eck3.visibility="hidden"; + document.all.eck4.visibility="hidden"; + + document.all.lay1.onmousedown = null; + document.all.eck4.onmousedown = null; + document.all.lay1.onmousemove = null; + document.all.eck4.onmousemove = null; + + } else if ( typeof(document.removeEventListener) == "function" ) { + + document.getElementById("eck1").style.visibility="hidden"; + document.getElementById("eck2").style.visibility="hidden"; + document.getElementById("eck3").style.visibility="hidden"; + document.getElementById("eck4").style.visibility="hidden"; + + document.getElementById("lay1").removeEventListener("mousedown", click, true); + document.getElementById("eck4").removeEventListener("mousedown", click, true); + document.getElementById("lay1").removeEventListener("mousemove", move, true); + document.getElementById("eck4").removeEventListener("mousemove", move, true); + + } else { + + document.eck1.visibility="hide"; + document.eck2.visibility="hide"; + document.eck3.visibility="hide"; + document.eck4.visibility="hide"; + + document.lay1.releaseEvents(Event.MOUSEDOWN); + document.eck4.releaseEvents(Event.MOUSEDOWN); + document.lay1.releaseEvents(Event.MOUSEMOVE); + document.eck4.releaseEvents(Event.MOUSEMOVE); + + } + + dlParams.wx.value = cropFloat(parseFloat(Math.min(pt1.relX, pt2.relX))); + dlParams.wy.value = cropFloat(parseFloat(Math.min(pt1.relY, pt2.relY))); + + dlParams.ww.value = cropFloat(parseFloat(Math.abs(pt1.relX-pt2.relX))); + dlParams.wh.value = cropFloat(parseFloat(Math.abs(pt1.relY-pt2.relY))); + + if ( (dlParams.ww.value != 0) && (dlParams.wh.value != 0) ) { + display(3); + } + } + } + + function move(evt) { + + pt2 = new Point(evt); + + var eck1_left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); + var eck1_top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); + var eck2_left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12;; + var eck2_top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); + var eck3_left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); + var eck3_top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; + var eck4_left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; + var eck4_top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; + + if ( document.all ) { + + document.all.eck1.style.left = eck1_left; + document.all.eck1.style.top = eck1_top; + document.all.eck2.style.left = eck2_left; + document.all.eck2.style.top = eck2_top; + document.all.eck3.style.left = eck3_left; + document.all.eck3.style.top = eck3_top; + document.all.eck4.style.left = eck4_left; + document.all.eck4.style.top = eck4_top; + + } else if ( typeof(document.getElementById) == "function" ) { + + document.getElementById("eck1").style.left = eck1_left; + document.getElementById("eck1").style.top = eck1_top; + document.getElementById("eck2").style.left = eck2_left; + document.getElementById("eck2").style.top = eck2_top; + document.getElementById("eck3").style.left = eck3_left; + document.getElementById("eck3").style.top = eck3_top; + document.getElementById("eck4").style.left = eck4_left; + document.getElementById("eck4").style.top = eck4_top; + + } else { + + document.eck1.moveTo(eck1_left, eck1_top); + document.eck2.moveTo(eck2_left, eck2_top); + document.eck3.moveTo(eck3_left, eck3_top); + document.eck4.moveTo(eck4_left, eck4_top); + + } + } + + // starting event capture + if ( document.all ) { + document.all.lay1.onmousedown = click; + document.all.eck4.onmousedown = click; + } else if ( typeof(document.addEventListener) == "function" ) { + document.getElementById("lay1").addEventListener("mousedown", click, true); + document.getElementById("eck4").addEventListener("mousedown", click, true); + } else { + document.lay1.captureEvents(Event.MOUSEDOWN); + document.eck4.captureEvents(Event.MOUSEDOWN); + document.lay1.onmousedown = click; + document.eck4.onmousedown = click; + } +} + + +function zoomExtends() { + + dlParams.wx.value = 0.0; + dlParams.wy.value = 0.0; + + dlParams.ww.value = 1.0; + dlParams.wh.value = 1.0; + + display(3); + +} + + +function zoomOut() { + + dlParams.wx.value = cropFloat(dlParams.wx.value-0.5*(dlParams.ww.value*(ZOOMFACTOR)-dlParams.ww.value)); + dlParams.wy.value = cropFloat(dlParams.wy.value-0.5*(dlParams.wh.value*(ZOOMFACTOR)-dlParams.wh.value)); + + dlParams.ww.value = cropFloat(dlParams.ww.value*(ZOOMFACTOR)); + dlParams.wh.value = cropFloat(dlParams.wh.value*(ZOOMFACTOR)); + + if ( dlParams.wx.value < 0 ) { + dlParams.wx.value = 0; + } + if ( dlParams.wy.value < 0 ) { + dlParams.wy.value = 0; + } + if ( dlParams.ww.value > 1 ) { + dlParams.ww.value = 1; + } + if ( dlParams.wh.value > 1 ) { + dlParams.wh.value = 1; + } + if ( dlParams.wx.value + dlParams.ww.value > 1 ) { + dlParams.wx.value = 1 - dlParams.ww.value; + } + if ( dlParams.wy.value + dlParams.wh.value > 1 ) { + dlParams.wy.value = 1 - dlParams.wh.value; + } + + display(3); +} + + +function moveTo() { + + if ( (parseFloat(dlParams.ww.value) == 1.0) && (parseFloat(dlParams.wh.value) == 1.0) ) { + alert("This function is only available when zoomed in!"); + return; + } + + function moveToEvent(event) { + + var point = new Point(event); + + dlParams.wx.value = cropFloat(point.relX-0.5*dlParams.ww.value); + dlParams.wy.value = cropFloat(point.relY-0.5*dlParams.wh.value); + + if ( dlParams.wx.value < 0 ) { + dlParams.wx.value = 0; + } + if ( dlParams.wy.value < 0 ) { + dlParams.wy.value = 0; + } + if ( dlParams.wx.value + dlParams.ww.value > 1 ) { + dlParams.wx.value = 1 - dlParams.ww.value; + } + if ( dlParams.wy.value + dlParams.wh.value > 1 ) { + dlParams.wy.value = 1 - dlParams.wh.value; + } + + // stopping event capture + if ( document.all ) { + document.all.lay1.onmousedown = null; + } else if ( typeof(document.removeEventListener) == "function" ) { + document.getElementById("lay1").removeEventListener("mousedown", moveToEvent, true); + } else { + document.lay1.releaseEvents(Event.MOUSEDOWN) + } + + display(3); + } + + // starting event capture + if ( document.all ) { + document.all.lay1.onmousedown = moveToEvent; + } else if ( typeof(document.addEventListener) == "function" ) { + document.getElementById("lay1").addEventListener("mousedown", moveToEvent, true); + } else { + document.lay1.captureEvents(Event.MOUSEDOWN); + document.lay1.onmousedown = moveToEvent; + } +} + + +function scale(factor) { + + dlParams.ws.value = cropFloat(factor); + display(3); + +} + + +// capturing keypresses for next and previous page +function parseKeypress(evt) { + + if ( document.all ) { + + if ( event.keyCode == 110 ) { + page('+1'); + } + if ( event.keyCode == 98 ) { + page('-1'); + } + + document.cancleBubble = true; + + } else { + + if ( evt.charCode == 110 ) { + page('+1'); + } else if ( evt.charCode == 98 ) { + page('-1'); + } else if ( evt.which == 110 ) { + page('+1'); + } else if ( evt.which == 98 ) { + // does not work currentlyfor Opera, because it catches the 'b'-key on it's own + // have to change the key or find another way - luginbuehl + page('-1'); + } + + } +} + + +// auxiliary function to crop senseless precicsion +function cropFloat(tmp) { + return parseInt(10000*tmp)/10000; +} diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/navigation_ie.js --- a/client/digitallibrary/navigation_ie.js Wed Jul 02 00:17:06 2003 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,389 +0,0 @@ -// this global variable has to be initialised before the frist use of the functions below -// to fill in the attributes you can use the function init provided below -// - array with all attributes -var att = new Array(); - -// fill in the values of the "att"-array -function init(fn, pn, ws, mo, mk, wx, wy, ww, wh) { - - // debug window to check the parameters passed - //alert ("DEBUG message (parameters in init):\n\npu = " + pu + "\npn = " + pn + "\nws = " + ws + "\nmo = " + mo + "\nmk = " + mk + "\nwx = " + wx + "\nwy = " + wy + "\nww = " + ww + "\nwh = " + wh); - - // attaching the values to the att-array - att[0] = fn; - att[1] = parseInt(pn); - att[2] = parseFloat(ws); - att[3] = mo; - att[4] = mk; - att[5] = parseFloat(wx); - att[6] = parseFloat(wy); - att[7] = parseFloat(ww); - att[8] = parseFloat(wh); - - // compatablility issue - if (att[3].indexOf("f") > -1) { - att[3] = "fit"; - } - - // converts the old mark format (0-1000) to new format(0.0 - 1.0) - // could even be useless now - if (att[4] != "0/0") { - var tmp = att[4].split(";"); - - att[4] = ""; - - for (i = 0; i < tmp.length; i++) { - tmp[i] = tmp[i].split("/"); - - if (tmp[i][0] > 1 && tmp[i][1] > 1) { - tmp[i][0] /= 1000; - tmp[i][1] /= 1000; - } - - att[4] += tmp[i][0] + "/" + tmp[i][1] + ";"; - } - att[4] = att[4].slice(0, -1); - } - - // initialisation stuff - // ==================== - - setMarks(); - - this.document.onkeypress = parseKeypress; - focus(); - - // give a name to the window containing digilib - this way one can test if there is already a - // digilib-window open and replace the contents of it (ex. digicat) - top.window.name = "digilib"; -} - - -// function that launches the ScaleServlet -// the different detailGrades: -// 0 -> back, next, page -// 1 -> zoomout -// 2 -> zoomarea, zoompoint, moveto, scaledef - -function loadPicture(detailGrade, keepArea) { - - var newQuery = "fn=" + att[0] + "&pn=" + att[1] + "&ws=" + att[2] + "&mo=" + att[3]; - - if (detailGrade == 0) { - att[4] = "0/0"; - } - - if ((detailGrade == 1) || (detailGrade == 0 && !keepArea)) { - att[5] = 0; - att[6] = 0; - att[7] = 1; - att[8] = 1; - } - - newQuery += "&mk=" + att[4] + "&wx=" + att[5] + "&wy=" + att[6] + "&ww=" + att[7] + "&wh=" + att[8]; - newQuery += "&dw=" + (document.body.clientWidth-30) + "&dh=" + (document.body.clientHeight-30); - - // debug window - checking the parameters passed to the next image - //alert ("DEBUG MESSAGE (query-string in loadPicture):\n\n" + newQuery); - - location.href = location.pathname + "?" + newQuery; -} - - -// constructor holding different values of a point -function Point(event) { - - this.pageX = parseInt(document.body.scrollLeft+event.x); - this.pageY = parseInt(document.body.scrollTop+event.y); - - this.x = this.pageX-parseInt(document.all.lay1.style.left); - this.y = this.pageY-parseInt(document.all.lay1.style.top); - - this.relX = cropFloat(att[5]+(att[7]*this.x/document.all.lay1.offsetWidth)); - this.relY = cropFloat(att[6]+(att[8]*this.y/document.all.lay1.offsetHeight)); - - return this; -} - - -function backPage(keepArea) { - - att[1] = parseInt(att[1]) - 1; - - if (att[1] > 0) { - loadPicture(0, keepArea); - } else { - att[1] = parseInt(att[1]) + 1; - alert("You are already on the first page!"); - } -} - - -function nextPage(keepArea) { - - att[1] = parseInt(att[1]) + 1; - - loadPicture(0, keepArea); -} - - -function page(keepArea) { - - do { - page = prompt("Goto Page:", 1); - } while ((page != null) && (page < 1)); - - if (page != null && page != att[1]) { - att[1] = page; - loadPicture(0, keepArea); - } -} - - -function digicat() { - var url = "digicat.html?" + att[0] + "+" + att[1]; - win = window.open(url, "digicat"); - win.focus(); -} - - -function ref(refselect) { - - var hyperlinkRef = baseUrl + "/digilib.jsp?"; - hyperlinkRef += att[0] + "+" + att[1] + "+" + att[2] + "+" + att[3] + "+" + att[4]; - - if ((att[5] != 0) || (att[6] != 0) || (att[7] != 1) || (att[8] != 1)) { - hyperlinkRef += "+" + att[5] + "+" + att[6] + "+" + att[7] + "+" + att[8]; - } - - if (refselect == 1) { - prompt("Link for HTML--documents", hyperlinkRef); - } else { - prompt("Link for LaTeX--documents", "\\href{" + hyperlinkRef + "}{TEXT}"); - } -} - - -function mark(refselect) { - - document.all.lay1.onmousedown = function() { - var point = new Point(event); - - if (att[4].split(";").length > 7) { - alert("Only 8 marks are possible at the moment!"); - return; - } - - if ((att[4] != "") && (att[4] != "0/0")) { - att[4] += ";"; - } else { - att[4] = ""; - } - - att[4] += point.relX + "/" + point.relY; - - document.all.lay1.onmousedown = function() {} - - setMarks(); - } -} - - -function zoomArea() { - var state = 0; - var pt1, pt2; - - function click() { - if (state == 0) { - state = 1; - - pt1 = new Point(event); - pt2 = pt1; - - document.all.eck1.style.left = pt1.pageX; - document.all.eck1.style.top = pt1.pageY; - document.all.eck2.style.left = pt2.pageX-12; - document.all.eck2.style.top = pt1.pageY; - document.all.eck3.style.left = pt1.pageX; - document.all.eck3.style.top = pt2.pageY-12; - document.all.eck4.style.left = pt2.pageX-12; - document.all.eck4.style.top = pt2.pageY-12; - - document.all.eck1.style.visibility="visible"; - document.all.eck2.style.visibility="visible"; - document.all.eck3.style.visibility="visible"; - document.all.eck4.style.visibility="visible"; - - document.all.lay1.onmousemove = move; - document.all.eck4.onmousemove = move; - - } else { - pt2 = new Point(event); - - document.all.eck1.visibility="hidden"; - document.all.eck2.visibility="hidden"; - document.all.eck3.visibility="hidden"; - document.all.eck4.visibility="hidden"; - - document.all.lay1.cancleBubble = true; - document.all.eck4.cancleBubble = true; - - att[5] = Math.min(pt1.relX, pt2.relX); - att[6] = Math.min(pt1.relY, pt2.relY); - - att[7] = Math.abs(pt1.relX-pt2.relX); - att[8] = Math.abs(pt1.relY-pt2.relY); - - if (att[7] != 0 && att[8] != 0) { - loadPicture(2); - } - } - } - - function move() { - pt2 = new Point(event); - - document.all.eck1.style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.all.eck1.style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.all.eck2.style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.all.eck2.style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.all.eck3.style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.all.eck3.style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - document.all.eck4.style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.all.eck4.style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - } - - document.all.lay1.onmousedown = click; - document.all.eck4.onmousedown = click; -} - - -function zoomPoint() { - - document.all.lay1.onmousedown = function() { - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]*0.7); - att[6] = cropFloat(point.relY-0.5*att[8]*0.7); - - att[7] = cropFloat(att[7]*0.7); - att[8] = cropFloat(att[8]*0.7); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - document.all.lay1.cancleBubble = true; - - loadPicture(2); - } -} - - -function zoomOut() { - loadPicture(1); -} - - -function moveTo() { - - document.all.lay1.onmousedown = function() { - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]); - att[6] = cropFloat(point.relY-0.5*att[8]); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - document.all.lay1.cancleBubble = true; - - loadPicture(2); - } -} - - -function scale(scaledef) { - - att[2] = scaledef; - loadPicture(2); -} - - -function setMarks() { - if ((att[4] != "") && (att[4] != "0/0")) { - var mark = att[4].split(";"); - - var countMarks = mark.length; - - // maximum of marks is 8 - // we do not report this error because this is already done in func. "Mark" - if (countMarks > 8) countMarks = 8; - - var picWidth = document.all.lay1.offsetWidth; - var picHeight = document.all.lay1.offsetHeight; - - // catch the cases where the picture had not been loaded already and - // make a timeout so that the coordinates are calculated with the real dimensions - if (picWidth > 30) { - - var xoffset = parseInt(document.all.lay1.style.left); - var yoffset = parseInt(document.all.lay1.style.top); - - for (var i = 0; i < countMarks; i++) { - mark[i] = mark[i].split("/"); - - if ((mark[i][0] > att[5]) && (mark[i][1] > att[6]) && (mark[i][0] < (att[5]+att[7])) && (mark[i][1] < (att[6]+att[8]))) { - - mark[i][0] = parseInt(xoffset+picWidth*(mark[i][0]-att[5])/att[7]); - mark[i][1] = parseInt(yoffset+picHeight*(mark[i][1]-att[6])/att[8]); - - document.getElementById("dot" + i).style.left = mark[i][0]-5; - document.getElementById("dot" + i).style.top = mark[i][1]-5; - document.getElementById("dot" + i).style.visibility = "visible"; - } - } - } else { - setTimeout("setMarks()", 100); - } - } -} - - -// capturing keypresses for next and previous page -function parseKeypress() { - e = event; - - if (e.keyCode == 110) { - Nextpage(); - } - if (e.keyCode == 98) { - Backpage(); - } - document.cancleBubble = true; -} - - -// auxiliary function to crop senseless precicsion -function cropFloat(tmp) { - return parseInt(10000*tmp)/10000; -} diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/navigation_n4.js --- a/client/digitallibrary/navigation_n4.js Wed Jul 02 00:17:06 2003 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,374 +0,0 @@ -// this global variable has to be initialised before the frist use of the functions below -// to fill in the attributes you can use the function init provided below -// array with all attributes -var att = new Array(); - -// fill in the values of the "att"-array -function init(fn, pn, ws, mo, mk, wx, wy, ww, wh) { - - // debug window to check the parameters passed - //alert ("DEBUG message (parameters in init):\n\npu = " + pu + "\npn = " + pn + "\nws = " + ws + "\nmo = " + mo + "\nmk = " + mk + "\nwx = " + wx + "\nwy = " + wy + "\nww = " + ww + "\nwh = " + wh); - - // attaching the values to the att-array - att[0] = fn; - att[1] = parseInt(pn); - att[2] = parseFloat(ws); - att[3] = mo; - att[4] = mk; - att[5] = parseFloat(wx); - att[6] = parseFloat(wy); - att[7] = parseFloat(ww); - att[8] = parseFloat(wh); - - // compatablility issue - if (att[3].indexOf("f") > -1) { - att[3] = "fit"; - } - - // converts the old mark format (0-1000) to new format(0.0 - 1.0) - // could even be useless now - if (att[4] != "0/0") { - var tmp = att[4].split(";"); - - att[4] = ""; - - for (i = 0; i < tmp.length; i++) { - tmp[i] = tmp[i].split("/"); - - if (tmp[i][0] > 1 && tmp[i][1] > 1) { - tmp[i][0] /= 1000; - tmp[i][1] /= 1000; - } - - att[4] += tmp[i][0] + "/" + tmp[i][1] + ";"; - } - att[4] = att[4].slice(0, -1); - } - - // initialisation stuff - // ==================== - - setMarks(); - - window.captureEvents(Event.KEYDOWN); - window.onkeydown = parseKeypress; - - // give a name to the window containing digilib - this way one can test if there is already a - // digilib-window open and replace the contents of it (ex. digicat) - top.window.name = "digilib"; -} - - -// function that launches the ScaleServlet -// the different detailGrades: -// 0 -> back, next, page -// 1 -> zoomout -// 2 -> zoomarea, zoompoint, moveto, scaledef - -function loadPicture(detailGrade, keepArea) { - - var newQuery = "fn=" + att[0] + "&pn=" + att[1] + "&ws=" + att[2] + "&mo=" + att[3]; - - if (detailGrade == 0) { - att[4] = "0/0"; - } - - if ((detailGrade == 1) || (detailGrade == 0 && !keepArea)) { - att[5] = 0; - att[6] = 0; - att[7] = 1; - att[8] = 1; - } - - newQuery += "&mk=" + att[4] + "&wx=" + att[5] + "&wy=" + att[6] + "&ww=" + att[7] + "&wh=" + att[8]; - newQuery += "&dw=" + (innerWidth-30) + "&dh=" + (innerHeight-30); - - // debug window - checking the parameters passed to the next image - //alert ("DEBUG MESSAGE (query-string in loadPicture):\n\n" + newQuery); - - location.href = location.pathname + "?" + newQuery; -} - - -// constructor holding different values of a point -function Point(event) { - - this.pageX = parseInt(event.pageX); - this.pageY = parseInt(event.pageY); - - this.x = this.pageX-document.lay1.left; - this.y = this.pageY-document.lay1.top; - - this.relX = cropFloat(att[5]+(att[7]*this.x/document.lay1.clip.width)); - this.relY = cropFloat(att[6]+(att[8]*this.y/document.lay1.clip.height)); - - return this; -} - - -function backPage(keepArea) { - - att[1] = parseInt(att[1]) - 1; - - if (att[1] > 0) { - loadPicture(0, keepArea); - } else { - att[1] = parseInt(att[1]) + 1; - alert("You are already on the first page!"); - } -} - - -function nextPage(keepArea) { - - att[1] = parseInt(att[1]) + 1; - - loadPicture(0, keepArea); -} - - -function page(keepArea) { - - do { - page = prompt("Goto Page:", 1); - } while ((page != null) && (page < 1)); - - if (page != null && page != att[1]) { - att[1] = page; - loadPicture(0, keepArea); - } -} - - -function digicat() { - var url = "digicat.html?" + att[0] + "+" + att[1]; - win = window.open(url, "digicat"); - win.focus(); -} - - -function ref(refselect) { - - var hyperlinkRef = baseUrl + "/digilib.jsp?"; - hyperlinkRef += att[0] + "+" + att[1] + "+" + att[2] + "+" + att[3] + "+" + att[4]; - - if ((att[5] != 0) || (att[6] != 0) || (att[7] != 1) || (att[8] != 1)) { - hyperlinkRef += "+" + att[5] + "+" + att[6] + "+" + att[7] + "+" + att[8]; - } - - if (refselect == 1) { - prompt("Link for HTML--documents", hyperlinkRef); - } else { - prompt("Link for LaTeX--documents", "\\href{" + hyperlinkRef + "}{TEXT}"); - } -} - - -function mark(refselect) { - - document.lay1.captureEvents(Event.MOUSEDOWN); - document.lay1.onmousedown = function(event) { - var point = new Point(event); - - if ((att[4] != "") && (att[4] != "0/0")) { - att[4] += ";"; - } else { - att[4] = ""; - } - - att[4] += point.relX + "/" + point.relY; - - document.lay1.releaseEvents(Event.MOUSEDOWN); - setMarks(); - } -} - - -function zoomArea() { - var state = 0; - var pt1, pt2; - - function click(event) { - - if (state == 0) { - state = 1; - - pt1 = new Point(event); - pt2 = pt1; - - document.eck1.moveTo(pt1.pageX, pt1.pageY); - document.eck2.moveTo(pt2.pageX-12, pt1.pageY); - document.eck3.moveTo(pt1.pageX, pt2.pageY-12); - document.eck4.moveTo(pt2.pageX-12, pt2.pageY-12); - - document.eck1.visibility="show"; - document.eck2.visibility="show"; - document.eck3.visibility="show"; - document.eck4.visibility="show"; - - document.lay1.captureEvents(Event.MOUSEMOVE); - document.eck4.captureEvents(Event.MOUSEMOVE); - - document.lay1.onmousemove = move; - document.eck4.onmousemove = move; - - } else { - - pt2 = new Point(event); - - document.lay1.releaseEvents(Event.MOUSEDOWN | Event.MOUSEMOVE); - document.eck4.releaseEvents(Event.MOUSEDOWN | Event.MOUSEMOVE); - - document.eck1.visibility="hide"; - document.eck2.visibility="hide"; - document.eck3.visibility="hide"; - document.eck4.visibility="hide"; - - att[5] = Math.min(pt1.relX, pt2.relX); - att[6] = Math.min(pt1.relY, pt2.relY); - - att[7] = Math.abs(pt1.relX-pt2.relX); - att[8] = Math.abs(pt1.relY-pt2.relY); - - if (att[7] != 0 && att[8] != 0) { - loadPicture(2); - } - } - } - - function move(event) { - - pt2 = new Point(event); - - document.eck1.moveTo(((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX), ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY)); - document.eck2.moveTo(((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12, ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY)); - document.eck3.moveTo(((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX), ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12); - document.eck4.moveTo(((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12, ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12); - } - - document.lay1.captureEvents(Event.MOUSEDOWN); - document.eck4.captureEvents(Event.MOUSEDOWN); - - document.lay1.onmousedown = click; - document.eck4.onmousedown = click; -} - - -function zoomPoint() { - - document.lay1.captureEvents(Event.MOUSEDOWN); - document.lay1.onmousedown = function(event) { - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]*0.7); - att[6] = cropFloat(point.relY-0.5*att[8]*0.7); - - att[7] = cropFloat(att[7]*0.7); - att[8] = cropFloat(att[8]*0.7); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - releaseEvents(Event.MOUSEDOWN); - - loadPicture(2); - } -} - - -function zoomOut() { - loadPicture(1); -} - - -function moveTo() { - - document.lay1.captureEvents(Event.MOUSEDOWN); - document.lay1.onmousedown = function(event) { - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]); - att[6] = cropFloat(point.relY-0.5*att[8]); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - releaseEvents(Event.MOUSEDOWN); - - loadPicture(2); - } -} - - -function scale(scaledef) { - - att[2] = scaledef; - loadPicture(2); -} - - -function setMarks() { - if ((att[4] != "") && (att[4] != "0/0")) { - var mark = att[4].split(";"); - - var countMarks = mark.length; - - // maximum of marks is 8 - // we do not report this error because this is already done in func. "Mark" - if (countMarks > 8) countMarks = 8; - - var picWidth = document.lay1.clip.width; - var picHeight = document.lay1.clip.height; - - for (var i = 0; i < countMarks; i++) { - mark[i] = mark[i].split("/"); - - if ((mark[i][0] > att[5]) && (mark[i][1] > att[6]) && (mark[i][0] < (att[5]+att[7])) && (mark[i][1] < (att[6]+att[8]))) { - - mark[i][0] = parseInt(document.lay1.x + (picWidth*(mark[i][0]-att[5]))/att[7]); - mark[i][1] = parseInt(document.lay1.y + (picHeight*(mark[i][1]-att[6]))/att[8]); - - document.layers[i+1].moveTo(mark[i][0]-5, mark[i][1]-5); - document.layers[i+1].visibility = "show"; - } - } - } -} - - -// capturing keypresses for next and previous page -function parseKeypress(event) { - var whichCode = (window.Event) ? event.which : event.keyCode; - if (String.fromCharCode(whichCode) == "n") { - nextPage(); - } - if (String.fromCharCode(whichCode) == "b") { - backPage(); - } -} - - -// auxiliary function to crop senseless precicsion -function cropFloat(tmp) { - return parseInt(10000*tmp)/10000; -} diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/navigation_n6.js --- a/client/digitallibrary/navigation_n6.js Wed Jul 02 00:17:06 2003 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,420 +0,0 @@ -/* -Copyright (C) 2003 WTWG, Uni Bern - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Author: Christian Luginbuehl, 01.05.2003 , Version Alcatraz 0.3 -*/ -// this global variable has to be initialised before the frist use of the functions below -// to fill in the attributes you can use the function init provided below -// - array with all attributes -var att = new Object(); - -// fill in the values of the "att"-array -function init(fn, pn, ws, mo, mk, wx, wy, ww, wh) { - - // debug window to check the parameters passed - //alert ("DEBUG message (parameters in init):\n\npu = " + pu + "\npn = " + pn + "\nws = " + ws + "\nmo = " + mo + "\nmk = " + mk + "\nwx = " + wx + "\nwy = " + wy + "\nww = " + ww + "\nwh = " + wh); - - // attaching the values to the att-array - att.fn = fn; - att.pn = parseInt(pn); - att.ws = parseFloat(ws); - att.mo = mo; - att.mk = mk; - att.wx = parseFloat(wx); - att.wy = parseFloat(wy); - att.ww = parseFloat(ww); - att.wh = parseFloat(wh); - - // compatablility issue -// dangerous at the time - lugi -// if (att.mo.indexOf("f") > -1) { -// att.mo = "fit"; -// } - - // converts the old mark format (0-1000) to new format(0.0 - 1.0) - // could even be useless now - if (att.mk != "0/0" && att.mk != "") { - var tmp = att.mk.split(";"); - - att.mk = ""; - - for (i = 0; i < tmp.length; i++) { - tmp[i] = tmp[i].split("/"); - - if (tmp[i][0] > 1 && tmp[i][1] > 1) { - tmp[i][0] /= 1000; - tmp[i][1] /= 1000; - } - - att.mk += tmp[i][0] + "/" + tmp[i][1] + ";"; - } - att.mk = att.mk.slice(0, -1); - } - - // initialisation stuff - // ==================== - - setMarks(); - - this.document.addEventListener('keypress', parseKeypress, true); - focus(); - - // give a name to the window containing digilib - this way one can test if there is already a - // digilib-window open and replace the contents of it (ex. digicat) - top.window.name = "digilib"; -} - - -// function that launches the ScaleServlet -// the different detailGrades: -// 0 -> back, next, page -// 1 -> zoomout -// 2 -> zoomarea, zoompoint, moveto, scaledef - -function loadPicture(detailGrade, keepArea) { - - var newQuery = "fn=" + att.fn + "&pn=" + att.pn + "&ws=" + att.ws + "&mo=" + att.mo; - - if (detailGrade == 0) { - att.mk = "0/0"; - } - - if ((detailGrade == 1) || (detailGrade == 0 && !keepArea)) { - att.wx = 0; - att.wy = 0; - att.ww = 1; - att.wh = 1; - } - - newQuery += "&mk=" + att.mk + "&wx=" + att.wx + "&wy=" + att.wy + "&ww=" + att.ww + "&wh=" + att.wh; - newQuery += "&dw=" + (innerWidth-30) + "&dh=" + (innerHeight-30); - newQuery += "&lv=1" - - // debug window - checking the parameters passed to the next image - alert ("DEBUG MESSAGE (query-string in loadPicture):\n\n" + newQuery); - - location.href = location.protocol + "//" + location.host + location.pathname + "?" + newQuery; -} - - -// constructor holding different values of a point -function Point(event) { - - this.pageX = parseInt(event.pageX); - this.pageY = parseInt(event.pageY); - - this.x = this.pageX-parseInt(document.getElementById("lay1").style.left); - this.y = this.pageY-parseInt(document.getElementById("lay1").style.top); - - this.relX = cropFloat(att.wx+(att.ww*this.x/document.pic.offsetWidth)); - this.relY = cropFloat(att.wy+(att.wh*this.y/document.pic.offsetHeight)); - - return this; -} - - -function backPage(keepArea) { - - att.pn = parseInt(att.pn) - 1; - - if (att.pn > 0) { - loadPicture(0, keepArea); - } else { - att.pn = parseInt(att.pn) + 1; - alert("You are already on the first page!"); - } -} - - -function nextPage(keepArea) { - - att.pn = parseInt(att.pn) + 1; - - loadPicture(0, keepArea); -} - - -function page(keepArea) { - - do { - page = prompt("Goto Page:", 1); - } while ((page != null) && (page < 1)); - - if (page != null && page != att.pn) { - att.pn = page; - loadPicture(0, keepArea); - } -} - - -function digicat() { - var url = baseUrl + "/digicat.jsp?" + att.fn + "+" + att.pn; - win = window.open(url, "digicat"); - win.focus(); -} - - -function ref(refselect) { - - var hyperlinkRef = baseUrl + "/digilib.jsp?"; - hyperlinkRef += att.fn + "+" + att.pn + "+" + att.ws + "+" + att.mo + "+" + att.mk; - - if ((att.wx != 0) || (att.wy != 0) || (att.ww != 1) || (att.wh != 1)) { - hyperlinkRef += "+" + att.wx + "+" + att.wy + "+" + att.ww + "+" + att.wh; - } - - if (refselect == 1) { - prompt("Link for HTML--documents", hyperlinkRef); - } else { - prompt("Link for LaTeX--documents", "\\href{" + hyperlinkRef + "}{TEXT}"); - } -} - - -function mark() { - - if (att.mk.split(";").length > 7) { - alert("Only 8 marks are possible at the moment!"); - return; - } - - function markEvent(event) { - var point = new Point(event); - - if ((att.mk != "") && (att.mk != "0/0")) { - att.mk += ";"; - } else { - att.mk = ""; - } - att.mk += point.relX + "/" + point.relY; - - document.getElementById("lay1").removeEventListener("mousedown", markEvent, true); - setMarks(); - } - - document.getElementById("lay1").addEventListener("mousedown", markEvent, true); -} - - -function zoomArea() { - var state = 0; - var pt1, pt2; - - function click(event) { - - if (state == 0) { - state = 1; - - pt1 = new Point(event); - pt2 = pt1; - - document.getElementById("eck1").style.left = pt1.pageX; - document.getElementById("eck1").style.top = pt1.pageY; - document.getElementById("eck2").style.left = pt2.pageX-12; - document.getElementById("eck2").style.top = pt1.pageY; - document.getElementById("eck3").style.left = pt1.pageX; - document.getElementById("eck3").style.top = pt2.pageY-12; - document.getElementById("eck4").style.left = pt2.pageX-12; - document.getElementById("eck4").style.top = pt2.pageY-12; - - document.getElementById("eck1").style.visibility="visible"; - document.getElementById("eck2").style.visibility="visible"; - document.getElementById("eck3").style.visibility="visible"; - document.getElementById("eck4").style.visibility="visible"; - - document.getElementById("lay1").addEventListener("mousemove", move, true); - document.getElementById("eck4").addEventListener("mousemove", move, true); - - } else { - - pt2 = new Point(event); - - document.getElementById("lay1").removeEventListener("mousedown", click, true); - document.getElementById("eck4").removeEventListener("mousedown", click, true); - - document.getElementById("lay1").removeEventListener("mousemove", move, true); - document.getElementById("eck4").removeEventListener("mousemove", move, true); - - document.getElementById("eck1").style.visibility="hidden"; - document.getElementById("eck2").style.visibility="hidden"; - document.getElementById("eck3").style.visibility="hidden"; - document.getElementById("eck4").style.visibility="hidden"; - - att.wx = parseFloat(Math.min(pt1.relX, pt2.relX)); - att.wy = parseFloat(Math.min(pt1.relY, pt2.relY)); - - att.ww = parseFloat(Math.abs(pt1.relX-pt2.relX)); - att.wh = parseFloat(Math.abs(pt1.relY-pt2.relY)); - - if (att.ww != 0 && att.wh != 0) { - loadPicture(2); - } - } - } - - function move(event) { - - pt2 = new Point(event); - - document.getElementById("eck1").style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.getElementById("eck1").style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.getElementById("eck2").style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.getElementById("eck2").style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.getElementById("eck3").style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.getElementById("eck3").style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - document.getElementById("eck4").style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.getElementById("eck4").style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - } - - document.getElementById("lay1").addEventListener("mousedown", click, true); - document.getElementById("eck4").addEventListener("mousedown", click, true); -} - - -function zoomPoint() { - - function zoomPointEvent(event) { - var point = new Point(event); - - att.wx = cropFloat(point.relX-0.5*att.ww*0.7); - att.wy = cropFloat(point.relY-0.5*att.wh*0.7); - - att.ww = cropFloat(att.ww*0.7); - att.wh = cropFloat(att.wh*0.7); - - if (att.wx < 0) { - att.wx = 0; - } - if (att.wy < 0) { - att.wy = 0; - } - if (att.wx+att.ww > 1) { - att.wx = 1-att.ww; - } - if (att.wy+att.wh > 1) { - att.wy = 1-att.wh; - } - - document.getElementById("lay1").removeEventListener("mousedown", zoomPointEvent, true); - - loadPicture(2); - } - - document.getElementById("lay1").addEventListener("mousedown", zoomPointEvent, true); -} - - -function zoomOut() { - - loadPicture(1); -} - - -function moveTo() { - - function moveToEvent(event) { - - var point = new Point(event); - - att.wx = cropFloat(point.relX-0.5*att.ww); - att.wy = cropFloat(point.relY-0.5*att.wh); - - if (att.wx < 0) { - att.wx = 0; - } - if (att.wy < 0) { - att.wy = 0; - } - if (att.wx+att.ww > 1) { - att.wx = 1-att.ww; - } - if (att.wy+att.wh > 1) { - att.wy = 1-att.wh; - } - - document.getElementById("lay1").removeEventListener("mousedown", moveToEvent, true); - - loadPicture(2); - } - - document.getElementById("lay1").addEventListener("mousedown", moveToEvent, true); -} - - -function scale(scaledef) { - - att.ws = scaledef; - loadPicture(2); -} - - -function setMarks() { - - if (att.mk != "" && att.mk != "0/0") { - var mark = att.mk.split(";"); - - var countMarks = mark.length; - - // maximum of marks is 8 - // we do not report this error because this is already done in func. "Mark" - if (countMarks > 8) countMarks = 8; - - var picWidth = document.pic.offsetWidth; - var picHeight = document.pic.offsetHeight; - - // catch the cases where the picture had not been loaded already and - // make a timeout so that the coordinates are calculated with the real dimensions - if (document.pic.complete) { - var xoffset = parseInt(document.getElementById("lay1").style.left); - var yoffset = parseInt(document.getElementById("lay1").style.top); - - for (var i = 0; i < countMarks; i++) { - mark[i] = mark[i].split("/"); - - if ((mark[i][0] >= att.wx) && (mark[i][1] >= att.wy) && (mark[i][0] <= (att.wx+att.ww)) && (mark[i][1] <= (att.wy+att.wh))) { - - mark[i][0] = parseInt(xoffset+picWidth*(mark[i][0]-att.wx)/att.ww); - mark[i][1] = parseInt(yoffset+picHeight*(mark[i][1]-att.wy)/att.wh); - - - document.getElementById("dot" + i).style.left = mark[i][0]-5; - document.getElementById("dot" + i).style.top = mark[i][1]-5; - document.getElementById("dot" + i).style.visibility = "visible"; - } - } - } else { - setTimeout("setMarks()", 100); - } - } -} - -// capturing keypresses for next and previous page -// ascii-values of n = 110, b = 98 -function parseKeypress (event) { - if (event.charCode == 110) { - nextPage(); - } - if (event.charCode == 98) { - backPage(); - } -} - - -// auxiliary function to crop senseless precicsion -function cropFloat(tmp) { - return parseInt(10000*tmp)/10000; -} diff -r d111b3d57238 -r 28f96364040f client/digitallibrary/navigation_o6.js --- a/client/digitallibrary/navigation_o6.js Wed Jul 02 00:17:06 2003 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,402 +0,0 @@ -// this global variable has to be initialised before the frist use of the functions below -// to fill in the attributes you can use the function init provided below -// - array with all attributes -var att = new Array(); - -// fill in the values of the "att"-array -function init(fn, pn, ws, mo, mk, wx, wy, ww, wh) { - - // debug window to check the parameters passed - //alert ("DEBUG message (parameters in init):\n\npu = " + pu + "\npn = " + pn + "\nws = " + ws + "\nmo = " + mo + "\nmk = " + mk + "\nwx = " + wx + "\nwy = " + wy + "\nww = " + ww + "\nwh = " + wh); - - // attaching the values to the att-array - att[0] = fn; - att[1] = parseInt(pn); - att[2] = parseFloat(ws); - att[3] = mo; - att[4] = mk; - att[5] = parseFloat(wx); - att[6] = parseFloat(wy); - att[7] = parseFloat(ww); - att[8] = parseFloat(wh); - - // compatablility issue - if (att[3].indexOf("f") > -1) { - att[3] = "fit"; - } - - // converts the old mark format (0-1000) to new format(0.0 - 1.0) - // could even be useless now - if (att[4] != "0/0") { - var tmp = att[4].split(";"); - - att[4] = ""; - - for (i = 0; i < tmp.length; i++) { - tmp[i] = tmp[i].split("/"); - - if (tmp[i][0] > 1 && tmp[i][1] > 1) { - tmp[i][0] /= 1000; - tmp[i][1] /= 1000; - } - - att[4] += tmp[i][0] + "/" + tmp[i][1] + ";"; - } - att[4] = att[4].slice(0, -1); - } - - // initialisation stuff - // ==================== - - setMarks(); - - this.document.onkeypress = parseKeypress; - focus(); - - // give a name to the window containing digilib - this way one can test if there is already a - // digilib-window open and replace the contents of it (ex. digicat) - top.window.name = "digilib"; -} - - -// function that launches the ScaleServlet -// the different detailGrades: -// 0 -> back, next, page -// 1 -> zoomout -// 2 -> zoomarea, zoompoint, moveto, scaledef - -function loadPicture(detailGrade, keepArea) { - - var newQuery = "fn=" + att[0] + "&pn=" + att[1] + "&ws=" + att[2] + "&mo=" + att[3]; - - if (detailGrade == 0) { - att[4] = "0/0"; - } - - if ((detailGrade == 1) || (detailGrade == 0 && !keepArea)) { - att[5] = 0; - att[6] = 0; - att[7] = 1; - att[8] = 1; - } - - newQuery += "&mk=" + att[4] + "&wx=" + att[5] + "&wy=" + att[6] + "&ww=" + att[7] + "&wh=" + att[8]; - newQuery += "&dw=" + (innerWidth-30) + "&dh=" + (innerHeight-30); - - // debug window - checking the parameters passed to the next image - //alert ("DEBUG MESSAGE (query-string in loadPicture):\n\n" + newQuery); - - location.href = location.pathname + "?" + newQuery; -} - - -// constructor holding different values of a point -function Point(event) { - - this.pageX = parseInt(event.clientX); - this.pageY = parseInt(event.clientY); - - this.x = this.pageX-parseInt(document.getElementById("lay1").style.left); - this.y = this.pageY-parseInt(document.getElementById("lay1").style.top); - - this.relX = cropFloat(att[5]+(att[7]*this.x/document.pic.offsetWidth)); - this.relY = cropFloat(att[6]+(att[8]*this.y/document.pic.offsetHeight)); - -// alert ("page:\t" + this.pageX + "\t" + this.pageY + "\npic:\t" + this.x + "\t" + this.y + "\nrel:\t" + this.relX + "\t" + this.relY); - - return this; -} - - -function backPage(keepArea) { - - att[1] = parseInt(att[1]) - 1; - - if (att[1] > 0) { - loadPicture(0, keepArea); - } else { - att[1] = parseInt(att[1]) + 1; - alert("You are already on the first page!"); - } -} - - -function nextPage(keepArea) { - - att[1] = parseInt(att[1]) + 1; - - loadPicture(0, keepArea); -} - - -function page(keepArea) { - - do { - page = prompt("Goto Page:", 1); - } while ((page != null) && (page < 1)); - - if (page != null && page != att[1]) { - att[1] = page; - loadPicture(0, keepArea); - } -} - - -function digicat() { - var url = "digicat.html?" + att[0] + "+" + att[1]; - win = window.open(url, "digicat"); - win.focus(); -} - - -function ref(refselect) { - - var hyperlinkRef = baseUrl + "digilib.jsp?"; - hyperlinkRef += att[0] + "+" + att[1] + "+" + att[2] + "+" + att[3] + "+" + att[4]; - - if ((att[5] != 0) || (att[6] != 0) || (att[7] != 1) || (att[8] != 1)) { - hyperlinkRef += "+" + att[5] + "+" + att[6] + "+" + att[7] + "+" + att[8]; - } - - if (refselect == 1) { - prompt("Link for HTML--documents", hyperlinkRef); - } else { - prompt("Link for LaTeX--documents", "\\href{" + hyperlinkRef + "}{TEXT}"); - } -} - - -function mark() { - - if (att[4].split(";").length > 7) { - alert("Only 8 marks are possible at the moment!"); - return; - } - - function markEvent(event) { - var point = new Point(event); - - if ((att[4] != "") && (att[4] != "0/0")) { - att[4] += ";"; - } else { - att[4] = ""; - } - att[4] += point.relX + "/" + point.relY; - - document.getElementById("lay1").onmousedown = false; - setMarks(); - } - - document.getElementById("lay1").onmousedown = markEvent; -} - - -function zoomArea() { - var state = 0; - var pt1, pt2; - - function click(event) { - - if (state == 0) { - state = 1; - - pt1 = new Point(event); - pt2 = pt1; - - document.getElementById("eck1").style.left = pt1.pageX; - document.getElementById("eck1").style.top = pt1.pageY; - document.getElementById("eck2").style.left = pt2.pageX-12; - document.getElementById("eck2").style.top = pt1.pageY; - document.getElementById("eck3").style.left = pt1.pageX; - document.getElementById("eck3").style.top = pt2.pageY-12; - document.getElementById("eck4").style.left = pt2.pageX-12; - document.getElementById("eck4").style.top = pt2.pageY-12; - - document.getElementById("eck1").style.visibility="visible"; - document.getElementById("eck2").style.visibility="visible"; - document.getElementById("eck3").style.visibility="visible"; - document.getElementById("eck4").style.visibility="visible"; - - document.getElementById("lay1").onmousemove = move; - document.getElementById("eck4").onmousemove = move; - - } else { - - pt2 = new Point(event); - - document.getElementById("lay1").onmousedown = false; - document.getElementById("eck4").onmousedown = false; - - document.getElementById("eck1").style.visibility="hidden"; - document.getElementById("eck2").style.visibility="hidden"; - document.getElementById("eck3").style.visibility="hidden"; - document.getElementById("eck4").style.visibility="hidden"; - - att[5] = Math.min(pt1.relX, pt2.relX); - att[6] = Math.min(pt1.relY, pt2.relY); - - att[7] = Math.abs(pt1.relX-pt2.relX); - att[8] = Math.abs(pt1.relY-pt2.relY); - - if (att[7] != 0 && att[8] != 0) { - loadPicture(2); - } - } - } - - function move(event) { - - pt2 = new Point(event); - - document.getElementById("eck1").style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.getElementById("eck1").style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.getElementById("eck2").style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.getElementById("eck2").style.top = ((pt1.pageY < pt2.pageY) ? pt1.pageY : pt2.pageY); - document.getElementById("eck3").style.left = ((pt1.pageX < pt2.pageX) ? pt1.pageX : pt2.pageX); - document.getElementById("eck3").style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - document.getElementById("eck4").style.left = ((pt1.pageX < pt2.pageX) ? pt2.pageX : pt1.pageX)-12; - document.getElementById("eck4").style.top = ((pt1.pageY < pt2.pageY) ? pt2.pageY : pt1.pageY)-12; - } - - document.getElementById("lay1").onmousedown = click; - document.getElementById("eck4").onmousedown = click; -} - - -function zoomPoint() { - - function zoomPointEvent(event) { - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]*0.7); - att[6] = cropFloat(point.relY-0.5*att[8]*0.7); - - att[7] = cropFloat(att[7]*0.7); - att[8] = cropFloat(att[8]*0.7); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - document.getElementById("lay1").onmousedown = false; - - loadPicture(2); - } - - document.getElementById("lay1").onmousedown = zoomPointEvent; -} - - -function zoomOut() { - - loadPicture(1); -} - - -function moveTo() { - - function moveToEvent(event) { - - var point = new Point(event); - - att[5] = cropFloat(point.relX-0.5*att[7]); - att[6] = cropFloat(point.relY-0.5*att[8]); - - if (att[5] < 0) { - att[5] = 0; - } - if (att[6] < 0) { - att[6] = 0; - } - if (att[5]+att[7] > 1) { - att[5] = 1-att[7]; - } - if (att[6]+att[8] > 1) { - att[6] = 1-att[8]; - } - - document.getElementById("lay1").onmousedown = false; - - loadPicture(2); - } - - document.getElementById("lay1").onmousedown = moveToEvent; -} - - -function scale(scaledef) { - - att[2] = scaledef; - loadPicture(2); -} - - -function setMarks() { - - if (att[4] != "" && att[4] != "0/0") { - var mark = att[4].split(";"); - - var countMarks = mark.length; - - // maximum of marks is 8 - // we do not report this error because this is already done in func. "Mark" - if (countMarks > 8) countMarks = 8; - - var picWidth = document.pic.offsetWidth; - var picHeight = document.pic.offsetHeight; - - // catch the cases where the picture had not been loaded already and - // make a timeout so that the coordinates are calculated with the real dimensions - if (document.pic.complete) { - var xoffset = parseInt(document.getElementById("lay1").style.left); - var yoffset = parseInt(document.getElementById("lay1").style.top); - - for (var i = 0; i < countMarks; i++) { - mark[i] = mark[i].split("/"); - - if ((mark[i][0] > att[5]) && (mark[i][1] > att[6]) && (mark[i][0] < (att[5]+att[7])) && (mark[i][1] < (att[6]+att[8]))) { - - mark[i][0] = parseInt(xoffset+picWidth*(mark[i][0]-att[5])/att[7]); - mark[i][1] = parseInt(yoffset+picHeight*(mark[i][1]-att[6])/att[8]); - - - document.getElementById("dot" + i).style.left = mark[i][0]-5; - document.getElementById("dot" + i).style.top = mark[i][1]-5; - document.getElementById("dot" + i).style.visibility = "visible"; - } - } - } else { - setTimeout("setMarks()", 100); - } - } -} - -// capturing keypresses for next and previous page -// ascii-values of n = 110, b = 98 -function parseKeypress (event) { - - if (String.fromCharCode(event.which) == "n") { - nextPage(); - } - - // does not work currently, because Opera catches this key on it's own - // have to change the key or find another way - luginbuehl - if (String.fromCharCode(event.which) == "b") { - backPage(); - } -} - - -// auxiliary function to crop senseless precicsion -function cropFloat(tmp) { - return parseInt(10000*tmp)/10000; -}