var map_fade_running = false;
var map_fade_interval = null;
var map_slots = new Array;

function swap_map_image(evt) {
  var event = equaliseEvent(evt);
  if (event.failed) return;
  
  var elem = event.elem;
  while(elem && elem.tagName.toLowerCase() != 'a') {
    elem = elem.parentNode;
  }
  if (!elem) return;
  
  if ((event.event.type == "mouseover" && elem.fade_way < 0) ||
      (event.event.type == "mouseout" && elem.fade_way > 0)) {
    elem.fade_way = -elem.fade_way;
  }
  
  elem.fade_run = true;
  if (!map_fade_running) {
    map_fade_run();
  }
}

function map_fade_run() {
  map_fade_running = true;
  var in_use = false;
  for (var i = 0; i < map_slots.length; i++) {
    var obj = map_slots[i];
    
    if (!obj.fade_run) continue;
    if (obj.fade_opacity > 100 && obj.fade_way > 0) continue;

    tof = obj.getElementsByTagName('img');
    set_opacity(tof[0], obj.fade_opacity);
    tof[0].style.visibility = "visible";
    
    // We only give our slot back when we faded back to 0
    if ((obj.fade_opacity == 0   && obj.fade_way < 0)) {
      obj.fade_run = false;
    } else {
      in_use = true;
      obj.fade_opacity += obj.fade_way;
    }
  }
  
  if (in_use) {
    if (map_fade_interval == null) map_fade_interval = window.setInterval("map_fade_run()", 50);
  } else {
    map_fade_running = false;
    if (map_fade_interval != null) window.clearInterval(map_fade_interval);
    map_fade_interval = null;
  }
}

function init_map() {
  var container = document.getElementById('map-container');
  var images = container.getElementsByTagName('a');
  for (var i=0; i < images.length; i++) {
    images[i].fade_way = 20;
    images[i].fade_opacity = 0;
    images[i].fade_run = false;
    
    map_slots.push(images[i]);
    
    images[i].onmouseover = swap_map_image;
    images[i].onmouseout  = swap_map_image;
  }
}
