Diff for /zogiLib/js/dllib.js between versions 1.3 and 1.10

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));
   }

Removed from v.1.3  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>