
var stack = new Array();
var timer=0;

function MenuObj(m, l) {
  this.menu = m;
  this.level = l;
}

function articlePopup(id)
{
  mywin = window.open("/popuparticle.html?id=" + id, "poparticle", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=450,height=450");
  mywin.window.focus();
}

function dropDown(menu, source)
{
  var my_menu = document.getElementById(menu);
  showBox(my_menu, source);
}

function flyOut(menu) {
  var my_menu = document.getElementById(menu);
  my_menu.style.top = my_menu.parentNode.offsetHeight/2 - my_menu.offsetHeight/2 + 'px';
  showBox(my_menu);
}

function showBox(my_menu, source) {

  var catcher;
  if(!(catcher = document.getElementById('catcher'))) {
    catcher = document.createElement('div');
    catcher.id = 'catcher';
    catcher.onmouseover = hideStart;
    document.body.appendChild(catcher);
  }

  my_menu.style.left = (source.offsetLeft - (my_menu.offsetWidth - source.offsetWidth)/2) + "px";
  catcher.style.visibility = 'visible';
  catcher.style.width = document.body.clientWidth;
  catcher.style.height = document.body.clientHeight;

  level = 0;
  var node = my_menu.parentNode;
  while (node.nodeName == "LI") {
    node = node.parentNode;
    if(node.nodeName == "UL")
      node = node.parentNode;
    level++;
  }
  
  hideChildren(level);

  my_menu.style.visibility = 'visible';
  my_menu.onmouseover = hideStop;

  stack.push(new MenuObj(my_menu, level));
}

/* Hide everything in stack until level == level  */
function hideChildren(level)
{
  var m;
  while (stack.length && stack[stack.length-1].level >= level) {
    m = stack.pop();
    m.menu.style.visibility = 'hidden';
  }
  hideStop();
}

function hideStart(e) {
  timer = setTimeout(hideAll, 1000);
}

function hideStop() {
  if(timer) {
    clearTimeout(timer);
    timer = 0;
  }
}

function hideAll() {
  hideChildren(0);
  var catcher = document.getElementById('catcher');
  catcher.style.visibility = 'hidden';
}

var spinner = document.getElementById("spinner");
var offsetIn, offsetOut, elmInS, elmOutS, opa, inOpacity, outOpacity;

function absTop(element) { return element.offsetTop + ((element.offsetParent) ? absTop(element.offsetParent) : 0); }
function absLeft(element) { return element.offsetLeft + ((element.offsetParent) ? absLeft(element.offsetParent) : 0); }

function setOpacity(es, opacity) {
  es.opacity = (opacity / 100);
  es.MozOpacity = (opacity / 100);
  es.KhtmlOpacity = (opacity / 100);
  es.filter = "alpha(opacity=" + opacity + ")";
}

function doFadeIn() { setOpacity(elmInS, inOpacity++); }

function fadeIn(elm) {
  elmInS = elm.style;
  setOpacity(elmInS, 0);
  elmInS.visibility='visible';
  var timer=0;
  inOpacity = 0;
  for(var i=0; i < 100; i++)
    setTimeout(doFadeIn, 10 * timer++);
}

function doFadeOut() { setOpacity(elmOutS, outOpacity--); }

function fadeOut(elm) {
  elmOutS = elm.style;
  var timer=0;
  outOpacity = 100;
  for(var i=0; i < 100; i++)
    setTimeout(doFadeOut, 10 * timer++);
  setTimeout( function() { elmOutS.visibility='hidden'; }, 10 * timer);
}

var currentPanelNr;
var currentPanel;
var inProgress = false;

function slideFade(dir) {
  opa++;
  offsetIn += dir;
  offsetOut += dir;
  setOpacity(elmInS, opa);
  setOpacity(elmOutS, 100-opa);
  elmOutS.top = offsetOut + 'px';
  elmInS.top = offsetIn + 'px';

/*
  if(opa < 100) {
   window.clearInterval(slideInterval);
    slideInterval = null;
  } */
}

var orig;

function slidePanels(elm1,elm2,dir) {
  elmInS = elm1.style;
  elmOutS = elm2.style;
  setOpacity(elmInS, 0);
  elmInS.visibility = 'visible';
  offsetIn = orig + 100 * -dir;
  offsetOut = orig;
  opa = 0;
  var i, timer=0;
  for(i=0; i < 100; i+=1)
    setTimeout( function() { slideFade(dir); }, 6 * timer++);
  setTimeout( function() { elmOutS.visibility = 'hidden';  inProgress = false; }, 6 * timer);
  return elm1;
}

