html2slideshow 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/bin/html2slideshow +27 -0
  3. data/doc/changes.txt +162 -0
  4. data/doc/license.txt +674 -0
  5. data/lib/LANG +1 -0
  6. data/lib/about.rb +57 -0
  7. data/lib/argparser.rb +143 -0
  8. data/lib/completable.rb +157 -0
  9. data/lib/configurator.rb +155 -0
  10. data/lib/copyright.txt +22 -0
  11. data/lib/extstring.rb +75 -0
  12. data/lib/file_checking.rb +153 -0
  13. data/lib/html2slideshow.cfg +22 -0
  14. data/lib/html2slideshow.rb +132 -0
  15. data/lib/htmlbuilder.rb +267 -0
  16. data/lib/icons/failure.png +0 -0
  17. data/lib/icons/howto.png +0 -0
  18. data/lib/icons/logo.png +0 -0
  19. data/lib/icons/message.png +0 -0
  20. data/lib/icons/options.png +0 -0
  21. data/lib/icons/question.png +0 -0
  22. data/lib/icons/success.png +0 -0
  23. data/lib/image.rb +62 -0
  24. data/lib/list_fields.rb +34 -0
  25. data/lib/log.conf +60 -0
  26. data/lib/logging.rb +194 -0
  27. data/lib/slideshow_css.rb +248 -0
  28. data/lib/slideshow_images/downCursor.png +0 -0
  29. data/lib/slideshow_images/leftArrow.png +0 -0
  30. data/lib/slideshow_images/olive.png +0 -0
  31. data/lib/slideshow_images/pause.png +0 -0
  32. data/lib/slideshow_images/rightArrow.png +0 -0
  33. data/lib/slideshow_images/sizeMedium.png +0 -0
  34. data/lib/slideshow_images/sizeNormal.png +0 -0
  35. data/lib/slideshow_images/sizeSmall.png +0 -0
  36. data/lib/slideshow_images/start.png +0 -0
  37. data/lib/slideshow_images/stop.png +0 -0
  38. data/lib/slideshow_images/toggle.png +0 -0
  39. data/lib/slideshow_images/upCursor.png +0 -0
  40. data/lib/slideshow_js.rb +390 -0
  41. data/lib/slideshow_template.rb +194 -0
  42. data/lib/sourcefile.rb +191 -0
  43. data/lib/translating.rb +90 -0
  44. data/lib/translations +354 -0
  45. metadata +86 -0
@@ -0,0 +1,390 @@
1
+ #encoding: UTF-8
2
+
3
+ RD = File.expand_path(File.dirname(__FILE__) ) + File::SEPARATOR if !defined?(RD)
4
+ require RD + '/translating'
5
+
6
+ def jstrl(s)
7
+ Translating::trl(s)
8
+ end
9
+
10
+
11
+ $JAVASCRIPT = %~ var num = -1;
12
+ var current = num
13
+ var running = false;
14
+ var max = 0;
15
+ var pausing = false;
16
+
17
+ function addTime() {
18
+ var dtime = document.getElementById("displayTime").value;
19
+ if(dtime < 990) {
20
+ if(dtime < 10 ) {
21
+ document.getElementById('displayTime').value++;
22
+ }
23
+ else if(dtime < 30) {
24
+ document.getElementById('displayTime').value = parseInt(dtime) + 2 ;
25
+ }
26
+ else if (dtime < 60) {
27
+ document.getElementById('displayTime').value = parseInt(dtime) + 5;
28
+ }
29
+ else {
30
+ document.getElementById('displayTime').value = parseInt(dtime) + 10;
31
+ }
32
+ }
33
+ else {
34
+ blink("displayTime");
35
+ }
36
+ }
37
+
38
+ function reduceTime() {
39
+ var dtime = document.getElementById("displayTime").value;
40
+ if(dtime > 0) {
41
+ if(dtime > 60 ) {
42
+ document.getElementById('displayTime').value = parseInt(dtime) - 10;
43
+ }
44
+ else if(dtime > 30) {
45
+ document.getElementById('displayTime').value = parseInt(dtime) - 5;
46
+ }
47
+ else if (dtime > 10) {
48
+ document.getElementById('displayTime').value = parseInt(dtime) - 2 ;
49
+ }
50
+ else {
51
+ document.getElementById('displayTime').value--;
52
+ }
53
+ }
54
+ else {
55
+ blink("displayTime");
56
+ }
57
+ }
58
+
59
+ function pushButton(element, toggleIds) {
60
+ if(toggleIds) {
61
+ do {
62
+ var b = toggleIds.pop();
63
+ releaseButton(document.getElementById(b) );
64
+ }while(toggleIds.length > 0);
65
+ }
66
+ element.style.borderLeftColor="#0000a0";
67
+ element.style.borderTopColor="#0000a0";
68
+ element.style.borderRightColor="#d0d0d0";
69
+ element.style.borderBottomColor="#d0d0d0";
70
+ element.style.paddingTop="1px";
71
+ element.style.paddingBottom="0";
72
+ element.style.paddingLeft="5px";
73
+ element.style.paddingRight="3px";
74
+ element.style.marginRight="0";
75
+ element.style.marginLeft="1px";
76
+ }
77
+
78
+ function releaseButton(element) {
79
+ element.style.borderLeftColor="#d0d0d0";
80
+ element.style.borderTopColor="#d0d0d0";
81
+ element.style.borderRightColor="#0000a0";
82
+ element.style.borderBottomColor="#0000a0";
83
+ element.style.paddingTop="0";
84
+ element.style.paddingBottom="1px";
85
+ element.style.paddingLeft="4px";
86
+ element.style.paddingRight="4px";
87
+ element.style.marginRight="1px";
88
+ element.style.marginLeft="0";
89
+ }
90
+
91
+ var blinker = null;
92
+ var normalBorder = null;
93
+ function blink(eleName) {
94
+ if(blinker != null) {
95
+ blinker.style.border=normalBorder;
96
+ blinker = null;
97
+ }
98
+ else {
99
+ blinker = document.getElementById(eleName);
100
+ normalBorder = blinker.style.border;
101
+ blinker.style.border="2px solid yellow";
102
+ setTimeout("blink()", 200);
103
+ }
104
+ }
105
+
106
+
107
+ function removeAlert() {
108
+ var al = document.getElementById("alertMsg");
109
+ if(al) {
110
+ al.parentNode.removeChild(al);
111
+ }
112
+ }
113
+
114
+ function showAlert(msg) {
115
+ if(msg) {
116
+ var ie = document.getElementById("currentImage");
117
+ var ae = document.getElementById("currentImage").parentNode;
118
+ var me = document.createElement("p");
119
+ var mt = document.createTextNode(unescape(msg));
120
+
121
+ mestyle = document.createAttribute('class');
122
+ mestyle.nodeValue = 'alert';
123
+ me.setAttributeNode(mestyle);
124
+
125
+ meid = document.createAttribute('id');
126
+ meid.nodeValue = 'alertMsg';
127
+ me.setAttributeNode(meid);
128
+
129
+ me.appendChild(mt);
130
+ ae.insertBefore(me, ie);
131
+ ae.nodeValue=me;
132
+
133
+ setTimeout('removeAlert()', 1500);
134
+ }
135
+ }
136
+
137
+
138
+ function next() {
139
+ resetTime();
140
+ pausing = false;
141
+ if(current + 1 < max) {
142
+ ++current;
143
+ showOne();
144
+ }
145
+ else{
146
+ showAlert("#{jstrl('You have reached the last picture')}");
147
+ }
148
+ }
149
+ function previous() {
150
+ resetTime();
151
+ pausing = false;
152
+ if(--current >= 0) {
153
+ showOne();
154
+ }
155
+ else{
156
+ current = 0;
157
+ showAlert("#{jstrl('You have reached the first picture')}");
158
+ }
159
+ }
160
+
161
+ function timeChange() {
162
+ try{
163
+ var testTime = document.getElementById("displayTime").value;
164
+ if(testTime != null && testTime > 0 && num >= 0) {
165
+ document.getElementById("startControl").setAttribute('disabled', 'disabled');
166
+ document.getElementById("pauseControl").removeAttribute('disabled');
167
+ document.getElementById("stopControl").removeAttribute('disabled');
168
+ if(current == num) {
169
+ show();
170
+ }
171
+ }
172
+ else {
173
+ document.getElementById("startControl").removeAttribute('disabled');
174
+ document.getElementById("pauseControl").setAttribute('disabled', 'disabled');
175
+ document.getElementById("stopControl").setAttribute('disabled', 'disabled');
176
+ }
177
+ }catch(ex){alert(ex);}
178
+ }
179
+
180
+ function resetTime() {
181
+ try {
182
+ var element = document.getElementById("displayTime");
183
+ if(element.value != 0) {
184
+ blink("displayTime");
185
+ }
186
+ element.value = 0;
187
+ timeChange();
188
+ }catch(ex) {}
189
+ }
190
+ function showOne() {
191
+ try {
192
+ var imgElement = document.getElementById("currentImage");
193
+ var imageId = "image" + current;
194
+ var imgPath = document.getElementById(imageId).firstChild.nodeValue;
195
+ if(imgElement != null && imgPath != null ) {
196
+ imgElement.src = imgPath;
197
+ setHeading(document.getElementById(imageId).title);
198
+ num = current;
199
+ document.getElementById("imageNumber").firstChild.nodeValue= "#{jstrl('Image')} " + (current + 1);
200
+
201
+ var imageFile = imgPath.substring(imgPath.lastIndexOf('/') + 1, imgPath.lastIndexOf('.') );
202
+ var title = imageFile;
203
+ if(imageFile.length > 23) {
204
+ imageFile = imageFile.substr(0, 20);
205
+ imageFile += "..."
206
+ }
207
+
208
+ document.getElementById("imageData").firstChild.nodeValue=imageFile;
209
+ document.getElementById("imageData").title = title;
210
+
211
+ }
212
+ }
213
+ catch(ex) {
214
+ alert(ex);
215
+ }
216
+ }
217
+
218
+ function setHeading(text) {
219
+ document.getElementById("heading").firstChild.nodeValue=text;
220
+ }
221
+
222
+ t = 0;
223
+ function progress() {
224
+ var testTime = document.getElementById("displayTime").value;
225
+ if(!pausing && testTime > 0) {
226
+ unit = 100 / testTime;
227
+ document.getElementById("progressbar").style.width = (unit * t) + '%';
228
+
229
+ if(t >= 0) {
230
+ t -= 1;
231
+ }
232
+ else {
233
+ t = testTime;
234
+ }
235
+ }
236
+ if(testTime != null && testTime != 0 && num > 0) {
237
+ setTimeout("progress()", 1000);
238
+ }
239
+ else {
240
+ t = testTime;
241
+ }
242
+ }
243
+
244
+
245
+ function show() {
246
+ var showTime = document.getElementById("displayTime").value;
247
+ if(showTime > 0 && showTime < 999 ) {
248
+ if(num >= 0 ) {
249
+ if(pausing) {
250
+ setTimeout("show()", showTime * 1000 );
251
+ return;
252
+ }
253
+ try {
254
+ var imgElement = document.getElementById("currentImage");
255
+ var imageId = "image" + num;
256
+ var imgPath = document.getElementById(imageId).firstChild.nodeValue;
257
+ if(imgElement != null && imgPath != null ) {
258
+ imgElement.src = imgPath;
259
+ t = showTime;
260
+ setHeading(document.getElementById(imageId).title);
261
+ current = num
262
+ ++num;
263
+ document.getElementById("imageNumber").firstChild.nodeValue= "Image " + (num);
264
+ var imageFile = imgPath.substring(imgPath.lastIndexOf('/') + 1, imgPath.lastIndexOf('.') );
265
+ var title = imageFile;
266
+ if(imageFile.length > 23) {
267
+ imageFile = imageFile.substr(0, 20);
268
+ imageFile += "..."
269
+ }
270
+ document.getElementById("imageData").firstChild.nodeValue=imageFile;
271
+ document.getElementById("imageData").title = title;
272
+
273
+ if(num < max) {
274
+ setTimeout("show()", showTime * 1000 );
275
+ }
276
+ }
277
+ else {
278
+ num = -1;
279
+ }
280
+ }
281
+ catch(ex) {
282
+ alert(ex);
283
+ }
284
+ }
285
+ }
286
+ else if(num > 0){
287
+ --num;
288
+ }
289
+ }
290
+
291
+ function stop() {
292
+ window.location.reload();
293
+ }
294
+ function pause() {
295
+ pausing = pausing ? false : true;
296
+ var element = document.getElementById("pauseControl");
297
+ if(pausing) {
298
+ element.title="#{jstrl('Continue slideshow')}";
299
+ }
300
+ else {
301
+ element.title="#{jstrl('Stop the automatic slideshow')}";
302
+ }
303
+ }
304
+
305
+ function start() {
306
+ try {
307
+ document.getElementById("startControl").setAttribute('disabled', 'disabled');
308
+ document.getElementById("pauseControl").removeAttribute('disabled');
309
+ document.getElementById("stopControl").removeAttribute('disabled');
310
+ var dtime = document.getElementById("displayTime");
311
+ if(dtime.value <= 0) {;
312
+ dtime.value = "10";
313
+ blink("displayTime");
314
+ }
315
+ t = document.getElementById("displayTime").value;
316
+ }catch(ex) {alert(ex);}
317
+ num = 0;
318
+ pausing = false;
319
+ show();
320
+ progress();
321
+ }
322
+
323
+ var visibleControls = true;
324
+ function toggleControls() {
325
+ visibleControls = !visibleControls;
326
+ var tds = document.getElementsByTagName('div');
327
+ for(var i = 0; i < tds.length; ++i) {
328
+ var ctd = tds[i]
329
+ var cl = ctd.getAttribute('class');
330
+ if("controls" == cl) {
331
+ ctd.style.width = visibleControls ? '15em' : '1em';
332
+ ctd.style.paddingRight = visibleControls ? '0.5em' : '0';
333
+ if(ctd.hasChildNodes() ) {
334
+ var cnodes = ctd.childNodes;
335
+ for(ci = 0; ci < cnodes.length; ++ci) {
336
+ var cn = cnodes[ci];
337
+ if(1 == cn.nodeType && "toggleControls" != cn.id) {
338
+ if(! cn.getAttribute('style')) {
339
+ var displayStyle = document.createAttribute('style');
340
+ displayStyle.nodeValue = visibleControls ? "display: ;" : "display: none;";
341
+ cn.setAttributeNode(displayStyle);
342
+ }
343
+ else {
344
+ cn.style.display = visibleControls ? "" : "none";
345
+ }
346
+ }
347
+ }
348
+ }
349
+ }
350
+ }
351
+
352
+ document.getElementById('scaleControls').style.display= visibleControls ? 'block' : 'none';
353
+ document.getElementById('imageData').style.display= visibleControls ? 'block' : 'none';
354
+ document.getElementById('controls').style.width = visibleControls ? '15em' : '1.5em';
355
+ document.getElementById('currentImageBlock').style.left = visibleControls ? '16.5em' : '2em';
356
+ document.getElementById('currentImageBlock').style.padding = visibleControls ? '0' : '0 0 0 1em ';
357
+ }
358
+
359
+
360
+
361
+ function init() {
362
+ agent = navigator.userAgent;
363
+ try{
364
+ mindex = agent.indexOf("MSIE");
365
+ if(mindex >= 0){
366
+ msg = "#{jstrl('In the Internet-Explorer, the slideshow may suffer from display-errors.')} ";
367
+ msg += "#{jstrl('Please switch to a standard-complient browser until these issues are solved.')} ";
368
+ en = document.getElementById("noJS");
369
+ pn = en.parentNode;
370
+ en.parentNode.removeChild(en);
371
+ ien = document.createElement('p');
372
+ ien.style.textAlign="center";
373
+ ien.style.color="#4040f0";
374
+ ien.appendChild(document.createTextNode(msg));
375
+ pn.insertBefore(ien, pn.firstChild);
376
+ }
377
+ else {
378
+ document.getElementById("pageLayout").style.visibility="visible";
379
+ max = document.getElementById("lastImage").firstChild.nodeValue;
380
+ document.getElementById("imageCount").firstChild.nodeValue = max;
381
+ document.getElementById("noJS").style.display="none";
382
+ document.getElementById("startControl").removeAttribute('disabled');
383
+ }
384
+
385
+ }catch(ex){
386
+ if(mindex && mindex >= 0) {
387
+ alert(agent.substring(mindex, mindex + 8));
388
+ }
389
+ }
390
+ } ~
@@ -0,0 +1,194 @@
1
+ #encoding: UTF-8
2
+
3
+ RD = File.expand_path(File.dirname(__FILE__) ) + File::SEPARATOR if !defined?(RD)
4
+ require_relative 'translating'
5
+
6
+ def trl(s)
7
+ Translating::trl(s)
8
+ end
9
+
10
+ $TEMPLATE = %~<?xml version="1.0" encoding="utf8"?>
11
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
12
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
13
+
14
+ <html xmlns="http://www.w3.org/1999/xhtml">
15
+ <head>
16
+ <meta name="generator" content=
17
+ "HTML2Slideshow copyright 2007-2011 michael.uplawski@uplawski.eu, HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org" />
18
+ <meta http-equiv="Content-Type" content=
19
+ "text/html; charset=utf8" />
20
+ <meta http-equiv="Content-Type" content="application/xhtml+xml" />
21
+ <meta http-equiv="Content-Style-Type" content="text/css" />
22
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
23
+ <title>images</title>
24
+ <script src="slideshow.js" type="text/javascript">
25
+ </script>
26
+ <style type="text/css">
27
+ /*<![CDATA[*/
28
+ @import url(slideshow.css);
29
+ /*]]>*/
30
+ </style>
31
+ </head>
32
+
33
+ <body onload="init();">
34
+ <p id="noJS" style="display:block">
35
+ #{trl("This page will only work, when your browser is configured to use JavaScript.")}
36
+ <br />
37
+ #{trl("Click the back-button to return to the previous page or go directly to the")}
38
+ <a href="%-NoJsUrl-%" title="%-NoJsTitle-%">%-NoJsName-%</a>
39
+ </p>
40
+ <div id="pageLayout">
41
+ <div id="controls" class="controls">
42
+ <div class="imgCount">
43
+ <span id="imageNumber">#{trl('Image')}
44
+ 0</span><span>&nbsp;/&nbsp;</span><span id=
45
+ "imageCount">&nbsp;</span>
46
+ </div>
47
+
48
+ <div id="toggleControls" class="toggleControls">
49
+ <span title="#{trl('toggle controls')}" class=
50
+ "button" onmouseout="releaseButton(this);" onmouseup=
51
+ "releaseButton(this);" onmousedown="pushButton(this);" onclick=
52
+ "javascript:toggleControls()"><img alt="&lt;=&gt;" src=
53
+ "images/toggle.png" class="button" /></span>
54
+ </div>
55
+
56
+ <div class="heading">
57
+ <h1 id="heading">images</h1>
58
+ </div>
59
+
60
+ <table summary="controls for automatic slideshow">
61
+ <colgroup>
62
+ <col />
63
+ <col />
64
+ <col />
65
+ </colgroup>
66
+
67
+ <tr>
68
+ <td colspan="3" class="waitLabel">
69
+ <p class="waitLabel">#{trl('forward after')}</p>
70
+ </td>
71
+ </tr>
72
+
73
+ <tr>
74
+ <td>
75
+ <!--
76
+ The following table contains the spinbutton's html & event-handlers.
77
+ Two functions addTime() and reduceTime() from the JavaScript section on top
78
+ are used by the onclick()-handlers.
79
+ -->
80
+
81
+ <table summary="spinbutton" class="spinbutton">
82
+ <colgroup>
83
+ <col />
84
+ <col class="spinbutton" />
85
+ <col />
86
+ </colgroup>
87
+
88
+ <tr>
89
+ <td rowspan="2" class="spinvalue"><input type="text"
90
+ value="10" maxlength="3" id="displayTime"
91
+ title="#{trl('time span for each picture')}"
92
+ onchange="javascript:timeChange();" /></td>
93
+
94
+ <td class="spinup"><img onmousedown="pushButton(this);"
95
+ onmouseup="releaseButton(this);" onclick="addTime();"
96
+ onmouseout="releaseButton(this);" id=
97
+ "increaseTimeControl" class="spinbuttonUp" src=
98
+ "images/upCursor.png" alt="+" title="#{trl('more time')}" /></td>
99
+
100
+ <td rowspan="2" class="secLabel"><span class=
101
+ "secLabel">#{trl('sec')}.</span></td>
102
+ </tr>
103
+
104
+ <tr>
105
+ <td class="spindown"><img onmousedown=
106
+ "pushButton(this);" onmouseup="releaseButton(this);"
107
+ onclick="reduceTime();" onmouseout=
108
+ "releaseButton(this);" id="reduceTimeControl" class=
109
+ "spinbuttonDown" src="images/downCursor.png" alt="-"
110
+ title="#{trl('less time')}" /></td>
111
+ </tr>
112
+ </table><!--
113
+ END Spinbutton
114
+ -->
115
+ </td>
116
+
117
+ <td class="autoControls">
118
+ <div class="autoControls">
119
+ <span id="startControl" onmousedown="pushButton(this);"
120
+ onmouseup="releaseButton(this);" onmouseout=
121
+ "releaseButton(this);" onclick="javascript:start();"
122
+ class="button"><img src="images/start.png" title="#{trl('Start')}"
123
+ alt="#{trl('Start')}"
124
+ class="button" /></span> <span id="stopControl"
125
+ onmousedown="pushButton(this);" onmouseup=
126
+ "releaseButton(this);" onmouseout="releaseButton(this);"
127
+ onclick="javascript:stop();" class="button"><img src=
128
+ "images/stop.png" alt="#{trl('Stop')}" title="#{trl('Stop')}"
129
+ class="button" /></span>
130
+ <span id="pauseControl" onmousedown="pushButton(this);"
131
+ onmouseup="releaseButton(this);" onmouseout=
132
+ "releaseButton(this);" onclick="javascript:pause();"
133
+ class="button"><img src="images/pause.png" title="#{trl('Pause')}"
134
+ alt="#{trl('Pause')}"
135
+ class="button" /></span>
136
+ </div>
137
+ </td>
138
+ </tr>
139
+ </table>
140
+ <hr class="progressbar" />
141
+ <hr class="progressSlider" id="progressbar" />
142
+
143
+ <div id="navigationArrows" class="navigationArrows">
144
+ <span class="fwbackLabel">#{trl('next/previous')}:&nbsp;&nbsp;</span>
145
+ <span onclick="javascript:previous();" onmousedown=
146
+ "pushButton(this);" onmouseup="releaseButton(this);"
147
+ onmouseout="releaseButton(this);" id="prevControl" class=
148
+ "button"><img src="images/leftArrow.png" alt="&lt;"
149
+ title="#{trl('previous picture (please allow time for loading)')}"
150
+ class="button" /></span> <span onmouseup="releaseButton(this);"
151
+ onmousedown="pushButton(this);" onmouseout=
152
+ "releaseButton(this);" onclick="javascript:next();" id=
153
+ "nextControl" class="button"><img src="images/rightArrow.png"
154
+ alt="&lt;" title="#{trl('next picture (please allow time for loading)')}"
155
+ class="button" /></span>
156
+ </div>
157
+
158
+ <div class="loadNote">
159
+ <span>#{trl('Please allow for longer loading-times during the very first cycle.')}</span>
160
+ </div>
161
+ </div>
162
+
163
+ <div id="currentImageBlock" class="currentImage"><img src=
164
+ "images/olive.png" alt="foto" class="currentImage" id=
165
+ "currentImage" /></div>
166
+
167
+ <div class="imageData" id="imageData">&nbsp;</div>
168
+ <div id="scaleControls" class="">
169
+ <span title="#{trl('scale to normal size')}" id="scaleAuto" class=
170
+ "button" onmousedown="pushButton(this, ['scaleMedium', 'scaleSmall']);" onclick=
171
+ "document.getElementById('currentImage').style.height='auto';"><img alt="100%" src=
172
+ "images/sizeNormal.png" class="button" /></span>
173
+
174
+ <span title="#{trl('scale to alternative large size')}" id="scaleMedium" class=
175
+ "button" onmousedown="pushButton(this, ['scaleAuto', 'scaleSmall']);" onclick=
176
+ "document.getElementById('currentImage').style.height='%-pxMedium-%'"><img alt="medium" src=
177
+ "images/sizeMedium.png" class="button" /></span>
178
+
179
+ <span title="#{trl('scale to alternative small size')}" id="scaleSmall" class=
180
+ "button" onmousedown="pushButton(this, ['scaleAuto', 'scaleMedium']);" onclick=
181
+ "document.getElementById('currentImage').style.height='%-pxSmall-%'"><img alt="small" src=
182
+ "images/sizeSmall.png" class="button" /></span>
183
+ </div>
184
+
185
+
186
+ </div>
187
+
188
+ <div>
189
+ %-ImgReferences-%
190
+ </div>
191
+ </body>
192
+ </html> ~
193
+
194
+