// Avvisi scorrevoli in una tabella
// Stefano Bargioni, 2007-08-06

// testo
var message = new Array();
 	message[0] = "VISITE GUIDATE<br>\
<br>\
	Queste le nuove date:<br>\
	24 febbraio ore 15:30-16:30  studenti I e II ciclo<br>\
	25 febbraio ore 11:00-12:00  dottorandi<br>\
<br>\
	15 marzo  ore 15:30-16:30  studenti I e II ciclo<br>\
	19 marzo  ore 10:30-11:30  dottorandi<br>\
<br>\
	Per prenotarsi&nbsp;&nbsp;&nbsp;&nbsp;library@pusc.it";
// eventuale link
var messagelink = new Array();
	// messagelink[0] = "http://www.pusc.it/bib/formazione.html"
	// messagelink[4] = "http://www.pusc.it/bib/formazione.html"

// priorità 1-3 (default 1) 1 = memo, 2 = utile, 3 = molto importante
var messageprio = new Array();
	messageprio[0] = 1;

// data inizio (default da subito, formato GG/MM/AAAA)
var messagestart = new Array();
	messagestart[0] = '07/02/2010';

// data fine (default per sempre, l'ultimo giorno è compreso, formato GG/MM/AAAA)
var messagestop = new Array();
	messagestop[0] = '20/03/2010'; // fino ore 24

// ----- righe qui sotto da non toccare

var text = 0;
var toggle = 1; // 1 = scorri, 0 = fermati (alcuni avvisi restano nascosti)
var timeout = 2500;
var oggi = new Date();
var timer;

for (var k=0; k < message.length;) { // date di default ed eliminazione dei messaggi fuori data
	if (!messagestart[k]) { messagestart[k] = new Date(); messagestart[k].setHours(0); messagestart[k].setMinutes(0); messagestart[k].setSeconds(0); } // inizio di oggi
	else {
		var gma = new Array();
		gma = messagestart[k].split('\/');
		messagestart[k] = new Date(); messagestart[k].setFullYear(gma[2],gma[1]-1,gma[0]);
	}
	if (!messagestop[k]) { messagestop[k] = new Date(); messagestop[k].setFullYear(2222,11,31); } // ~ infinito
	else {
		var gma = new Array();
		gma = messagestop[k].split('\/');
		messagestop[k] = new Date(); messagestop[k].setFullYear(gma[2],gma[1]-1,gma[0]);
		messagestop[k].setHours(23); messagestop[k].setMinutes(59); messagestop[k].setSeconds(59);  // fine giornata
	}
	if (messagestart[k] > oggi || messagestop[k] < oggi) {
		message.splice(k,1);
		messagestart.splice(k,1);
		messagestop.splice(k,1);
	}
	else k++;
}

function changeText(v) {
	var t = document.getElementById('tbavvisi'); // t.rows.length sono le righe
    if (message.length == 0) {
		document.getElementById('avvisi').innerHTML = 'Nessun avviso';
	    // document.getElementById('avvisi').style.display='none'; // nasconde la tabella se risultasse vuota
    	return true;
    }

	document.getElementById('navvisi').innerHTML = message.length+' avvisi';

    var j=v;
    for (i=0; i<t.rows.length; i++) {
    	if (!message[j]) message[j]='&nbsp;'; // riga vuota
		t.rows[i].cells[0].innerHTML = show_message(j);
		// if (messagestart[j] && messagestop[j]) t.rows[i].cells[0].title = messagestart[j]+' - '+messagestop[j];
    	j++; if (v != 0 && j == message.length) j = 0;
    }

    if (message.length > t.rows.length) {
		v++; 
		document.getElementById('v').innerHTML = v;
		if (v == message.length) v = 0;
		if (toggle) {
			timer = setTimeout("changeText("+v+")", timeout);
			window.timer; // altro giro
		}
	}
	else document.getElementById('toggle').style.display='none'; // nasconde il toggle che sarebbe inutile
}

// Multiple onload function created by: Simon Willison: http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
	setTimeout('start_stop(1)',10*timeout);
	changeText(0);
});

function prio(p) {
	if (!p) p=1;
	switch (p) {
		case 1:
		  return '<span style="color: #2a5d90; font-weight: bold">&loz;</span>';
		  break;
		case 2:
		  return '<span style="color: #2a5d90; font-weight: bold">&loz;</span>';
		  break;
		case 3:
		  return '<span style="color: #2a5d90; font-weight: bold">&loz;</span>';
		  break;
		default:
		return '?';
	}
}

function show_message(i) {
		var t = i+1;
		var s = '('+t+'/'+message.length+') ';
		var p = prio(messageprio[i]);
		var m = message[i];
		if (messagelink[i]) {
			m = '<a href="'+messagelink[i]+'">'+m+'</a>';
		}
		return p+' '+m+' '; // +messagestart[i]+' '+messagestop[i]; // test
		return '<ul><li>'+p+' '+m+' '; // +messagestart[i]+' '+messagestop[i];
}

function start_stop(v) {
	var v = v.innerHTML;
	switch (toggle) {
		case 1: // stop
			toggle=0; window.clearTimeout(timer);
			document.getElementById('startStop').value='Start';
			break;
		case 0: // start
			toggle=1; 
			setTimeout('start_stop(1)',10*timeout);
			document.getElementById('startStop').value='Stop';
			changeText(v);
			break;
	}
}
