
function NewsFader(newslistid) {

  /* These three values determine the speed and granularity of the transitions */
  var waitTime = 3000;
  var fadeTime = 25;
  var fadeSteps = 5;


  /* Create the element where the text is displayed */
  var textelem = document.createElement("div");
      textelem.setAttribute("class", "newsTicker");

  /* Find the newslist */
  var elem = document.getElementById(newslistid);
      elem.appendChild(textelem);
      elem.style.marginLeft = "0";

  /* Get the array of newsitems */
  var items = elem.getElementsByTagName("li");
  /* Nicely hide them */
  for (i = 0; i < items.length; i++)
      items[i].style.display = 'none';

  var fadeProgress = fadeSteps;
  var currentStory = 0;

  this.startFading = function() {
    textelem.innerHTML = items[0].innerHTML;
    if (items.length > 1) fadeNews();
  }

  var fadeNews = function() {
    /* Item is invisible, quickly switch to next news item */
    if (fadeProgress == 0)
      textelem.innerHTML = items[++currentStory % items.length].innerHTML;

    fadeProgress++;

    if (fadeProgress < fadeSteps) {
      setTimeout(fadeNews, fadeTime);
    } else {
      fadeProgress = -fadeSteps;
      setTimeout(fadeNews, waitTime);
    }

    prg = Math.abs(fadeProgress);
    textelem.style.opacity = (prg / fadeSteps);
    textelem.style.filter = 'alpha(opacity=' + (prg / fadeSteps) * 100 + ')';

    return true;
  }

}

var fader = new NewsFader("news"); 
fader.startFading(); 

