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, 'first_dark.gif');
181 img_previous.src = change_basename(img_previous.src, 'previous_dark.gif');
182 img_first.style['cursor'] = 'default';
183 img_previous.style['cursor'] = 'default';
185 img_first.src = change_basename(img_first.src, 'first_light.gif');
186 img_previous.src = change_basename(img_previous.src, 'previous_light.gif');
187 img_first.style['cursor'] = 'pointer'; // to work on IE and FF, but warns on FF :/
188 img_first.style['cursor'] = 'hand';
189 img_previous.style['cursor'] = 'pointer';
190 img_previous.style['cursor'] = 'hand';
193 var img_next = document.getElementById("img_next");
194 var img_last = document.getElementById("img_last");
195 if (current == images.length - 1) {
196 img_next.src = change_basename(img_next.src, 'next_dark.gif');
197 img_last.src = change_basename(img_last.src, 'last_dark.gif');
198 img_next.style['cursor'] = 'default';
199 img_last.style['cursor'] = 'default';
201 img_next.src = change_basename(img_next.src, 'next_light.gif');
202 img_last.src = change_basename(img_last.src, 'last_light.gif');
203 img_next.style['cursor'] = 'pointer';
204 img_next.style['cursor'] = 'hand';
205 img_last.style['cursor'] = 'pointer';
206 img_last.style['cursor'] = 'hand';
210 function set_cursor_(value, element) {
212 if (!element || !element.style) {
216 element.style.cursor = value;
218 children = element.childNodes;
219 for (i = 0; i < children.length; i++) {
220 set_cursor_(value, children.item[i]);
224 function set_cursor(value) {
225 set_cursor_(value, document.getElementById('body'));
228 function show_current_text() {
229 /* don't show text if image not yet loaded because navigator
230 * won't refresh it during load */
231 if (images_loaded[current] == 2) {
232 document.getElementById('image_counter').innerHTML = ( current + 1 ) + "/" + images.length;
233 document.getElementById('main_text').innerHTML = captions[current];
234 for (i = 0; i < other_sizes.length; i++) {
235 if (other_sizes[i] == "original") {
236 var original = eval("elements_" + other_sizes[i] + "[current]");
237 if (original != undefined) {
238 document.getElementById('link' + other_sizes[i]).href = original;
239 document.getElementById('link' + other_sizes[i]).style.display = '';
241 document.getElementById('link' + other_sizes[i]).style.display = 'none';
244 document.getElementById('link' + other_sizes[i]).href = 'image-' + other_sizes[i] + dbltilda_htmlsuffix + '#current=' + eval("elements_" + other_sizes[i] + "[current]");
247 document.getElementById('thumbnails').href = 'thumbnails-' + dbltilda_current_size + '-' + thumbnailspages[current] + dbltilda_htmlsuffix + '#' + images[current];
248 set_cursor("default");
250 setTimeout("show_current_text()", 50);
255 function display_current() {
256 var main_img = document.getElementById('main_img');
257 if (types[current] == 'image') {
258 main_img.innerHTML = '<div class="fullscreen_image"><img src="' + images[current] + '"/></div>';
260 main_img.innerHTML = '<a class="fullscreenvideolink" href="' + videos[current] + '" '
261 + ' style="display:block;width:' + videos_widths[current] + 'px;height:' + (videos_heights[current] + 24) + 'px" id="player">'
262 + ' <div class="fullscreen_video"><img src="' + images[current] + '"/></div>'
263 + ' <img src="' + dbltilda_pathtobase + 'play_video.png" style="position:relative;top:-' + (videos_heights[current] + 48)/2 + 'px;border:0;background-color:transparent"/>'
265 if (dbltilda_flowplayer_active == 'true') {
266 flowplayer("player", dbltilda_pathtobase + "flowplayer-3.1.5.swf");
269 oldhref = browser_href();
270 newhref = 'image-' + dbltilda_current_size + dbltilda_htmlsuffix + '#current=' + images[current];
271 if (oldhref != newhref) {
272 currentURL = 'ignore1';
273 location.href = newhref;
274 currentURL = 'ignore2';
277 update_sensibilities();
281 if (slideshow == 1) {
282 toggle_slideshow(true);
290 if (slideshow == 1) {
291 toggle_slideshow(true);
294 if (current < images.length - 1) {
301 if (slideshow == 1) {
302 toggle_slideshow(true);
305 if (current < images.length - 11) {
308 current = images.length - 1;
313 function previous() {
314 if (slideshow == 1) {
315 toggle_slideshow(true);
324 function previous10() {
325 if (slideshow == 1) {
326 toggle_slideshow(true);
338 if (slideshow == 1) {
339 toggle_slideshow(true);
342 current = images.length - 1;
346 function toggle_video() {
347 if (types[current] == 'video' && dbltilda_flowplayer_active == 'true') {
348 var player = flowplayer('player');
349 if (player.isLoaded()) {
357 function keyDownEvent(key) {
360 key.which = key.keyCode;
362 if (key.altKey || key.ctrlKey || key.shiftKey) {
390 function toggle_slideshow(now) {
391 if (slideshow == 0) {
392 slideshow_pause = document.getElementById('secs').value;
393 add_cookie('booh-slideshow-pause-' + dbltilda_theme + '=' + slideshow_pause)
394 document.getElementById("b_slideshow").value = dbltilda_stop_slideshow;
396 if (current == images.length - 1) {
402 setTimeout("run_slideshow()", slideshow_pause * 1000);
405 clearTimeout(slideshow_timer);
406 document.getElementById("b_slideshow").value = dbltilda_run_slideshow;
411 function run_slideshow() {
412 if (slideshow == 0) {
416 if (images_loaded[current + 1] == 2) {
419 slideshow_timer = setTimeout("run_slideshow()", slideshow_pause * 1000);
421 slideshow_timer = setTimeout("run_slideshow()", 50);
424 if (current == images.length - 1) {
425 toggle_slideshow(true);
429 function set_preferred_size(val) {
430 var expires = new Date(new Date().getTime() + (30 * 86400000)); // 30 days
431 document.cookie = 'booh-preferred-size-' + dbltilda_theme + '='
433 + '; expires=' + expires.toGMTString()