  // minimum time between random image changes [ms]
  var minTimer = 300;
  // maximum time between random image changes [ms]
  var maxTimer = 1000;

  // number of animated images
  var numAni = 9;
  // number of animation frames per image
  var numImg = 3;


  var image_suffix = new Array("azw","halle","jung","kh","leopold","mumok","tanz","zoom","mq");
  var inst_id      = new Array(5, 6, 10, 7, 8, 1, 9, 11, 0);

  var locked_ani = 0;
  var animationTimer = maxTimer;

  var ani_images = new Array(numAni*numImg);
  var ani_links = new Array(numAni);
  var ani_current;
  var ani_current_idx = -1;
  var rand_ani_order = new Array(numAni);
  var ani_images_current = new Array(numAni);
  var image_offset;

  var randSort = new Array(numAni);
  function compareRandSort(a,b) { 
    return randSort[a] - randSort[b]; 
  }  

  var rand_ani_idx = new Array(numAni);
  for(idx=0; idx<numAni; idx++) {
    rand_ani_idx[idx] = idx;
  }
  for(idx=0; idx<numAni; idx++) { randSort[idx] = Math.random(); }
  rand_ani_idx.sort(compareRandSort);
  
  for(idx=0; idx<numAni; idx++) {
    for(idx2=0; idx2<numImg; idx2++) {
      ani_images[idx*numAni+idx2] = new Image();
      ani_images[idx*numAni+idx2].src = "/images/ani_" + image_suffix[rand_ani_idx[idx]] + "_" + (idx2+1) + ".gif";
    }
    ani_images_current[idx] = Math.floor(Math.random() * numImg) % numImg;
    if (inst_id[rand_ani_idx[idx]] == 0) {
      ani_links[idx] = "/cgi-bin/liste.pl?plan=on";
    }
    else {
      ani_links[idx] = "/cgi-bin/liste.pl?selectinst=" + inst_id[rand_ani_idx[idx]];
    }
  }


  function image_trigger() {
    ani_current_idx = (ani_current_idx + 1) % numAni;
    if (ani_current_idx == 0) {
      for(idx=0; idx<numAni; idx++) {
        rand_ani_order[idx] = idx;
      }
      for(idx=0; idx<numAni; idx++) { randSort[idx] = Math.random(); }
      rand_ani_order.sort(compareRandSort);
    }
    ani_current = rand_ani_order[ani_current_idx];
    if (ani_current == (locked_ani-1)) {
      setTimeout('image_trigger()',5);
    }
    else {
      image_offset = (Math.floor(Math.random() * (numImg-1)) % (numImg-1)) + 1;
      ani_images_current[ani_current] = (ani_images_current[ani_current] + image_offset) % numImg;
      document.images[docImages.getIndex("ani_image"+(ani_current+1))].src = ani_images[(ani_current)*numAni+ani_images_current[ani_current]].src;
      document.links[docLinks.getIndex("ani_link"+(ani_current+1))].href = ani_links[ani_current];
      setTimeout('image_trigger()',animationTimer);
    }
  } 

  function lock_ani(ani_idx) {
    document.images[docImages.getIndex("ani_image"+ani_idx)].src = ani_images[(ani_idx-1)*numAni].src;
    document.links[docLinks.getIndex("ani_link"+ani_idx)].href = ani_links[ani_idx-1];
    ani_images_current[ani_idx-1] = 0;
    locked_ani = ani_idx;
    animationTimer = minTimer;
  }

  function unlock_ani(ani_idx) {
    if (locked_ani == ani_idx) {
      locked_ani = 0;
    }
    animationTimer = maxTimer;
  }


