+++ /dev/null
-#
-# * BOOH *
-#
-# A.k.a `Best web-album Of the world, Or your money back, Humerus'.
-#
-# The acronyn sucks, however this is a tribute to Dragon Ball by
-# Akira Toriyama, where the last enemy beaten by heroes of Dragon
-# Ball is named "Boo". But there was already a free software project
-# called Boo, so this one will be it "Booh". Or whatever.
-#
-#
-# Copyright (c) 2004 Guillaume Cottenceau <gc3 at bluewin.ch>
-#
-# This software may be freely redistributed under the terms of the GNU
-# public license version 2.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-bindtextdomain("booh")
-
-#- we often will want to have one size to nicely fit 800x600 screens,
-#- one for 1024x768 and one for 1280x1024
-#- it's necessary to fit according to the typical space taken by
-#- widgets defined in the skeleton of the theme
-#-
-#- ***IMPORTANT***: CHOOSE 4/3 ASPECT RATIO SIZES (for thumbnails)!
-$images_size = [
- {
- 'name' => 'small',
- 'description' => _("Sizes that should fit browsers in fullscreen for 800x600 screens"),
- 'fullscreen' => '600x331',
- 'thumbnails' => '192x144',
- 'optimizedforwidth' => '800',
- 'optional' => true,
- },
- {
- 'name' => 'medium',
- 'description' => _("Sizes that should fit browsers in fullscreen for 1024x768 screens"),
- 'fullscreen' => '758x422',
- 'thumbnails' => '240x180',
- 'optimizedforwidth' => '1024',
- 'default' => true,
- },
- {
- 'name' => 'large',
- 'description' => _("Sizes that should fit browsers in fullscreen for 1280x1024 screens"),
- 'fullscreen' => '960x528',
- 'thumbnails' => '309x232',
- 'optimizedforwidth' => '1280',
- },
- {
- 'name' => 'x-large',
- 'description' => _("Sizes that should fit browsers in fullscreen for 1400x1050 screens"),
- 'fullscreen' => '1050x576',
- 'thumbnails' => '328x245',
- 'optimizedforwidth' => '1400',
- 'optional' => true,
- },
- {
- 'name' => 'xx-large',
- 'description' => _("Sizes that should fit browsers in fullscreen for 1600x1200 screens"),
- 'fullscreen' => '1200x660',
- 'thumbnails' => '375x281',
- 'optimizedforwidth' => '1600',
- 'optional' => true,
- }
-]
-
-$allowed_N_values = [ 3 ]
-$default_N = 3
-
-$albums_thumbnail_size = '300x225'
+++ /dev/null
-var images_ary = new Array();
-var images_loaded = new Array();
-var current = 0;
-var slideshow = 0;
-var slideshow_pause = null;
-var slideshow_timer = null;
-
-for (i = 0; i < images.length; i++) {
- /* this array will contain 0 if image not yet loaded, 1 when loading,
- * 2 when complete */
- images_loaded[i] = 0;
-}
-
-function dbg(t) {
- document.getElementById('dbg_text').innerHTML += t + "<br/>";
-}
-
-/* load image, return 1 if image is finished loading */
-function load(i) {
- if (images_loaded[i] == 0) {
- images_ary[i] = new Image();
- images_ary[i].src = images[i];
- images_loaded[i] = 1;
- }
- if (images_loaded[i] == 1) {
- if (images_ary[i].complete) {
- images_loaded[i] = 2;
- } else {
- return 0;
- }
- }
- return 1;
-}
-
-function getparam(key) {
- all_params = location.href.split("#")
- if (all_params.length > 1) {
- params = all_params[1].split("&");
- for (i = 0; i < params.length; i++) {
- keyvalue = params[i].split("=");
- if (keyvalue[0] == key) {
- return keyvalue[1];
- }
- }
- }
- return null;
-}
-
-function loadcurrent(img) {
- for (i = 0; i < images.length; i++) {
- if (images[i] == img) {
- current = i;
- display_current();
- return;
- }
- }
- current = 0;
- display_current();
-}
-
-function browser_href() {
- all = location.href.split("/");
- return all[all.length - 1];
-}
-
-/* check URL for changes; allows the URL to reflect currently showed image */
-var currentURL = '';
-function checkURL() {
- if (currentURL == 'ignore1') {
- // do nothing
- } else if (currentURL == 'ignore2') {
- currentURL = browser_href();
- } else {
- href = browser_href();
- if (href != currentURL) {
- currentURL = href;
- img = getparam('current');
- loadcurrent(img);
- }
- }
- setTimeout("checkURL()", 50);
-}
-
-function preload() {
-
- /* favor current image, if user clicked on `last' or something */
- load(current);
-
- /* don't blindly preload all images at the beginning,
- * but rather load them one by one, in order to get
- * next ones faster, beginning with next to current
- */
- if (current + 1 < images.length && load(current + 1) == 0) {
- setTimeout("preload()", 50);
- return;
- }
- if (current - 1 >= 0 && load(current - 1) == 0) {
- setTimeout("preload()", 50);
- return;
- }
-
- for (i = current + 2; i < images.length && i <= current + 5; i++) {
- if (load(i) == 0) {
- setTimeout("preload()", 50);
- return;
- }
- }
- for (i = current - 2; i >= current - 3; i--) {
- if (i >= 0) {
- if (load(i) == 0) {
- setTimeout("preload()", 50);
- return;
- }
- }
- }
-
- setTimeout("preload()", 50);
-}
-
-function add_cookie(val) {
- var expires = new Date(new Date().getTime() + (30 * 86400000)); // 30 days
- document.cookie = val
- + '; expires=' + expires.toGMTString()
- + '; path=/';
-}
-
-function get_cookie(key) {
- if (document.cookie) {
- var index = document.cookie.indexOf(key);
- if (index != -1) {
- var oleft = (document.cookie.indexOf('=', index) + 1);
- var oright = document.cookie.indexOf(';', index);
- if (oright == -1) {
- oright = document.cookie.length;
- }
- return document.cookie.substring(oleft, oright);
- }
- }
- return null;
-}
-
-function init() {
-
-
- preferred_pause = get_cookie('booh-slideshow-pause-' + dbltilda_theme);
- if (preferred_pause != null) {
- document.getElementById('secs').value = preferred_pause;
- }
-
- if (getparam('run_slideshow')) {
- toggle_slideshow();
- }
-
- checkURL();
-
- preload();
-
- if (images.length == 1) {
- document.getElementById("b_slideshow").disabled = true;
- document.getElementById("b_slideshow").setAttribute("class", "disabled");
- }
-
- if (navigator.userAgent.indexOf('Opera') == -1) {
- document.onkeydown = keyDownEvent;
- }
-}
-
-function change_basename(input, newend) {
- position = input.lastIndexOf('/');
- if (position == -1) {
- return newend;
- } else {
- return input.substring(0, position + 1).concat(newend);
- }
-}
-
-function update_sensibilities() {
- if (current == 0) {
- document.getElementById("img_first").src = change_basename(document.getElementById("img_first").src, 'first_dark.gif');
- document.getElementById("img_previous").src = change_basename(document.getElementById("img_previous").src, 'previous_dark.gif');
- } else {
- document.getElementById("img_first").src = change_basename(document.getElementById("img_first").src, 'first_light.gif');
- document.getElementById("img_previous").src = change_basename(document.getElementById("img_previous").src, 'previous_light.gif');
- }
-
- if (current == images.length - 1) {
- document.getElementById("img_next").src = change_basename(document.getElementById("img_next").src, 'next_dark.gif');
- document.getElementById("img_last").src = change_basename(document.getElementById("img_last").src, 'last_dark.gif');
- } else {
- document.getElementById("img_next").src = change_basename(document.getElementById("img_next").src, 'next_light.gif');
- document.getElementById("img_last").src = change_basename(document.getElementById("img_last").src, 'last_light.gif');
- }
-}
-
-function set_cursor_(value, element) {
-
- if (!element || !element.style) {
- return;
- }
-
- element.style.cursor = value;
-
- children = element.childNodes;
- for (i = 0; i < children.length; i++) {
- set_cursor_(value, children.item[i]);
- }
-}
-
-function set_cursor(value) {
- set_cursor_(value, document.getElementById('body'));
-}
-
-function show_current_text() {
- /* don't show text if image not yet loaded because navigator
- * won't refresh it during load */
- if (images_loaded[current] == 2) {
- document.getElementById('image_counter').innerHTML = ( current + 1 ) + "/" + images.length;
- document.getElementById('main_text').innerHTML = captions[current];
- for (i = 0; i < other_sizes.length; i++) {
- if (other_sizes[i] == "original") {
- document.getElementById('link' + other_sizes[i]).href = eval("images_" + other_sizes[i] + "[current]");
- } else {
- document.getElementById('link' + other_sizes[i]).href = 'image-' + other_sizes[i] + dbltilda_htmlsuffix + '#current=' + eval("images_" + other_sizes[i] + "[current]");
- }
- }
- document.getElementById('thumbnails').href = 'thumbnails-' + dbltilda_current_size + '-' + thumbnailspages[current] + dbltilda_htmlsuffix + '#' + images[current];
- set_cursor("default");
- } else {
- setTimeout("show_current_text()", 50);
- set_cursor("wait");
- }
-}
-
-function display_current() {
- document.main_img.src = images[current];
- oldhref = browser_href();
- newhref = 'image-' + dbltilda_current_size + dbltilda_htmlsuffix + '#current=' + images[current];
- if (oldhref != newhref) {
- currentURL = 'ignore1';
- location.href = newhref;
- currentURL = 'ignore2';
- }
- show_current_text();
- update_sensibilities();
-}
-
-function first() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- current = 0;
- display_current();
-}
-
-function next() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- if (current < images.length - 1) {
- current++;
- display_current();
- }
-}
-
-function next10() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- if (current < images.length - 11) {
- current += 10;
- } else {
- current = images.length - 1;
- }
- display_current();
-}
-
-function previous() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- if (current > 0) {
- current--;
- display_current();
- }
-}
-
-function previous10() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- if (current > 10) {
- current -= 10;
- } else {
- current = 0;
- }
- display_current();
-}
-
-function last() {
- if (slideshow == 1) {
- toggle_slideshow(true);
- }
-
- current = images.length - 1;
- display_current();
-}
-
-function keyDownEvent(key) {
- if (!key) {
- key = event;
- key.which = key.keyCode;
- }
- if (key.altKey || key.ctrlKey || key.shiftKey) {
- return;
- }
- switch (key.which) {
- case 36: // home
- first();
- break;
- case 35: // end
- last();
- break;
- case 37: // left
- previous();
- break;
- case 39: // right
- next();
- break;
- case 38: // up
- previous10();
- break;
- case 40: // down
- next10();
- break;
- }
-}
-
-function toggle_slideshow(now) {
- if (slideshow == 0) {
- slideshow_pause = document.getElementById('secs').value;
- add_cookie('booh-slideshow-pause-' + dbltilda_theme + '=' + slideshow_pause)
- document.getElementById("b_slideshow").value = dbltilda_stop_slideshow;
- slideshow = 1;
- if (current == images.length - 1) {
- current = -1;
- }
- if (now) {
- run_slideshow();
- } else {
- setTimeout("run_slideshow()", slideshow_pause * 1000);
- }
- } else {
- clearTimeout(slideshow_timer);
- document.getElementById("b_slideshow").value = dbltilda_run_slideshow;
- slideshow = 0;
- }
-}
-
-function run_slideshow() {
- if (slideshow == 0) {
- return;
- }
-
- if (images_loaded[current + 1] == 2) {
- current++;
- display_current();
- slideshow_timer = setTimeout("run_slideshow()", slideshow_pause * 1000);
- } else {
- slideshow_timer = setTimeout("run_slideshow()", 50);
- }
-
- if (current == images.length - 1) {
- toggle_slideshow(true);
- }
-}
-
-function set_preferred_size(val) {
- var expires = new Date(new Date().getTime() + (30 * 86400000)); // 30 days
- document.cookie = 'booh-preferred-size-' + dbltilda_theme + '='
- + val
- + '; expires=' + expires.toGMTString()
- + '; path=/';
-}
-