annotate client/digitallibrary/baselib.js @ 636:687447a0e799 jquery

zoomin and -out works now gotopage resets (some) parameters reload takes changed parameters (to put in url) getParamString omits parameters with default values (for shorter urls)
author robcast
date Wed, 19 Jan 2011 20:03:44 +0100
parents a9d7a406d85e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
1 /* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
2
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
3 This program is free software; you can redistribute it and/or
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
4 modify it under the terms of the GNU General Public License
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
5 as published by the Free Software Foundation; either version 2
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
6 of the License, or (at your option) any later version.
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
7
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
8 This program is distributed in the hope that it will be useful,
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
11 GNU General Public License for more details.
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
12
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
13 You should have received a copy of the GNU General Public License
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
14 along with this program; if not, write to the Free Software
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
16
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
17 Authors:
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
18 Christian Luginbuehl, 01.05.2003 (first version)
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
19 DW 24.03.2004 (Changed for digiLib in Zope)
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
20 Robert Casties, 22.1.2008
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
21
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
22 */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
23
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
24 function base_init() {
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
25 // init function
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
26 baseScriptVersion = "1.2.4";
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
27 dlParams = new Object();
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
28 browserType = getBrowserType();
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
29 }
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
30
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
31
237
1760c5dd9424 *** empty log message ***
robcast
parents: 233
diff changeset
32 function getInt(n) {
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
33 // returns always an integer
237
1760c5dd9424 *** empty log message ***
robcast
parents: 233
diff changeset
34 n = parseInt(n);
1760c5dd9424 *** empty log message ***
robcast
parents: 233
diff changeset
35 if (isNaN(n)) return 0;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
36 return n;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
37 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
38
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
39 function defined(x) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
40 // returns if x is defined
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
41 return (typeof arguments[0] != "undefined");
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
42 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
43
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
44 function cropFloat(x) {
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
45 // auxiliary function to crop senseless precision
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
46 return parseInt(10000*x)/10000;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
47 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
48
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
49 function getBrowserType() {
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
50 // browser sniffer
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
51 var bt = Object();
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
52 bt.doDHTML = false;
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
53 bt.versIE = 0;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
54
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
55 if ((! document.cssonly && document.layers) || document.all || document.getElementById) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
56 var vers = navigator.appVersion.split('MSIE ');
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
57 vers = vers[vers.length - 1];
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
58 bt.versIE = getInt(vers);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
59 bt.isIE = navigator.userAgent.indexOf('MSIE') >= 0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
60 bt.isMac = navigator.platform.indexOf('Mac') >= 0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
61 bt.isWin = navigator.platform.indexOf('Win') >= 0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
62 bt.isN4 = (navigator.userAgent.indexOf('Mozilla/4.') >= 0) && ! bt.isIE;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
63 bt.isIEWin = bt.versIE > 0 && bt.isWin;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
64 if (navigator.appVersion.indexOf('MSIE') < 0 || ! bt.isMac || bt.versIE >= 5) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
65 bt.doDHTML = true;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
66 bt.isOpera = navigator.userAgent.indexOf(' Opera ') >= 0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
67 bt.isKonq = navigator.userAgent.indexOf(' Konqueror') >= 0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
68 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
69 }
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
70 return bt;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
71 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
72
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
73 // fixes for javascript < 1.2
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
74 if (! Array.prototype.push) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
75 Array.prototype.push = function(val) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
76 this[this.length] = val;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
77 return this.length;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
78 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
79 Array.prototype.pop = function() {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
80 var val = this[this.length-1];
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
81 this.length -= 1;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
82 return val;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
83 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
84 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
85
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
86
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
87 /* **********************************************
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
88 * geometry classes
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
89 * ******************************************** */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
90
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
91 /*
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
92 * Size class
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
93 */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
94 function Size(w, h) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
95 this.width = parseFloat(w);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
96 this.height = parseFloat(h);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
97 return this;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
98 }
316
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
99 Size.prototype.toString = function() {
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
100 return this.width + "x" + this.height;
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
101 }
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
102
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
103
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
104 /*
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
105 * Position class
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
106 */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
107 function Position(x, y) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
108 this.x = parseFloat(x);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
109 this.y = parseFloat(y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
110 return this;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
111 }
316
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
112 Position.prototype.toString = function() {
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
113 return this.x + "," + this.y;
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
114 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
115
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
116 /*
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
117 * Rectangle class
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
118 */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
119 function Rectangle(x, y, w, h) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
120 this.x = parseFloat(x);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
121 this.y = parseFloat(y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
122 this.width = parseFloat(w);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
123 this.height = parseFloat(h);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
124 return this;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
125 }
316
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
126 Rectangle.prototype.toString = function() {
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
127 return this.width+"x"+this.height+"@"+this.x+","+this.y;
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
128 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
129 Rectangle.prototype.copy = function() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
130 // returns a copy of this Rectangle
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
131 return new Rectangle(this.x, this.y, this.width, this.height);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
132 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
133 Rectangle.prototype.getPosition = function() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
134 // returns the position of this Rectangle
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
135 return new Position(this.x, this.y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
136 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
137 Rectangle.prototype.getSize = function() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
138 // returns the size of this Rectangle
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
139 return new Size(this.width, this.height);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
140 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
141 Rectangle.prototype.getArea = function() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
142 // returns the area of this Rectangle
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
143 return (this.width * this.height);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
144 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
145 Rectangle.prototype.containsPosition = function(pos) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
146 // returns if the given Position lies in this Rectangle
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
147 return ((pos.x >= this.x)&&(pos.y >= this.y)&&(pos.x <= this.x+this.width)&&(pos.y <= this.y+this.width));
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
148 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
149 Rectangle.prototype.intersect = function(rect) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
150 // returns the intersection of the given Rectangle and this one
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
151 var sec = rect.copy();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
152 if (sec.x < this.x) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
153 sec.width = sec.width - (this.x - sec.x);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
154 sec.x = this.x;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
155 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
156 if (sec.y < this.y) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
157 sec.height = sec.height - (this.y - sec.y);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
158 sec.y = this.y;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
159 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
160 if (sec.x + sec.width > this.x + this.width) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
161 sec.width = (this.x + this.width) - sec.x;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
162 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
163 if (sec.y + sec.height > this.y + this.height) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
164 sec.height = (this.y + this.height) - sec.y;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
165 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
166 return sec;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
167 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
168 Rectangle.prototype.fit = function(rect) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
169 // returns a Rectangle that fits into this one (by moving first)
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
170 var sec = rect.copy();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
171 sec.x = Math.max(sec.x, this.x);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
172 sec.x = Math.max(sec.x, this.x);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
173 if (sec.x + sec.width > this.x + this.width) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
174 sec.x = this.x + this.width - sec.width;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
175 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
176 if (sec.y + sec.height > this.y + this.height) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
177 sec.y = this.y + this.height - sec.height;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
178 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
179 return sec.intersect(this);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
180 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
181
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
182 /*
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
183 * Transform class
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
184 *
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
185 * defines a class of affine transformations
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
186 */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
187 function Transform() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
188 this.m00 = 1.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
189 this.m01 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
190 this.m02 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
191 this.m10 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
192 this.m11 = 1.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
193 this.m12 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
194 this.m20 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
195 this.m21 = 0.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
196 this.m22 = 1.0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
197 return this;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
198 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
199 Transform.prototype.concat = function(traf) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
200 // add Transform traf to this Transform
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
201 for (var i = 0; i < 3; i++) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
202 for (var j = 0; j < 3; j++) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
203 var c = 0.0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
204 for (var k = 0; k < 3; k++) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
205 c += traf["m"+i+k] * this["m"+k+j];
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
206 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
207 this["m"+i+j] = c;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
208 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
209 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
210 return this;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
211 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
212 Transform.prototype.transform = function(rect) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
213 // returns transformed Rectangle or Position with this Transform applied
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
214 var x = this.m00 * rect.x + this.m01 * rect.y + this.m02;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
215 var y = this.m10 * rect.x + this.m11 * rect.y + this.m12;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
216 if (rect.width) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
217 var width = this.m00 * rect.width + this.m01 * rect.height;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
218 var height = this.m10 * rect.width + this.m11 * rect.height;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
219 return new Rectangle(x, y, width, height);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
220 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
221 return new Position(x, y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
222 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
223 Transform.prototype.invtransform = function(pos) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
224 // returns transformed Position pos with the inverse of this Transform applied
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
225 var det = this.m00 * this.m11 - this.m01 * this.m10;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
226 var x = (this.m11 * pos.x - this.m01 * pos.y - this.m11 * this.m02 + this.m01 * this.m12) / det;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
227 var y = (- this.m10 * pos.x + this.m00 * pos.y + this.m10 * this.m02 - this.m00 * this.m12) / det;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
228 return new Position(x, y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
229 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
230 function getRotation(angle, pos) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
231 // returns a Transform that is a rotation by angle degrees around [pos.x, pos.y]
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
232 var traf = new Transform();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
233 if (angle != 0) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
234 var t = 2.0 * Math.PI * parseFloat(angle) / 360.0;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
235 traf.m00 = Math.cos(t);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
236 traf.m01 = - Math.sin(t);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
237 traf.m10 = Math.sin(t);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
238 traf.m11 = Math.cos(t);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
239 traf.m02 = pos.x - pos.x * Math.cos(t) + pos.y * Math.sin(t);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
240 traf.m12 = pos.y - pos.x * Math.sin(t) - pos.y * Math.cos(t);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
241 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
242 return traf;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
243 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
244 function getTranslation(pos) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
245 // returns a Transform that is a translation by [pos.x, pos,y]
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
246 var traf = new Transform();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
247 traf.m02 = pos.x;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
248 traf.m12 = pos.y;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
249 return traf;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
250 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
251 function getScale(size) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
252 // returns a Transform that is a scale by [size.width, size.height]
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
253 var traf = new Transform();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
254 traf.m00 = size.width;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
255 traf.m11 = size.height;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
256 return traf;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
257 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
258
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
259
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
260 /* **********************************************
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
261 * parameter routines
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
262 * ******************************************** */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
263
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
264 function newParameter(name, defaultValue, detail) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
265 // create a new parameter with a name and a default value
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
266 if (defined(dlParams[name])) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
267 alert("Fatal: An object with name '" + name + "' already exists - cannot recreate!");
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
268 return false;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
269 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
270 dlParams[name] = new Object();
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
271 dlParams[name].defaultValue = defaultValue;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
272 dlParams[name].hasValue = false;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
273 dlParams[name].value = defaultValue;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
274 dlParams[name].detail = detail;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
275 return dlParams[name];
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
276 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
277 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
278
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
279 function getParameter(name) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
280 // returns the named parameter value or its default value
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
281 if (defined(dlParams[name])) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
282 if (dlParams[name].hasValue) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
283 return dlParams[name].value;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
284 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
285 return dlParams[name].defaultValue;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
286 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
287 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
288 return null;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
289 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
290 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
291
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
292 function setParameter(name, value, relative) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
293 // sets parameter value (relative values with +/- unless literal)
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
294 if (defined(dlParams[name])) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
295 if ((relative)&&(value.slice)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
296 var sign = value.slice(0,1);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
297 if (sign == '+') {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
298 dlParams[name].value = parseFloat(dlParams[name].value) + parseFloat(value.slice(1));
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
299 } else if (sign == '-') {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
300 dlParams[name].value = parseFloat(dlParams[name].value) - parseFloat(value.slice(1));
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
301 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
302 dlParams[name].value = value;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
303 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
304 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
305 dlParams[name].value = value;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
306 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
307 dlParams[name].hasValue = true;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
308 return true;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
309 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
310 return false;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
311 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
312
316
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
313 function hasParameter(name) {
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
314 // returns if the parameter's value has been set
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
315 if (defined(dlParams[name])) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
316 return dlParams[name].hasValue;
316
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
317 }
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
318 return false;
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
319 }
0b73a5b25b3f fixed bug with detecting window size in Safari 1.2
robcast
parents: 311
diff changeset
320
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
321 function getAllParameters(detail) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
322 // returns a string of all parameters in query format
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
323 if (! detail) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
324 detail = 255;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
325 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
326 var params = new Array();
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
327 for (param in dlParams) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
328 if (((dlParams[param].detail & detail) > 0)&&(dlParams[param].hasValue)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
329 var val = getParameter(param);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
330 if (val != "") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
331 params.push(param + "=" + val);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
332 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
333 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
334 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
335 return params.join("&");
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
336 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
337
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
338 function parseParameters(query) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
339 // gets parameter values from query format string
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
340 var params = query.split("&");
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
341 for (var i = 0; i < params.length; i++) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
342 var keyval = params[i].split("=");
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
343 if (keyval.length == 2) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
344 setParameter(keyval[0], keyval[1]);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
345 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
346 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
347 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
348
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
349
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
350 /* **********************************************
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
351 * HTML/DOM routines
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
352 * ******************************************** */
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
353
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
354 function getElement(tagid, quiet) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
355 // returns the element object with the id tagid
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
356 var e;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
357 if (document.getElementById) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
358 e = document.getElementById(tagid);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
359 } else if (document.all) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
360 alert("document.all!");
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
361 e = document.all[tagid];
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
362 } else if (document.layers) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
363 e = document.layers[tagid];
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
364 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
365 if (e) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
366 return e;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
367 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
368 if (! quiet) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
369 alert("unable to find element: "+tagid);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
370 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
371 return null;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
372 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
373 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
374
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
375 function getElementPosition(elem) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
376 // returns a Position with the position of the element
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
377 var x = 0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
378 var y = 0;
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
379 if (defined(elem.offsetParent)) {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
380 // use .offsetLeft for most browsers
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
381 var e = elem;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
382 while (e) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
383 if (browserType.isIE) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
384 if (browserType.isMac) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
385 // IE for Mac extraspecial
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
386 if (e.offsetParent.tagName == "BODY") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
387 x += e.clientLeft;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
388 y += e.clientTop;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
389 break;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
390 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
391 } else {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
392 // special for IE
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
393 if ((e.tagName != "TABLE") && (e.tagName != "BODY")) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
394 x += e.clientLeft;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
395 y += e.clientTop;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
396 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
397 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
398 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
399 x += e.offsetLeft;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
400 y += e.offsetTop;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
401 e = e.offsetParent;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
402 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
403 } else if (defined(elem.x)) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
404 // use .x for other (which?)
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
405 x = elem.x;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
406 y = elem.y;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
407 } else if (defined(elem.pageX)) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
408 // use pageX for N4
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
409 x = elem.pageX;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
410 y = elem.pageY;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
411 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
412 alert("unable to get position of "+elem+" (id:"+elem.id+")");
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
413 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
414 return new Position(getInt(x), getInt(y));
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
415 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
416
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
417 function getElementSize(elem) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
418 // returns a Rectangle with the size of the element
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
419 var width = 0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
420 var height = 0;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
421 if (defined(elem.offsetWidth)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
422 width = elem.offsetWidth;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
423 height = elem.offsetHeight;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
424 } else if (defined(elem.width)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
425 width = elem.width;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
426 height = elem.height;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
427 } else if (defined(elem.clip.width)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
428 width = elem.clip.width;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
429 height = elem.clip.height;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
430 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
431 alert("unable to get size of "+elem+" (id:"+elem.id+")");
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
432 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
433 return new Size(getInt(width), getInt(height));
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
434 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
435
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
436 function getElementRect(elem) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
437 // returns a Rectangle with the size and position of the element
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
438 var pos = getElementPosition(elem);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
439 var size = getElementSize(elem);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
440 return new Rectangle(pos.x, pos.y, size.width, size.height);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
441 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
442
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
443 function moveElement(elem, rect) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
444 // moves and sizes the element
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
445 if (elem.style) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
446 if (defined(rect.x)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
447 elem.style.left = Math.round(rect.x) + "px";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
448 elem.style.top = Math.round(rect.y) + "px";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
449 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
450 if (defined(rect.width)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
451 elem.style.width = Math.round(rect.width) + "px";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
452 elem.style.height = Math.round(rect.height) + "px";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
453 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
454 } else if (document.layers) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
455 if (defined(rect.x)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
456 elem.pageX = getInt(rect.x);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
457 elem.pageY = getInt(rect.y);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
458 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
459 if (defined(rect.width)) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
460 elem.clip.width = getInt(rect.width);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
461 elem.clip.height = getInt(rect.height);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
462 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
463 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
464 alert("moveelement: no style nor layer property!");
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
465 return false;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
466 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
467 return true;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
468 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
469
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
470 function showElement(elem, show) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
471 // shows or hides the element
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
472 if (elem.style) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
473 if (show) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
474 elem.style.visibility = "visible";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
475 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
476 elem.style.visibility = "hidden";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
477 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
478 } else if (defined(elem.visibility)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
479 if (show) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
480 elem.visibility = "show";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
481 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
482 elem.visibility = "hide";
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
483 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
484 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
485 alert("showelement: no style nor layer property!");
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
486 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
487 return true;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
488 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
489
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
490 function isElementVisible(elem) {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
491 // returns of the is shown or hidden
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
492 if (elem.style) {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
493 return (elem.style.visibility == "visible");
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
494 } else if (defined(elem.visibility)) {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
495 return (elem.visibility == "show");
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
496 } else {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
497 alert("iselementvisible: no style nor layer property!");
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
498 }
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
499 }
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
500
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
501 function evtPosition(evt) {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
502 // returns the on-screen Position of the Event
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
503 var x;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
504 var y;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
505 evt = (evt) ? evt : window.event;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
506 if (!evt) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
507 alert("no event found! "+evt);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
508 return;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
509 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
510 if (defined(evt.pageX)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
511 x = parseInt(evt.pageX);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
512 y = parseInt(evt.pageY);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
513 } else if (defined(evt.clientX)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
514 x = parseInt(document.body.scrollLeft+evt.clientX);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
515 y = parseInt(document.body.scrollTop+evt.clientY);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
516 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
517 alert("evtPosition: don't know how to deal with "+evt);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
518 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
519 return new Position(x, y);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
520 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
521
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
522 function registerEvent(type, elem, handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
523 // register the given event handler on the indicated element
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
524 if (elem.addEventListener) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
525 elem.addEventListener(type, handler, false);
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
526 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
527 if (type == "mousedown") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
528 if (elem.captureEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
529 elem.captureEvents(Event.MOUSEDOWN);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
530 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
531 elem.onmousedown = handler;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
532 } else if (type == "mouseup") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
533 if (elem.captureEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
534 elem.captureEvents(Event.MOUSEUP);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
535 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
536 elem.onmouseup = handler;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
537 } else if (type == "mousemove") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
538 if (elem.captureEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
539 elem.captureEvents(Event.MOUSEMOVE);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
540 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
541 elem.onmousemove = handler;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
542 } else if (type == "keypress") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
543 if (elem.captureEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
544 elem.captureEvents(Event.KEYPRESS);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
545 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
546 elem.onkeypress = handler;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
547 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
548 alert("registerEvent: unknown event type "+type);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
549 return false;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
550 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
551 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
552 return true;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
553 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
554
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
555 function unregisterEvent(type, elem, handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
556 // unregister the given event handler from the indicated element
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
557 if (elem.removeEventListener) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
558 elem.removeEventListener(type, handler, false);
324
a6dc20bae2fd fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 316
diff changeset
559 } else {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
560 if (type == "mousedown") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
561 if (elem.releaseEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
562 elem.releaseEvents(Event.MOUSEDOWN);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
563 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
564 elem.onmousedown = null;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
565 } else if (type == "mouseup") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
566 if (elem.releaseEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
567 elem.releaseEvents(Event.MOUSEUP);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
568 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
569 elem.onmouseup = null;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
570 } else if (type == "mousemove") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
571 if (elem.releaseEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
572 elem.releaseEvents(Event.MOUSEMOVE);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
573 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
574 elem.onmousemove = null;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
575 } else if (type == "keypress") {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
576 if (elem.releaseEvents) {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
577 elem.releaseEvents(Event.KEYPRESS);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
578 }
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
579 elem.onkeypress = null;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
580 } else {
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
581 alert("unregisterEvent: unknown event type "+type);
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
582 return false;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
583 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
584 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
585 return true;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
586 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
587
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
588
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
589 // old registerXXYY API for compatibility
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
590 function registerMouseDown(elem, handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
591 return registerEvent("mousedown", elem, handler);
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
592 }
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
593 function unregisterMouseDown(elem, handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
594 return unregisterEvent("mousedown", elem, handler);
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
595 }
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
596 function registerMouseMove(elem, handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
597 return registerEvent("mousemove", elem, handler);
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
598 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
599 function unregisterMouseMove(elem, handler) {
238
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
600 return unregisterEvent("mousemove", elem, handler);
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
601 }
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
602 function registerKeyDown(handler) {
20c43a06076a new digimage with red triangles for moving the zoomed area
robcast
parents: 237
diff changeset
603 return registerEvent("keypress", elem, handler);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
604 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
605
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
606
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
607 function getWinSize() {
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
608 // returns a Size with the current window size (mostly from www.quirksmode.org)
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
609 var wsize = new Size(100, 100);
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
610 if (defined(self.innerHeight)) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
611 // all except Explorer
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
612 if ((self.innerWidth == 0)||(self.innerHeight == 0)) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
613 // Safari 1.2 (and other) bug
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
614 if (parent) {
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
615 wsize.height = parent.innerHeight;
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
616 wsize.width = parent.innerWidth;
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
617 }
489
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
618 } else {
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
619 wsize.width = self.innerWidth;
a9d7a406d85e fixed problem with getwindowsize for safari 3.0.4+
robcast
parents: 382
diff changeset
620 wsize.height = self.innerHeight;
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
621 }
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
622 } else if (document.documentElement && document.documentElement.clientHeight) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
623 // Explorer 6 Strict Mode
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
624 wsize.width = document.documentElement.clientWidth;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
625 wsize.height = document.documentElement.clientHeight;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
626 } else if (document.body) {
382
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
627 // other Explorers
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
628 wsize.width = document.body.clientWidth;
ef1519f9cf42 latest version of baselib.js and dllib.js
robcast
parents: 340
diff changeset
629 wsize.height = document.body.clientHeight;
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
630 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
631 return wsize;
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
632 }
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
633
311
58d9cbdfb0c9 big autumn cleaning :-)
robcast
parents: 245
diff changeset
634 function openWin(url, name, params) {
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
635 // open browser window
311
58d9cbdfb0c9 big autumn cleaning :-)
robcast
parents: 245
diff changeset
636 var ow = window.open(url, name, params);
233
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
637 ow.focus();
2ef02ca79079 new javascript code for digilib
robcast
parents:
diff changeset
638 }