// News scorrevoli con dati presi da file XML

function Notizia(data, titolo, testo, url) {	// def del record
	this.data = data;
	this.titolo = titolo;
	this.testo = testo;
	this.url= url;
}

var notizie = new Array();
var objDivNews, objTicker, objTkData, objTkTitolo, objTkTesto;
var scrolledPixels, altezzaDivNews, altezzaTicker, ixNotizia, totNotizie;
var tmrDelayScroll, tmrScrollNews
var ritardoNews = 0; //in millisec
var ritardoScroll = 50; //in millisec

function loadNews(objFileXML) {
var objXMLrecords
	objXMLrecords = objFileXML.getElementsByTagName("notizia");
	for (var j = 0; j<objXMLrecords.length; j++) {
    notizie[j] = new Notizia();
    try { // data è facoltariva
      notizie[j].data = objXMLrecords[j].getElementsByTagName("data")[0].childNodes[0].nodeValue
    } catch(e) {
      notizie[j].data = "";
    }
    notizie[j].titolo = objXMLrecords[j].getElementsByTagName("titolo")[0].childNodes[0].nodeValue
    notizie[j].testo = objXMLrecords[j].getElementsByTagName("testo")[0].childNodes[0].nodeValue
    try { // url è facoltarivo
      notizie[j].url = objXMLrecords[j].getElementsByTagName("url")[0].childNodes[0].nodeValue
    } catch(e) {
      notizie[j].url = "";
    }
  }
}

function creaNewsDOM(objWrapNews){
var strDOM;
	strDOM = '<div id="DivNews">' + '\n' +
			  '<div id="Ticker"> <a href="#" onmouseover="bloccaNews()" onmouseout="sbloccaNews()" onclick="vaiAllaNews()">' + '\n' +
					'<div id="TkData">Data</div>' + '\n' +
					'<div id="TkTitolo">Titolo</div>' + '\n' +
					'<div id="TkTesto">Testo</div></a>' + '\n' +
				'</div>' + '\n' +
			'</div>';
	objWrapNews.innerHTML = strDOM;
}

function initNews(objWrapNews, objFileXML){
	loadNews(objFileXML);
	creaNewsDOM(objWrapNews);
	objDivNews = document.getElementById("DivNews");
	objTicker = document.getElementById("Ticker");
	objTkdata = document.getElementById("TkData");
	objTkTitolo = document.getElementById("TkTitolo");
	objTkTesto = document.getElementById("TkTesto");
	objDivNews.style.height = getAlt(objWrapNews) + "px";
	objDivNews.style.width = getLarg(objWrapNews) + "px";
	altezzaDivNews = getAlt(objDivNews);
	totNotizie = notizie.length;
	ixNotizia = 0;
	rollNews()
}

function rollNews() {
	mostraNews(ixNotizia);
	ixNotizia ++;
	if (ixNotizia == totNotizie) {
		ixNotizia = 0;
	}
} 

function mostraNews(ixNotizia){
	objTkdata.innerHTML = notizie[ixNotizia].data;
	objTkTitolo.innerHTML = notizie[ixNotizia].titolo;
	objTkTesto.innerHTML = notizie[ixNotizia].testo;
	(notizie[ixNotizia].data) ? objTkdata.style.display = "block" : objTkdata.style.display = "none";
	(notizie[ixNotizia].titolo) ? objTkTitolo.style.display = "block" : objTkTitolo.style.display = "none";
	(notizie[ixNotizia].testo) ? objTkTesto.style.display = "block" : objTkTesto.style.display = "none";
	scrolledPixels = 6;
	altezzaTicker = getAlt(objTicker);
	objTicker.style.top = scrolledPixels + "px";
	objTicker.style.visibility = "visible";
	tmrDelayScroll = setTimeout('delayScroll()', 1000);
}

function delayScroll(){
	clearTimeout(tmrDelayScroll);
	tmrScrollNews = setInterval('scrollNews()', ritardoScroll);
}

function scrollNews() {
	scrolledPixels -= 1;
	objTicker.style.top = scrolledPixels + "px";
	if (-scrolledPixels > altezzaTicker + 10) {
		clearInterval(tmrScrollNews); // blocca l'exec di scrollNews()
		objTicker.style.visibility="hidden";
		rollNews();
	}
}

function vaiAllaNews(){
var ix
	ix = ixNotizia - 1;
	if (ix == -1) {
		ix = totNotizie - 1;
	}
	window.location.href = notizie[ix].url;
/*
	objQQ = document.getElementById("info") // togliere nella versione finale
	objQQ.innerHTML = "(ix:" + (ix) + ")  " // togliere nella versione finale
	objQQ.innerHTML += notizie[ix].url; // togliere nella versione finale
*/
}

function bloccaNews(){
	clearInterval(tmrScrollNews);
	clearTimeout(tmrDelayScroll);
}

function sbloccaNews(){
	tmrScrollNews = setInterval('scrollNews()', ritardoScroll);
}

function getAlt(obj) {
var st;
	if (obj.currentStyle) {
		st = parseInt(obj.currentStyle.height);
		if (isNaN(st)) {
			st = objTicker.offsetHeight;
		}
		return st;
	}
	if (window.getComputedStyle) {
		st = document.defaultView.getComputedStyle(obj,null).getPropertyValue("height");
		return parseInt(st);
	}
	return null;
}

function getLarg(obj) {
var st;
	if (obj.currentStyle) {
		st = parseInt(obj.currentStyle.width);
		if (isNaN(st)) {
			st = objTicker.offsetWidth;
		}
		return st;
	}
	if (window.getComputedStyle) {
		st = document.defaultView.getComputedStyle(obj,null).getPropertyValue("width");
		return parseInt(st);
	}
	return null;
}
