// Testo scorrevole

var UpdateInterval = 20;
var PixelPerInterval = 2;
var scrollerInterval;
var scroll_max;

// funzione di partenza scroll da dx a sx
function start_scroll_right() {
	scrollerInterval = setInterval(scroll_left, UpdateInterval);
}

// funzione di scroll di tot pixel da dx a sx
function scroll_left() {
// Verifica se si e' arrivati alla fine dello scroll
	scroll_max = document.getElementById('scroller').scrollLeft;
	document.getElementById('scroller').scrollLeft += PixelPerInterval;
	if(document.getElementById('scroller').scrollLeft == scroll_max)
	{
		document.getElementById('scroller').scrollLeft = 0;
		stop_scrolling();
		setTimeout('start_scroll_right()',1250);
	}
}

// funzione di partenza scroll da sx a dx
function start_scroll_left() {
	scrollerInterval = setInterval(scroll_right, UpdateInterval);
}

// funzione di scroll di tot pixel da sx a dx
function scroll_right() {
	document.getElementById('scroller').scrollLeft -= PixelPerInterval;
}

// funzione di interruzione scroll ciclico
function stop_scrolling() {
	clearInterval(scrollerInterval);
}


// Data Corrente
var Dta = new Date();

// Giorno corrente del mese corrente
var gg = Dta.getDate();

// Giorno della settimana corrente (codificato 0 .. 6)
var sc = Dta.getDay();
// Giorno della settimana corrente (Lun .. Dom)
var ss = new Array ("Dom","Lun","Mar","Mer","Gio","Ven","Sab"); 


// Mese corrente (codificato 0 .. 11)
var mc = Dta.getMonth();
var mc_oggi = mc;
// Mese corrente (Gennaio .. Dicembre)
var mm = new Array ("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");

// Anno corrente
var aaaa = Dta.getFullYear();
var aaaa_oggi = aaaa;

// Stampa Mese e Anno correnti (appena viene caricata la pagina)
stp_mm_aaaa(aaaa_oggi, mc_oggi);


// Stampa Calendario del mese in corso
stp_Calendario(aaaa_oggi, mc_oggi);


// alert(document.getElementsByTagName('table')[2].getElementsByTagName('td')[7].innerHTML);
// alert(gg_mese(aaaa,mc));


// ------- FUNZIONI --------


// Funzione per stampare i giorni nel calendario per il mese selezionato
function stp_Calendario(aaaa, mc)
{
// Estrae il numero di giorni del mese selezionato
num_gg=gg_mese(aaaa, mc);
// Calcola il giorno della settimana che č inizio del mese 
gg_c = new Date(aaaa,mc,01,00,00,00);
gg_week = gg_c.getDay();
// Compila il calendario cancellando le celle non utili
g_c = 1;
for(c=1;c<=42;++c)
    {
    if(gg_week == 0) // Domenica (cancella le celle prima)
	while(c < 7)
	    {
	    stp_cell_cal(c, "&nbsp;");
	    ++c;
	    if(c == 7)
		{
		stp_cell_cal(c, g_c); // Stampa il primo giorno utile
		++g_c;
		++c;
		}
	    }
    else // Altri giorni (cancella le celle prima)
	while(c < gg_week)
	    {
	    stp_cell_cal(c, "&nbsp;");
	    ++c;
	    if(c == gg_week)
		{
		stp_cell_cal(c, g_c); // Stampa il primo giorno utile
		++g_c;
		++c;
		}
	    }
    if(g_c <= num_gg) // Stampa i giorni utili
	{
	stp_cell_cal(c, g_c);
	++g_c;
	}
    else
	{
	stp_cell_cal(c, "&nbsp;");
	}
    }
}


// Funzione per stampare nelle celle della tabella del calendario (giorno - link - evidenze)
function stp_cell_cal(pos, str)
{
// Controlla che il giorno da stampare abbia un evento

// Struttura Record a campi variabili (separati dal carattere ";")
// "anno;mese;n_gg;giorni;luogo;descrizione evento;''Titolo Corso / Convegno / Evento'';link al file;.... Crediti ...;Docenti: ...."

// Estrae gli eventi e conta quanti sono
var rec_eventi = new Array();

rec_eventi = db_eventi.split(ER);

num_eventi = rec_eventi.length - 1;

// Prepara i campi del record Eventi
fld_eventi = new Array();

if(str != "&nbsp;") // Se stampo i giorni utili della settimana
// Analizza i record eventi per estrarre quelli del periodo selezionato
	for(e=0; e<=num_eventi; ++e)
		{
// Estrae i campi
		fld_eventi = rec_eventi[e].split(";");
		fld_anno = fld_eventi[0]; // Anno
		fld_mese = fld_eventi[1]; // Mese
		fld_n_gg = fld_eventi[2]; // Numero giorni evento
// Estrae i giorni dell'evento
		gg_pos = 3;
		flg_link = 0;
		for(e_g=1; e_g<=eval(fld_n_gg); ++e_g)
			{
// Se la data evento corrisponde con la cella giorno calendario setta flg_link = 1 e evidenzia il link (uscendo dal ciclo)
			if(eval(aaaa) == eval(fld_anno) && eval(mc + 1) == eval(fld_mese) && eval(str) == eval(fld_eventi[gg_pos]))
				{
				flg_link = 1;
				break;
				} 		
			++gg_pos;
			}
		if(flg_link == 1)
			break;
		}
else
// Se i giorni da stampare non fanno parte del mese ("&nbsp;") -> definisco flg_link = 0
	flg_link = 0;

// Se flg_link == 1 evidenzia link
if(flg_link == 0)
	{
// Evidenza il giorno della data corrente
	if(str == gg && mc == mc_oggi && aaaa == aaaa_oggi)
	    str="<p style='color:green; background:white;'><b>" + str + "</b></p>";
	else
	    str="<p style='color:white;'>" + str + "</p>";
	document.getElementsByTagName('table')[2].getElementsByTagName('td')[6 + pos].innerHTML = str;
	}
else
	{
// Evidenza il giorno della data corrente
// Evidenzia i link inserendo il riferimento ai giorni interessati
	if(str == gg && mc == mc_oggi && aaaa == aaaa_oggi)
		{
		document.getElementsByTagName('table')[2].getElementsByTagName('td')[6 + pos].innerHTML = "<a href=\"javascript:eventi_giorno('html/eventi_giorno.html'," + "'" + eval("'giorno_" + aaaa + "_" + mc + "_" + str + "'") + "');\"><p style='color:blue; background:white;'><b><u>" + str + "</u></b></p></a>";
	    }
	else
		document.getElementsByTagName('table')[2].getElementsByTagName('td')[6 + pos].innerHTML = "<a href=\"javascript:eventi_giorno('html/eventi_giorno.html'," + "'" + eval("'giorno_" + aaaa + "_" + mc + "_" + str + "'") + "');\"><p style='color:#66FFFF;'><b><u>" + str + "</u></b></p></a>";
	}
}


// Funzione per incrementare il mese se si preme il bottone '+'
function inc_mc()
{
if(mc == 11)
    {
    mc=0; ++aaaa;
    }
else
    ++mc;
stp_mm_aaaa(aaaa, mc);
stp_Calendario(aaaa, mc);
}


// Funzione per decrementare il mese se si preme il bottone '-'
// Si puņ tornare indietro al max di un mese dal periodo della data in corso
function dec_mc()
{
    function dec()
    {
    if(mc == 0)
	{
	mc=11; --aaaa;
	}
    else
	--mc;
    }

diff_tmp = diff_dta(aaaa, mc, aaaa_oggi, mc_oggi);

if( diff_tmp >= -27)
    dec();
stp_mm_aaaa(aaaa, mc);
stp_Calendario(aaaa, mc);
}


// Funzione per stampare le indicazioni del Mese e dell'Anno selezionati
function stp_mm_aaaa(aaaa, mc)
{
// Mese
document.getElementById('Mese').innerHTML=mm[mc];
// Anno
document.getElementById('Anno').innerHTML=aaaa;
}

// Funzione per calcolare i giorni del mese selezionato (primo del mese successivo "meno" primo del mese corrente)
function gg_mese(aaaa, mc)
{
if ((mc == 11) || (mc == 0))
    {
    return 31;
    }
else
    {
    dta_c = new Date(aaaa,mc,01,00,00,00);
    dta_s = new Date(aaaa,mc + 1,01,00,00,00);
    return Math.round((dta_s - dta_c)/(1000 * 60 * 60 * 24));
    }
}


// Funzione per calcolare la differenza tra date (restituisce la differenza in giorni)
function diff_dta(aaaa_1, mc_1, aaaa_2, mc_2)
{
dta_1 = new Date(aaaa_1, mc_1,01,00,00,00);
dta_2 = new Date(aaaa_2, mc_2,01,00,00,00);
return Math.round((dta_1 - dta_2)/(1000 * 60 * 60 * 24));
}