// millisecondi di attesa per ciascuna notizia
// 2000 = 2 sec.
var DELAY = 2000; 

var xmlDom = null, nodeRoot = null;
var itemLength = 0, itemIndex = 0;

// URL del file XML
var sXmlUrl = "news/news.xml";


function InitTicker() {

  // istanzio DOM XML
  if (window.ActiveXObject) {
    xmlDom = new ActiveXObject("Microsoft.XMLDOM");
  } else if (document.implementation &&
      document.implementation.createDocument) {
    xmlDom = document.implementation.createDocument("", "doc", null);
  }

  // SE DOM XML è disponibile
  if (typeof xmlDom != "undefined") {
    // scrivo il box
  //  document.write('<div id="divBox"></div>');
    // leggo file XML
    xmlDom.load(sXmlUrl);
  }
  
  // avvio il News Ticker
  if (window.ActiveXObject) {
    XmlReady();
  } else if (typeof xmlDom != "undefined") {
    xmlDom.onload = StartTicker;
  }  
}


// Verifica che il file XML sia stato letto.
function XmlReady(){
  // SE ho ultimato la lettura del file XML
  if (xmlDom.readyState == 4) {
    // avvio visualizzazione
    StartTicker();
  } else {
    // verifico ogni 10 ms
    window.setTimeout("XmlReady()", 10);
  }
}


// Inizializza il news ticker.
function StartTicker(){

  // recupero il nodo principale (news)
  nodeRoot = xmlDom.getElementsByTagName("news")[0];

  // imposto il n. totale di notizie disponibili
  itemLength = nodeRoot.childNodes.length;

  // mostro la prima notizia
  WriteNews();

  // imposto esecuzione di WriteNews()
  // ogni DELAY millisecondi
  window.setInterval("WriteNews();", DELAY);
}


// Scrive le news nel box.
function WriteNews() {

  var sNews = '';
  var nodeItem = nodeRoot.childNodes[itemIndex];

  // SE è presente l'attributo "url"
  if (nodeItem.getAttribute("url") != null) {
    sNews = '<a href="' + nodeItem.getAttribute("url") + '"';
    // SE è presente l'attributo "target"
    if (nodeItem.getAttribute("target") != null) {
      sNews += ' target="' + nodeItem.getAttribute("target") + '"';
    }
    sNews += '>';
  }

  // inserisco testo
  sNews += nodeItem.firstChild.nodeValue + " (" + (itemIndex + 1) + " di " + itemLength + ")";

  // SE era presente l'attributo "url"
  if (nodeItem.getAttribute("url") != null) {
    sNews += '</a>';
  }

  // sostituisco il contenuto del box
  document.getElementById("divBox").innerHTML = sNews;
  // incremento posizione notizia
  itemIndex++;
  // SE era l'ultima notizia
  if (itemIndex > itemLength - 1) {
    itemIndex = 0; // torno alla prima
  }
}
