window.LB || (LB={});
LB.slideshow = function(selector, showFor, fadeLength, fadeSteps){
  var doit = function(container, showFor, fadeLength, fadeSteps){
    showFor = showFor ? showFor * 1000 : 5000;
    fadeLength = fadeLength ? fadeLength * 1000 : 1000;
    fadeSteps || (fadeSteps = 10);
    var cur = 0, nex, i, nodes = [], doFade, setOp, doShow, step = 1, maxHeight = 0;
    for (i = 0; i < container.childNodes.length; i++) {
      if (container.childNodes[i].nodeType == 1) {
        nodes[nodes.length] = container.childNodes[i];
        container.childNodes[i].style.visibility = 'hidden';
        container.childNodes[i].style.zoom = 1;
        if(container.childNodes[i].clientHeight > maxHeight) maxHeight = container.childNodes[i].clientHeight;
      }
    }
    nodes[cur] && (nodes[cur].style.visibility = 'visible'); // make first child visible regardless
    if (nodes.length < 2) 
      return; // bail if one or zero children
    setOp = function(el, op){
      el.style.opacity = op / 100;
      el.style.filter = 'alpha(opacity=' + Math.round(op) + ')';
      op && (el.style.visibility = 'visible');
    };
    doFade = function(){
      setOp(nodes[nex], 100 / fadeSteps * step);
      if (step++ < fadeSteps) 
        setTimeout(doFade, fadeLength / fadeSteps);
      else {
        step = 1;
        setOp(nodes[cur], 0);
        cur = nex;
        setTimeout(doShow, showFor);
      }
    };
    doShow = function(){
      nex = (cur + 1) % nodes.length;
      nodes[nex].style.zIndex = 100;
      nodes[cur].style.zIndex = 10;
      doFade();
    };
    container.style.height = maxHeight + 'px';
    setTimeout(doShow, showFor);
  }
  
  var selType = selector.charAt(0);
  selector = selector.substr(1);
  if('.'==selType) {
    var containers = [];
    if(document.getElementsByClassName) containers = document.getElementsByClassName(selector);
    else {
      var all = document.getElementsByTagName('*');
      for(var i=all.length; --i>=0;)
        if(all[i].className && all[i].className.indexOf(selector)!=-1)
          containers.push(all[i]);
    }
    for(var i=containers.length; --i>=0;) doit(containers[i],showFor,fadeLength,fadeSteps);
  } else
  if('#'==selType) {
    var container = document.getElementById(selector);
    container && doit(container,showFor,fadeLength,fadeSteps);
  } else alert('LB.slideshow says: bad selector type.')
};
