// Ticker.js v 0.1
// Rick Hurst December 2005
// rick@netsight.co.uk
// creates a news ticker from links in an unordered list
// ul must be within a div with an id of "tickersource"

var brDOM = (document.getElementById) ? true : false; // true if browser supports DOM

var chrInterval = 20;

var itemInterval = 4000;

var arrTextItems = new Array();

var arrHrefs = new Array();
var listContainer;
var listItems;
var currentItem = -1;
var currentLength = 0;
var currentSubstr;
var currentFullText;
var stub;
var substringCount;

var moveNextItem = true;
var itemCount;
var outputContainer;


// populate item text and href arrays with contents of list items
function loadArrays(){
  for (var i=0; i < listItems.length; i++){
    arrTextItems[i] = listItems[i].getElementsByTagName("A")[0].innerHTML;
    arrHrefs[i] = listItems[i].getElementsByTagName("A")[0].href;
  } 
}

function elementsPresent(){
  if (!document.getElementById("tickersource")){
    //alert("no tickersource");
    return false;
  } else {
     if (!document.getElementById("tickersource").getElementsByTagName("LI")){
       return false ;
     } else {
       if(document.getElementById("tickersource").getElementsByTagName("LI").length > 0){
         return true;
       }
     }
  }
}


function initTicker() {

   if (brDOM){
     if (elementsPresent()){
	     listContainer = document.getElementById("tickersource");
	     outputContainer = document.getElementById("cover");
	     listItems = listContainer.getElementsByTagName("LI");
	     itemCount = (listItems.length);
	   
	     loadArrays();
	     
		  // replace source list HTML with an empty link to use as a stub

		  if (document.getElementById) {	

			     outputContainer.innerHTML = '<a id="item" href="#"></a>';
			     stub = document.getElementById("item");

	           doNext();   	

		  }
		} else {
		  // do nothing - this will only work in DOM supporting browsers
		  // non dom browsers will get the list already there
		  // (unless you put something here)
		}
	}

}



function doNext(){
  if (moveNextItem) {
    
    // check to see if we are on the last item
    if (currentItem == (itemCount -1)){
      
      // if we were, set to zero
      currentItem = 0;
    } else {
      
      // otherwise increment
      currentItem ++;
    }
    
    // set the href of the link to the current url
  	 stub.href = arrHrefs[currentItem];
  	 currentFullText = arrTextItems[currentItem].replace(/&quot;/g,'"');
  	 
  	 // reset the substring count;
  	 substringCount = 0;
  } else {
    
    // increment the substring count;
    substringCount ++;
    
    // set the text to be printed
    currentSubstr = currentFullText.substring(0,substringCount);
    doPrint();
  }
  
  // if we've reached then of the current text, set up variables
  // and timer to move onto the next text item, other wise loop
  // back to print next letter
  if (substringCount == currentFullText.length){
    moveNextItem = true;
    setTimeout("doNext()", itemInterval);
  } else {
    moveNextItem = false;
    setTimeout("doNext()", chrInterval);
  }
  
}

// prints current text to screen
function doPrint(){
  stub.innerHTML = currentSubstr;
}


// start the ticker
window.onload = function(){initTicker()};
