function popup(url, windowId, width, height) {
  var newwindow
  newwindow=window.open(url, windowId, 'width=' + (width + 20) + ',height=' + (height + 20));
  if (window.focus) {newwindow.focus()}
}

var opacityTimeouts = {}
var currentOpacities = {}

var flickImages = {};
var flickLinks = {};
var flickCurrent = {};
var flickPreload = {};

function flickpic(name, step, fade) {
  var img;
  var a;

  flickCurrent[name] += step;
  if (flickCurrent[name] >= flickImages[name].length) flickCurrent[name] = 0;
  else if (flickCurrent[name] < 0) flickCurrent[name] = flickImages[name].length - 1;

  if (fade) {
    imgtop = document.getElementById(name + '_imagetop');
    imgbottom = document.getElementById(name + '_imagebottom');
    imgbottom.src = imgtop.src;
    setOpacity(name + '_imagetop', 0);
    // some yucky extra unnecessary setTimeout()s to make sure Firefox doesn't flicker
    setTimeout('imgtop = document.getElementById("' + name + '_imagetop"); imgtop.src = "' + flickImages[name][flickCurrent[name]] + '";', 10);
    setTimeout('imgtop = document.getElementById("' + name + '_imagetop"); imgtop.style.visibility = "visible";', 20);
    setTimeout('fadeelem("' + name + '_imagetop", 0.06, 60);', 30);
  }
  else {
    img = document.getElementById(name + '_image');
    img.src = flickImages[name][flickCurrent[name]];
  }

  a = document.getElementById(name + '_link');
  if (a) a.href = flickLinks[name][flickCurrent[name]];
}

function autoflick(name, time, fade) {
  flickpic(name, 1, fade);
  setTimeout('autoflick("' + name + '", ' + time + ', ' + fade + ')', time);
}

function fadeelem(elemId, step, duration) {
  /* use a negative step to fadeout, positive to fadin */
  opacity = currentOpacities[elemId];
  if (opacity == null) opacity = 0;
  opacity += step;
  if (opacity < 0) {
    setOpacity(elemId, 0);
    return;
  }
  else if (opacity >= 1) {
    setOpacity(elemId, 1);
    return;
  }
  else {
    setOpacity(elemId, opacity);
    opacityTimeouts[elemId] =
      setTimeout('fadeelem("' + elemId + '", '
                           + step + ', '
                           + duration + ')',
               duration);
  }
}

function setOpacity(elemId, val) {
  var element;
  element = document.getElementById(elemId);
  currentOpacities[elemId] = val;
  element.style.opacity = val;
  if (element.style.filter != null) {
    element.style.zoom = 1;
//    element.style['filter'] = element.style['filter'].replace(/alpha\([^\)]*\)/gi, '')
//                             + 'alpha(opacity=' + (val * 100) + ');';  
    element.style.filter = 'alpha(opacity=' + (val * 100) + ');';
  }

}
