1 var images_ary = new Array();
2 var images_loaded = new Array();
5 var slideshow_pause = null;
6 var slideshow_timer = null;
8 for (i = 0; i < images.length; i++) {
9 /* this array will contain 0 if image not yet loaded, 1 when loading,
15 document.getElementById('dbg_text').innerHTML += t + "<br/>";
18 /* load image, return 1 if image is finished loading */
20 if (images_loaded[i] == 0) {
21 images_ary[i] = new Image();
22 images_ary[i].src = images[i];
25 if (images_loaded[i] == 1) {
26 if (images_ary[i].complete) {
35 function getparam(key) {
36 all_params = location.href.split("#");
37 if (all_params.length > 1) {
38 params = all_params[1].split("&");
39 for (i = 0; i < params.length; i++) {
40 keyvalue = params[i].split("=");
41 if (keyvalue[0] == key) {
49 function loadcurrent(img) {
50 for (i = 0; i < images.length; i++) {
51 if (images[i] == img) {
61 function browser_href() {
62 all = location.href.split("/");
63 return all[all.length - 1];
66 /* check URL for changes; allows the URL to reflect currently showed image */
69 if (currentURL == 'ignore1') {
71 } else if (currentURL == 'ignore2') {
72 currentURL = browser_href();
74 href = browser_href();
75 if (href != currentURL) {
77 img = getparam('current');
81 setTimeout("checkURL()", 50);
86 /* favor current image, if user clicked on `last' or something */
89 /* don't blindly preload all images at the beginning,
90 * but rather load them one by one, in order to get
91 * next ones faster, beginning with next to current
93 if (current + 1 < images.length && load(current + 1) == 0) {
94 setTimeout("preload()", 50);
97 if (current - 1 >= 0 && load(current - 1) == 0) {
98 setTimeout("preload()", 50);
102 for (i = current + 2; i < images.length && i <= current + 5; i++) {
104 setTimeout("preload()", 50);
108 for (i = current - 2; i >= current - 3; i--) {
111 setTimeout("preload()", 50);
117 setTimeout("preload()", 50);
120 function add_cookie(val) {
121 var expires = new Date(new Date().getTime() + (30 * 86400000)); // 30 days
122 document.cookie = val
123 + '; expires=' + expires.toGMTString()
127 function get_cookie(key) {
128 if (document.cookie) {
129 var index = document.cookie.indexOf(key);
131 var oleft = (document.cookie.indexOf('=', index) + 1);
132 var oright = document.cookie.indexOf(';', index);
134 oright = document.cookie.length;
136 return document.cookie.substring(oleft, oright);
144 preferred_pause = get_cookie('booh-slideshow-pause-' + dbltilda_theme);
145 if (preferred_pause != null) {
146 document.getElementById('secs').value = preferred_pause;
149 if (getparam('run_slideshow')) {
157 if (images.length == 1) {
158 document.getElementById("b_slideshow").disabled = true;
159 document.getElementById("b_slideshow").setAttribute("class", "disabled");
162 if (navigator.userAgent.indexOf('Opera') == -1) {
163 document.onkeydown = keyDownEvent;
167 function change_basename(input, newend) {
168 position = input.lastIndexOf('/');
169 if (position == -1) {
172 return input.substring(0, position + 1).concat(newend);
176 function update_sensibilities() {
177 var img_first = document.getElementById("img_first");
178 var img_previous = document.getElementById("img_previous");
180 img_first.src = change_basename(img_first.src, 'go-first-dark.png');
181 img_previous.src = change_basename(img_previous.src, 'go-previous-dark.png');
182 img_first.style['cursor'] = 'default';
183 img_previous.style['cursor'] = 'default';
184 img_first.setAttribute("class", "disabled");
185 img_previous.setAttribute("class", "disabled");
187 img_first.src = change_basename(img_first.src, 'go-first.png');
188 img_previous.src = change_basename(img_previous.src, 'go-previous.png');
189 img_first.style['cursor'] = 'pointer'; // to work on IE and FF, but warns on FF :/
190 img_first.style['cursor'] = 'hand';
191 img_previous.style['cursor'] = 'pointer';
192 img_previous.style['cursor'] = 'hand';
193 img_first.setAttribute("class", "enabled");
194 img_previous.setAttribute("class", "enabled");
197 var img_next = document.getElementById("img_next");
198 var img_last = document.getElementById("img_last");
199 if (current == images.length - 1) {
200 img_next.src = change_basename(img_next.src, 'go-next-dark.png');
201 img_last.src = change_basename(img_last.src, 'go-last-dark.png');
202 img_next.style['cursor'] = 'default';
203 img_last.style['cursor'] = 'default';
204 img_next.setAttribute("class", "disabled");
205 img_last.setAttribute("class", "disabled");
207 img_next.src = change_basename(img_next.src, 'go-next.png');
208 img_last.src = change_basename(img_last.src, 'go-last.png');
209 img_next.style['cursor'] = 'pointer';
210 img_next.style['cursor'] = 'hand';
211 img_last.style['cursor'] = 'pointer';
212 img_last.style['cursor'] = 'hand';
213 img_next.setAttribute("class", "enabled");
214 img_last.setAttribute("class", "enabled");
218 function set_cursor_(value, element) {
220 if (!element || !element.style) {
224 element.style.cursor = value;
226 children = element.childNodes;
227 for (i = 0; i < children.length; i++) {
228 set_cursor_(value, children.item[i]);
232 function set_cursor(value) {
233 set_cursor_(value, document.getElementById('body'));
236 function show_current_text() {
237 /* don't show text if image not yet loaded because navigator
238 * won't refresh it during load */
239 if (images_loaded[current] == 2) {
240 document.getElementById('image_counter').innerHTML = ( current + 1 ) + "/" + images.length;
241 document.getElementById('main_text').innerHTML = captions[current];
242 for (i = 0; i < other_sizes.length; i++) {
243 if (other_sizes[i] == "original") {
244 var original = eval("elements_" + other_sizes[i] + "[current]");
245 if (original != undefined) {
246 document.getElementById('link' + other_sizes[i]).href = original;
247 document.getElementById('link' + other_sizes[i]).style.display = '';
249 document.getElementById('link' + other_sizes[i]).style.display = 'none';
252 document.getElementById('link' + other_sizes[i]).href = 'image-' + other_sizes[i] + dbltilda_htmlsuffix + '#current=' + eval("elements_" + other_sizes[i] + "[current]");
255 document.getElementById('thumbnails').href = 'thumbnails-' + dbltilda_current_size + '-' + thumbnailspages[current] + dbltilda_htmlsuffix + '#' + images[current];
256 set_cursor("default");
258 setTimeout("show_current_text()", 50);
263 function display_current() {
264 var main_img = document.getElementById('main_img');
265 if (types[current] == 'image') {
266 main_img.innerHTML = '<div class="fullscreen_image"><img style="width:' + widths[current] + 'px;height:' + heights[current] + 'px" src="' + images[current] + '"/></div>';
268 main_img.innerHTML = '<a class="fullscreenvideolink" href="' + videos[current] + '" '
269 + ' style="display:block;width:' + widths[current] + 'px;height:' + (heights[current] + 24) + 'px" id="player">'
270 + ' <div class="fullscreen_video"><img src="' + images[current] + '"/></div>'
271 + ' <img src="' + dbltilda_pathtobase + 'play_video.png" style="position:relative;top:-' + (heights[current] + 48)/2 + 'px;border:0;background-color:transparent"/>'
273 if (dbltilda_flowplayer_active == 'true') {
274 flowplayer("player", dbltilda_pathtobase + "flowplayer-3.2.16.swf");
277 oldhref = browser_href();
278 newhref = 'image-' + dbltilda_current_size + dbltilda_htmlsuffix + '#current=' + images[current];
279 if (oldhref != newhref) {
280 currentURL = 'ignore1';
281 location.href = newhref;
282 currentURL = 'ignore2';
285 update_sensibilities();
289 if (slideshow == 1) {
290 toggle_slideshow(true);
298 if (slideshow == 1) {
299 toggle_slideshow(true);
302 if (current < images.length - 1) {
309 if (slideshow == 1) {
310 toggle_slideshow(true);
313 if (current < images.length - 11) {
316 current = images.length - 1;
321 function previous() {
322 if (slideshow == 1) {
323 toggle_slideshow(true);
332 function previous10() {
333 if (slideshow == 1) {
334 toggle_slideshow(true);
346 if (slideshow == 1) {
347 toggle_slideshow(true);
350 current = images.length - 1;
354 function toggle_video() {
355 if (types[current] == 'video' && dbltilda_flowplayer_active == 'true') {
356 var player = flowplayer('player');
357 if (player.isLoaded()) {
365 function keyDownEvent(key) {
368 key.which = key.keyCode;
370 if (key.altKey || key.ctrlKey || key.shiftKey) {
398 function toggle_slideshow(now) {
399 if (slideshow == 0) {
400 slideshow_pause = document.getElementById('secs').value;
401 add_cookie('booh-slideshow-pause-' + dbltilda_theme + '=' + slideshow_pause)
402 document.getElementById("b_slideshow").value = dbltilda_stop_slideshow;
404 if (current == images.length - 1) {
410 setTimeout("run_slideshow()", slideshow_pause * 1000);
413 clearTimeout(slideshow_timer);
414 document.getElementById("b_slideshow").value = dbltilda_run_slideshow;
419 function run_slideshow() {
420 if (slideshow == 0) {
424 if (images_loaded[current + 1] == 2) {
427 slideshow_timer = setTimeout("run_slideshow()", slideshow_pause * 1000);
429 slideshow_timer = setTimeout("run_slideshow()", 50);
432 if (current == images.length - 1) {
433 toggle_slideshow(true);
437 function set_preferred_size(val) {
438 var expires = new Date(new Date().getTime() + (30 * 86400000)); // 30 days
439 document.cookie = 'booh-preferred-size-' + dbltilda_theme + '='
441 + '; expires=' + expires.toGMTString()