var faders = new Array();

function fadeIn(obj) {
  var fader = new Fader(obj);
  var pos = faders.push(fader);
  fader.index = pos - 1;
  fader.start();
  return;
}

function Fader(obj) {
  this.children = new Array();
  this.position = 0;
  this.fadeEvent = fadeEvent;
  this.start = start;
  this.timer = undefined;
  this.index = undefined;

  var i;
  for (i = 0; i < obj.childNodes.length; i++) {
    if (obj.childNodes[i].style) {
      this.children.push(obj.childNodes[i]);
      obj.childNodes[i].style.opacity = 0;
      obj.childNodes[i].style.display = 'none';
    }
  }
  obj.style.display = 'block';
}

function start() {
  this.timer = setTimeout("fadeEvent(" + this.index + ")", 100);
}

function fadeEvent(index) {
  var self = faders[index];
  if (self.position < self.children.length) self.position++;
  var i;
  var previousopacity = 0.5;
  for (i = 0; i < self.position; i++) {
    var child = self.children[i];
    var opacity = Number(child.style.opacity);
    if (opacity < 1 && previousopacity >= 0.5) {
      child.style.display = 'block';
      child.style.opacity = opacity + 0.1;
    }
    previousopacity = opacity + 0.1;
  }
  if (self.children[self.children.length - 1].style.opacity >= 1) return;
  else this.timer = setTimeout("fadeEvent(" + self.index + ")", 100);
}
