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