var delay = 3; /* seconds before the ticker starts ticking */
var speed = 50 /* speed of ticker, smaller is faster */

var position = 0;
var ticking;

function init() {

  /* add fade bars */
  var ticker = document.getElementById("ticker");
  var ticker_top = document.createElement("div");
  
  if ( ticker != null )
	  {
	  ticker_top.className = "ticker_top";
	  var ticker_bottom = document.createElement("div");
	  ticker_bottom.className = "ticker_bottom";
	  ticker.appendChild(ticker_top);
	  ticker.appendChild(ticker_bottom);

	  /* kill a horrible flickering select bug in Fx1.0 */
	  selects = document.getElementsByTagName("select");
	  for (i=0;i<selects.length;i++) {
		addEvent(selects[i], 'focus', tick_pause);
		addEvent(selects[i], 'blur', tick);
	  }

	  /* clone the list to get rid of whitespace near the end of the tick cycle */
	  list = document.getElementById("ticker_list");
	  cloned_list_elements = list.cloneNode(true).getElementsByTagName("li");
	  cloned_length = cloned_list_elements.length;
	  for (i=0;i<cloned_length;i++) {
		list.appendChild(cloned_list_elements[0]);
	  }

	  ticker_links = document.getElementById("ticker_list").getElementsByTagName("a");
	  for (i=0;i<ticker_links.length;i++) {
		addEvent(ticker_links[i], 'mouseover', tick_pause);
		addEvent(ticker_links[i], 'mouseout', tick);
	  }
	  ticking = window.setTimeout("tick()", (delay * 1000));
  }
}

function tick() {
  clearTimeout(ticking); /* incase two timeouts have managed to start somehow */
  list = document.getElementById("ticker_list");
  list_items = list.getElementsByTagName("li");
  if ( (list.offsetHeight / 2) < -position ) {
    /* reset the position and the scrolling of the document incase someones tabbed through */
    position = 0;
    document.getElementById("ticker").scrollTop = 0;
    ticking = window.setTimeout("tick()", 0);
  }
  else {
    list.style.top = position+"px";
    position--;
    ticking = window.setTimeout("tick()", speed);
  }
}

function tick_pause() {
  clearTimeout(ticking);
}

function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  }
  if (obj.addEventListener) {
    obj.addEventListener( type, fn, false );
  }
  else { }
}

addEvent(window, 'load', init);