annotate client/digitallibrary/jquery/jquery.digilib.js @ 643:c108607e1bc0 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 8f40f7b6fd20
children ee8ccd84c5f8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
1 /*
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
2 * digilib jQuery plugin
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
3 *
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
4 */
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
5
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
6 // fallback for console.log calls
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
7 if (typeof(console) === 'undefined') {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
8 var console = {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
9 log : function(){},
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
10 debug : function(){},
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
11 error : function(){}
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
12 };
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
13 }
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
14
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
15 (function($) {
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
16 var actions = {
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
17 reference : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
18 onclick : "javascript:getRefWin()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
19 tooltip : "get a reference URL",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
20 img : "reference.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
21 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
22 zoomin : {
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
23 onclick : ["zoomBy", 1.4],
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
24 tooltip : "zoom in",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
25 img : "zoom-in.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
26 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
27 zoomout : {
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
28 onclick : ["zoomBy", 0.7],
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
29 tooltip : "zoom out",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
30 img : "zoom-out.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
31 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
32 zoomarea : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
33 onclick : "javascript:zoomArea()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
34 tooltip : "zoom area",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
35 img : "zoom-area.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
36 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
37 zoomfull : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
38 onclick : "javascript:zoomFullpage()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
39 tooltip : "view the whole image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
40 img : "zoom-full.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
41 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
42 pagewidth : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
43 onclick : "javascript:zoomFullpage('width')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
44 tooltip : "page width",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
45 img : "pagewidth.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
46 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
47 back : {
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
48 onclick : ["gotoPage", "-1"],
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
49 tooltip : "goto previous image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
50 img : "back.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
51 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
52 fwd : {
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
53 onclick : ["gotoPage", "+1"],
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
54 tooltip : "goto next image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
55 img : "fwd.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
56 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
57 page : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
58 onclick : "javascript:gotoPageWin()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
59 tooltip : "specify image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
60 img : "page.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
61 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
62 bird : {
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
63 onclick : "showBirdDiv",
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
64 tooltip : "show bird's eye view",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
65 img : "birds-eye.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
66 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
67 help : {
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
68 onclick : "showAboutDiv",
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
69 tooltip : "about Digilib",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
70 img : "help.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
71 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
72 reset : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
73 onclick : "javascript:resetImage()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
74 tooltip : "reset image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
75 img : "reset.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
76 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
77 mark : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
78 onclick : "javascript:setMark()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
79 tooltip : "set a mark",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
80 img : "mark.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
81 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
82 delmark : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
83 onclick : "javascript:removeMark()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
84 tooltip : "delete the last mark",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
85 img : "delmark.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
86 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
87 hmir : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
88 onclick : "javascript:mirror('h')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
89 tooltip : "mirror horizontally",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
90 img : "mirror-horizontal.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
91 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
92 vmir : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
93 onclick : "javascript:mirror('v')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
94 tooltip : "mirror vertically",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
95 img : "mirror-vertical.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
96 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
97 rot : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
98 onclick : "javascript:setParamWin('rot', 'Rotate (0..360) clockwise')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
99 tooltip : "rotate image",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
100 img : "rotate.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
101 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
102 brgt : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
103 onclick : "javascript:setParamWin('brgt', 'Brightness (-255..255)')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
104 tooltip : "set brightness",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
105 img : "brightness.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
106 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
107 cont : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
108 onclick : "javascript:setParamWin('cont', 'Contrast (0..8)')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
109 tooltip : "set contrast",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
110 img : "contrast.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
111 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
112 rgb : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
113 onclick : "javascript:setParamWin('rgb', '...')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
114 tooltip : "set rgb values",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
115 img : "rgb.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
116 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
117 quality : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
118 onclick : "javascript:setQualityWin('Quality (0..2)')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
119 tooltip : "set image quality",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
120 img : "quality.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
121 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
122 size : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
123 onclick : "javascript:toggleSizeMenu()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
124 tooltip : "set page size",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
125 img : "size.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
126 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
127 calibrationx : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
128 onclick : "javascript:calibrate('x')",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
129 tooltip : "calibrate screen x-ratio",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
130 img : "calibration-x.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
131 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
132 scale : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
133 onclick : "javascript:toggleScaleMenu()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
134 tooltip : "change image scale",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
135 img : "original-size.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
136 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
137 options : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
138 onclick : "javascript:toggleOptionDiv()",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
139 tooltip : "hide options",
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
140 img : "options.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
141 },
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
142 SEP : {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
143 img : "sep.png"
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
144 }
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
145 };
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
146
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
147 var defaults = {
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
148 // the root digilib element, for easy retrieval
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
149 'digilibRoot' : null,
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
150 // version of this script
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
151 'version' : 'jquery.digilib.js 0.9',
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
152 // logo url
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
153 'logoUrl' : '../img/digilib-logo-text1.png',
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
154 // homepage url (behind logo)
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
155 'homeUrl' : 'http://digilib.berlios.de',
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
156 // base URL to Scaler servlet
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
157 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler',
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
158 // list of Scaler parameters
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
159 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo',
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
160 'rot','cont','brgt','rgbm','rgba','ddpi','ddpix','ddpiy'],
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
161 // Scaler parameter defaults
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
162 'pn' : 1,
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
163 'ww' : 1.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
164 'wh' : 1.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
165 'wx' : 0.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
166 'wy' : 0.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
167 'ws' : 1.0,
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
168 'mo' : '',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
169 'rot' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
170 'cont' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
171 'brgt' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
172 'rgbm' : '0/0/0',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
173 'rgba' : '0/0/0',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
174 'ddpi' : null,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
175 'ddpix' : null,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
176 'ddpiy' : null,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
177 // digilib defaults
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
178 'mk' : '',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
179 // mode of operation:
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
180 // fullscreen = take parameters from page URL, keep state in page URL
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
181 // embedded = take parameters from Javascript options, keep state inside object
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
182 'interactionMode' : 'fullscreen',
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
183 // actions
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
184 'actions' : actions,
612
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
185 // path to button images (must end with a slash)
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
186 'buttonsImagePath' : '../greyskin/',
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
187 // actions groups
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
188 'actionsStandard' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","back","fwd","page","bird","SEP","help","reset","options"],
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
189 'actionsSpecial' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","SEP","options"],
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
190 'actionsCustom' : [],
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
191 // is birdView shown?
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
192 'isBirdDivVisible' : false,
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
193 // dimensions of bird's eye window
639
7a91bf50a728 setupBirdDiv called early if enabled in options
robcast
parents: 638
diff changeset
194 'birdDivOptions' : {'dw' : 200, 'dh' : 200},
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
195 // is the "about" window shown?
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
196 'isAboutDivVisible' : false
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
197
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
198 };
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
199
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
200 // affine geometry classes
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
201 var geom = dlGeometry();
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
202
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
203 var MAX_ZOOMAREA = geom.rectangle(0, 0, 1, 1);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
204
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
205 var methods = {
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
206 // digilib initialization
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
207 init : function(options) {
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
208 // settings for this digilib instance are merged from defaults and options
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
209 var settings = $.extend({}, defaults, options);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
210 var isFullscreen = settings.interactionMode === 'fullscreen';
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
211 var queryParams = {};
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
212 if (isFullscreen) {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
213 queryParams = parseQueryParams();
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
214 }
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
215 return this.each(function() {
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
216 var $elem = $(this);
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
217 var data = $elem.data('digilib');
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
218 var elemSettings;
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
219 // if the plugin hasn't been initialized yet
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
220 if (!data) {
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
221 // merge query parameters
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
222 if (isFullscreen) {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
223 elemSettings = $.extend({}, settings, queryParams);
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
224 } else {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
225 elemSettings = $.extend({}, settings, parseImgParams($elem));
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
226 }
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
227 // store $(this) element in the settings
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
228 elemSettings.digilibRoot = $elem;
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
229 data = {
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
230 target : $elem,
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
231 settings : elemSettings,
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
232 queryParams : queryParams
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
233 };
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
234 // store in data element
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
235 $elem.data('digilib', data);
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
236 }
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
237 unpackParams(data);
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
238 // create HTML structure
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
239 setupScalerDiv(data);
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
240 setupButtons(data, 'actionsStandard');
639
7a91bf50a728 setupBirdDiv called early if enabled in options
robcast
parents: 638
diff changeset
241 // bird's eye view creation
7a91bf50a728 setupBirdDiv called early if enabled in options
robcast
parents: 638
diff changeset
242 if (settings.isBirdDivVisible) {
641
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
243 setupBirdDiv(data);
639
7a91bf50a728 setupBirdDiv called early if enabled in options
robcast
parents: 638
diff changeset
244 }
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
245 // about window creation - TODO: could be deferred? restrict to only one item?
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
246 setupAboutDiv(data);
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
247 });
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
248 },
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
249
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
250 // clean up digilib
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
251 destroy : function() {
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
252 return this.each(function(){
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
253 var $elem = $(this);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
254 var data = $elem.data('digilib');
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
255 // Namespacing FTW
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
256 $(window).unbind('.digilib'); // unbinds all digilibs(?)
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
257 data.digilib.remove();
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
258 $elem.removeData('digilib');
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
259 });
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
260 },
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
261
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
262 // show or hide the 'about' window
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
263 showAboutDiv : function(show) {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
264 var $elem = $(this);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
265 var data = $elem.data('digilib');
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
266 data.settings.isAboutDivVisible = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show);
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
267 },
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
268
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
269 // event handler: toggles the visibility of the bird's eye window
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
270 showBirdDiv : function (show) {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
271 var $elem = $(this);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
272 var data = $elem.data('digilib');
638
830bf803d9f0 setupBirdDiv deferred until used
robcast
parents: 637
diff changeset
273 if (data.$birdDiv == null) {
830bf803d9f0 setupBirdDiv deferred until used
robcast
parents: 637
diff changeset
274 // no bird div -> create
830bf803d9f0 setupBirdDiv deferred until used
robcast
parents: 637
diff changeset
275 setupBirdDiv(data);
830bf803d9f0 setupBirdDiv deferred until used
robcast
parents: 637
diff changeset
276 }
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
277 data.settings.isBirdDivVisible = showDiv(data.settings.isBirdDivVisible, data.$birdDiv, show);
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
278 },
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
279
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
280 // goto given page nr (+/-: relative)
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
281 gotoPage : function (pageNr) {
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
282 var $elem = $(this);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
283 var data = $elem.data('digilib');
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
284 var settings = data.settings;
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
285 var oldpn = settings.pn;
624
7d13b7e5140e small retouches
hertzhaft
parents: 623
diff changeset
286 var pn = setNumValue(settings, "pn", pageNr);
7d13b7e5140e small retouches
hertzhaft
parents: 623
diff changeset
287 if (pn == null) return false; // nothing happened
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
288 if (pn < 1) {
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
289 alert("no such page (page number too low)");
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
290 settings.pn = oldpn;
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
291 return false;
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
292 }
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
293 if (settings.pt) {
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
294 if (pn > settings.pt) {
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
295 alert("no such page (page number too high)");
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
296 settings.pn = oldpn;
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
297 return false;
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
298 }
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
299 }
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
300 // add pn to param list and reset mk and others(?)
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
301 data.marks = [];
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
302 data.zoomArea = MAX_ZOOMAREA;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
303 // then reload
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
304 redisplay(data, ['pn']);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
305 },
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
306
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
307 // zoom by a given factor
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
308 zoomBy : function (factor) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
309 var $elem = $(this);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
310 var data = $elem.data('digilib');
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
311 zoomBy(data, factor);
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
312 }
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
313 };
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
314
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
315 // sets a key to a value (relative values with +/- if relative=true)
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
316 var setNumValue = function(settings, key, value) {
641
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
317 if (isNumber(value)) return settings[key] = value;
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
318 var sign = value.substring(0,1);
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
319 if (sign === '+' || sign === '-') {
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
320 if (settings[key] == null) {
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
321 // this doesn't make much sense but still...
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
322 settings[key] = 0;
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
323 }
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
324 settings[key] = parseFloat(settings[key]) + parseFloat(value);
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
325 } else {
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
326 settings[key] = value;
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
327 }
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
328 return settings[key];
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
329 };
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
330
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
331 // returns parameters from page url
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
332 var parseQueryParams = function() {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
333 return parseQueryString(window.location.search.slice(1));
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
334 };
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
335
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
336 // returns parameters from embedded img-element
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
337 var parseImgParams = function($elem) {
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
338 var src = $elem.find('img').first().attr('src');
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
339 if (!src) {
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
340 return null;
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
341 }
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
342 var pos = src.indexOf('?');
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
343 var query = (pos < 0) ? '' : src.substring(pos + 1);
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
344 var scalerUrl = src.substring(0, pos);
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
345 var params = parseQueryString(query);
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
346 params.scalerBaseUrl = scalerUrl;
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
347 return params;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
348 };
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
349
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
350 // parses query parameter string into parameter object
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
351 var parseQueryString = function(query) {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
352 var pairs = query.split("&");
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
353 var params = {};
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
354 //var keys = [];
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
355 for (var i = 0; i < pairs.length; i++) {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
356 var pair = pairs[i].split("=");
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
357 if (pair.length === 2) {
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
358 params[pair[0]] = pair[1];
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
359 //keys.push(pair[0]);
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
360 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
361 }
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
362 return params;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
363 };
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
364
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
365 // returns a query string from key names from a parameter hash (ignoring if the same value is in defaults)
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
366 var getParamString = function (settings, keys, defaults) {
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
367 var paramString = '';
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
368 var latter = false;
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
369 for (i = 0; i < keys.length; ++i) {
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
370 var key = keys[i];
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
371 if ((settings[key] != null) && ((defaults == null) || (settings[key] !== defaults[key]))) {
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
372 // first param gets no '&'
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
373 paramString += latter ? '&' : '';
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
374 latter = true;
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
375 // add parm=val
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
376 paramString += key + '=' + settings[key];
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
377 }
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
378 }
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
379 return paramString;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
380 };
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
381
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
382 // returns URL and query string for Scaler
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
383 var getScalerUrl = function (data) {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
384 var settings = data.settings;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
385 var keys = settings.scalerParamNames;
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
386 var queryString = getParamString(settings, keys, defaults);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
387 var url = settings.scalerBaseUrl + '?' + queryString;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
388 return url;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
389 };
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
390
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
391 // returns URL and query string for current digilib
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
392 var getDigilibUrl = function (data, changedParams) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
393 packParams(data);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
394 var settings = data.settings;
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
395 var queryParams = data.queryParams;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
396 // add changedParams
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
397 if (changedParams != null) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
398 for (var i=0; i < changedParams.length; ++i) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
399 var k = changedParams[i];
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
400 if (queryParams[k] == null) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
401 // add param (value doesn't matter)
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
402 queryParams[k] = k;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
403 }
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
404 }
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
405 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
406 // make list from queryParams keys
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
407 var keys = [];
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
408 for (var k in data.queryParams) {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
409 keys.push(k);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
410 }
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
411 var queryString = getParamString(settings, keys, defaults);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
412 var url = window.location.toString();
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
413 var pos = url.indexOf('?');
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
414 var baseUrl = url.substring(0, pos);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
415 var newurl = baseUrl + '?' + queryString;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
416 return newurl;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
417 };
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
418
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
419 // processes some parameters into objects and stuff
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
420 var unpackParams = function (data) {
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
421 var settings = data.settings;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
422 // zoom area
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
423 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh);
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
424 data.zoomArea = zoomArea;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
425 // marks
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
426 var marks = [];
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
427 var mk = settings.mk || '';
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
428 if (mk.indexOf(";") >= 0) {
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
429 var pa = mk.split(";"); // old format with ";"
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
430 } else {
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
431 var pa = mk.split(","); // new format
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
432 }
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
433 for (var i = 0; i < pa.length ; i++) {
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
434 var pos = pa[i].split("/");
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
435 if (pos.length > 1) {
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
436 marks.push(geom.position(pos[0], pos[1]));
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
437 }
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
438 }
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
439 data.marks = marks;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
440 };
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
441
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
442 // put objects back into parameters
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
443 var packParams = function (data) {
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
444 var settings = data.settings;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
445 // zoom area
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
446 if (data.zoomArea) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
447 settings.wx = data.zoomArea.x;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
448 settings.wy = data.zoomArea.y;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
449 settings.ww = data.zoomArea.width;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
450 settings.wh = data.zoomArea.height;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
451 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
452 // marks
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
453 if (data.marks) {
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
454 var ma = [];
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
455 for (var i = 0; i < data.marks.length; i++) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
456 ma.push(cropFloat(data.marks[i].x) + "/" + cropFloat(data.marks[i].y));
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
457 }
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
458 settings.mk = ma.join(",");
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
459 }
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
460 };
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
461
609
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
462 // returns maximum size for scaler img in fullscreen mode
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
463 var getFullscreenImgSize = function($elem) {
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
464 var winH = $(window).height();
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
465 var winW = $(window).width();
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
466 // TODO: account for borders?
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
467 return geom.size(winW, winH);
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
468 };
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
469
622
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
470 // (re)load the img from a new scaler URL
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
471 var redisplay = function (data, changedParams) {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
472 var settings = data.settings;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
473 if (settings.interactionMode === 'fullscreen') {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
474 // update location.href (browser URL) in fullscreen mode
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
475 var url = getDigilibUrl(data, changedParams);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
476 var history = window.history;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
477 if (typeof(history.pushState) === 'function') {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
478 console.debug("we could modify history, but we don't...");
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
479 }
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
480 window.location = url;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
481 } else {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
482 // embedded mode -- just change img src
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
483 var url = getScalerUrl(data);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
484 data.$img.attr('src', url);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
485 }
622
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
486 };
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
487
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
488 // creates HTML structure for digilib in elem
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
489 var setupScalerDiv = function (data) {
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
490 var settings = data.settings;
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
491 var $elem = data.target;
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
492 var $img;
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
493 if (settings.interactionMode === 'fullscreen') {
609
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
494 // fullscreen
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
495 var imgSize = getFullscreenImgSize($elem);
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
496 settings.dw = imgSize.width;
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
497 settings.dh = imgSize.height;
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
498 $img = $('<img/>');
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
499 var scalerUrl = getScalerUrl(data);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
500 $img.attr('src', scalerUrl);
609
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
501 } else {
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
502 // embedded mode -- try to keep img tag
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
503 $img = $elem.find('img');
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
504 if ($img.length > 0) {
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
505 console.debug("img detach:",$img);
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
506 $img.detach();
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
507 } else {
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
508 $img = $('<img/>');
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
509 var scalerUrl = getScalerUrl(data);
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
510 $img.attr('src', scalerUrl);
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
511 }
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
512 }
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
513 // create new html
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
514 $elem.empty(); // TODO: should we keep stuff for customization?
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
515 var $scaler = $('<div class="scaler"/>');
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
516 $elem.append($scaler);
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
517 $scaler.append($img);
622
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
518 $img.addClass('pic');
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
519 data.$img = $img;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
520 $img.load(scalerImgLoadedHandler(data));
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
521 };
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
522
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
523 // creates HTML structure for buttons in elem
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
524 var setupButtons = function (data, actionGroup) {
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
525 var $elem = data.target;
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
526 var settings = data.settings;
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
527 if (settings.interactionMode === 'fullscreen') {
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
528 // fullscreen -- create new
612
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
529 var $buttonsDiv = $('<div class="buttons"></div>');
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
530 $elem.append($buttonsDiv);
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
531 var actionNames = settings[actionGroup];
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
532 for (var i = 0; i < actionNames.length; i++) {
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
533 var actionName = actionNames[i];
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
534 var actionSettings = settings.actions[actionName];
612
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
535 // construct the button html
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
536 var $button = $('<div class="button"></div>');
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
537 var $a = $('<a/>');
614
0bd19b6cede4 highlight hovered buttons
hertzhaft
parents: 613
diff changeset
538 var $img = $('<img class="button"/>');
612
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
539 $buttonsDiv.append($button);
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
540 $button.append($a);
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
541 $a.append($img);
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
542 // add attributes and bindings
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
543 $button.attr('title', actionSettings.tooltip);
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
544 $button.addClass('button-' + actionName);
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
545 // create handler for the buttons
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
546 $a.bind('click', (function () {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
547 // we create a new closure to capture the value of method
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
548 var method = actionSettings.onclick;
619
a473998de5f8 'about' window has its own event handler
hertzhaft
parents: 618
diff changeset
549 if ($.isArray(method)) {
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
550 // the handler function calls digilib with method and parameters
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
551 return function () {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
552 console.debug('click method=', method);
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
553 $elem.digilib.apply($elem, method);
619
a473998de5f8 'about' window has its own event handler
hertzhaft
parents: 618
diff changeset
554 };
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
555 } else {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
556 // the handler function calls digilib with method
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
557 return function () {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
558 console.debug('click method=', method);
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
559 $elem.digilib(method);
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
560 };
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
561 }
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
562 })());
618
09167ef1512e some refactoring, onclick handlers now work with arguments
hertzhaft
parents: 617
diff changeset
563 $img.attr('src', settings.buttonsImagePath + actionSettings.img);
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
564 }
611
1b6202aba26e work on button creation
robcast
parents: 610
diff changeset
565 }
612
fb94f1b74d59 bind data and actions to buttons
hertzhaft
parents: 611
diff changeset
566 return $buttonsDiv;
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
567 };
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
568
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
569 // creates HTML structure for the bird's eye view in elem
638
830bf803d9f0 setupBirdDiv deferred until used
robcast
parents: 637
diff changeset
570 var setupBirdDiv = function (data) {
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
571 var $elem = data.target;
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
572 var settings = data.settings;
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
573 // use only the relevant parameters
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
574 var keys = ['fn','pn','dw','dh'];
639
7a91bf50a728 setupBirdDiv called early if enabled in options
robcast
parents: 638
diff changeset
575 var birdSettings = $.extend({}, settings, settings.birdDivOptions);
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
576 var birdUrl = settings.scalerBaseUrl + '?' + getParamString(birdSettings, keys);
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
577 // the bird's eye div
625
5f3564a21a9c small merge and fix
robcast
parents: 619 620
diff changeset
578 var $birdviewDiv = $('<div class="birdview" style="display:none"/>');
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
579 // the detail indicator frame
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
580 var $birdzoomDiv = $('<div class="birdzoom"/>');
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
581 // the small image
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
582 var $birdImg = $('<img class="birdimg"/>');
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
583 $elem.append($birdviewDiv);
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
584 $birdviewDiv.append($birdzoomDiv);
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
585 $birdviewDiv.append($birdImg);
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
586 $birdImg.attr('src', birdUrl);
640
fcb887110471 enabling bird's eye view in options now even works...
robcast
parents: 639
diff changeset
587 if (data.settings.isBirdDivVisible) {
fcb887110471 enabling bird's eye view in options now even works...
robcast
parents: 639
diff changeset
588 $birdviewDiv.fadeIn();
fcb887110471 enabling bird's eye view in options now even works...
robcast
parents: 639
diff changeset
589 }
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
590 data.$birdDiv = $birdviewDiv;
640
fcb887110471 enabling bird's eye view in options now even works...
robcast
parents: 639
diff changeset
591 };
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
592
625
5f3564a21a9c small merge and fix
robcast
parents: 619 620
diff changeset
593 // creates HTML structure for the about view in elem
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
594 var setupAboutDiv = function (data) {
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
595 var $elem = data.target;
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
596 var settings = data.settings;
625
5f3564a21a9c small merge and fix
robcast
parents: 619 620
diff changeset
597 var $aboutDiv = $('<div class="about" style="display:none"/>');
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
598 var $header = $('<p>Digilib Graphic Viewer</p>');
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
599 var $link = $('<a/>');
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
600 var $logo = $('<img class="logo" title="digilib"/>');
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
601 var $content = $('<p/>');
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
602 $elem.append($aboutDiv);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
603 $aboutDiv.append($header);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
604 $aboutDiv.append($link);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
605 $aboutDiv.append($content);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
606 $link.append($logo);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
607 $logo.attr('src', settings.logoUrl);
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
608 $link.attr('href', settings.homeUrl);
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
609 $content.text('Version: ' + settings.version);
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
610 // click hides
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
611 $aboutDiv.bind('click', function () { showDiv(settings.isAboutDivVisible, $aboutDiv, 0); });
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
612 data.$aboutDiv = $aboutDiv;
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
613 };
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
614
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
615 // shows some window e.g. 'about' (toggle visibility if show is null)
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
616 var showDiv = function (isVisible, $div, show) {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
617 if (typeof(show) !== 'number') {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
618 // toggle visibility
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
619 isVisible = !isVisible;
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
620 } else {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
621 // set visibility
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
622 isVisible = show;
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
623 }
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
624 if (isVisible) {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
625 $div.fadeIn();
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
626 } else {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
627 $div.fadeOut();
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
628 }
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
629 return isVisible;
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
630 };
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
631
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
632 // returns function for load event of scaler img
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
633 var scalerImgLoadedHandler = function (data) {
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
634 var settings = data.settings;
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
635 var $elem = data.target;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
636 var $img = data.$img;
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
637
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
638 return function () {
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
639 console.debug("img loaded! this=", this, " data=", data);
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
640 var area = data.zoomArea;
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
641 // create Transform from current area and picsize
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
642 var picpos = $img.offset();
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
643 var picrect = geom.rectangle(picpos.left, picpos.top, $img.width(), $img.height());
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
644 var trafo = geom.transform();
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
645 // subtract area offset and size
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
646 trafo.concat(trafo.getTranslation(geom.position(area.x, area.y)));
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
647 trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height)));
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
648 // scale to screen size
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
649 trafo.concat(trafo.getScale(picrect));
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
650 trafo.concat(trafo.getTranslation(picrect));
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
651 data.imgTrafo = trafo;
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
652 // display marks
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
653 renderMarks(data);
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
654 //digilib.showArrows(); // show arrow overlays for zoom navigation
641
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
655 // done -- hide about div ---
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
656 // --- why? This only leads to suprise effects when displayed programmatically
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
657 // settings.isAboutDivVisible = showDiv(null, data.$aboutDiv, 0);
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
658 };
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
659 };
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
660
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
661 // place marks on the image
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
662 var renderMarks = function (data) {
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
663 var $elem = data.target;
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
664 var marks = data.marks;
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
665 for (var i = 0; i < marks.length; i++) {
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
666 var mark = marks[i];
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
667 if (data.zoomArea.containsPosition(mark)) {
633
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
668 var mpos = data.imgTrafo.transform(mark);
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
669 // create mark
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
670 var html = '<div class="mark">'+(i+1)+'</div>';
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
671 var $mark = $(html);
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
672 $elem.append($mark);
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
673 $mark.offset({ left : mpos.x, top : mpos.y});
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
674 }
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
675 }
73357f3dec20 rendering marks works now
robcast
parents: 631
diff changeset
676 };
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
677
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
678 var zoomBy = function(data, factor) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
679 // zooms by the given factor
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
680 var area = data.zoomArea;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
681 var newarea = area.copy();
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
682 // scale
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
683 newarea.width /= factor;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
684 newarea.height /= factor;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
685 // and recenter
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
686 newarea.x -= 0.5 * (newarea.width - area.width);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
687 newarea.y -= 0.5 * (newarea.height - area.height);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
688 newarea = MAX_ZOOMAREA.fit(newarea);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
689 data.zoomArea = newarea;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
690 redisplay(data, ['wx', 'wy', 'ww', 'wh']);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
691 };
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
692
641
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
693 // auxiliary function (from Douglas Crockford, A.10)
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
694 var isNumber = function isNumber(value) {
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
695 return typeof value === 'number' && isFinite(value);
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
696 };
8f40f7b6fd20 some small aboutdiv fixes
hertzhaft
parents: 640
diff changeset
697
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
698 // auxiliary function to crop senseless precision
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
699 var cropFloat = function (x) {
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
700 return parseInt(10000 * x, 10) / 10000;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
701 };
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
702
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
703 // hook plugin into jquery
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
704 $.fn.digilib = function(method) {
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
705 if (methods[method]) {
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
706 // call method on this with the remaining arguments
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
707 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
708 } else if (typeof(method) === 'object' || !method) {
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
709 // call init on this
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
710 return methods.init.apply(this, arguments);
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
711 } else {
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
712 $.error( 'Method ' + method + ' does not exist on jQuery.digilib' );
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
713 }
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
714 };
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
715
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
716 })(jQuery);