var m=0;
var a=0;
var codiceTabella;
var evento;
var dataAttuale=1;
var oggi = new Date();
var anno = oggi.getFullYear(); // restituisce l'anno utilizzando 4 cifre
var mese = oggi.getMonth() + 1; //inizia da 0, quindi aggiungo 1 
var giorno = oggi.getDate(); // inizia da 1 ->giorno del mese es:1,2,3,4,....
var trovaGiornoAtt;
var codiceGiornoAtt;
var primodelmese;
var giorniDelMese;
var gSett;

function cambiaIndice(jump)
{
	m=m+jump;
	if(mese+m == 0)
	{
		mese=12;
		a--;
		m=0;
	}
	if(mese+m == 13)
	{
		mese=1;
		a++;
		m=0;
	}
	if(mese+m != oggi.getMonth() +1 || anno+a != oggi.getFullYear())
		dataAttuale = 0;
	else
		dataAttuale = 1;
	disegna_tabella(mese+m,anno+a);
}

function getGiorno(data)
{
	var parti = data.split('-');
	if(parti[2].charAt(0)=='0') // comincia con 0, quindi do la seconda cifra
		return parseInt(parti[2].charAt(1));
	return parseInt(parti[2]);
}

function getMese(data)
{
	var parti = data.split('-');
	if(parti[1].charAt(0)=='0') // comincia con 0, quindi do la seconda cifra
		return parseInt(parti[1].charAt(1));
	return parseInt(parti[1]);
}

function getAnno(data)
{
	var parti = data.split('-');
	return parseInt(parti[0]);
}

function cercaEvento(gn,ms,an)
{
	var stringa="";
	for(var i=0; document.getElementById('listaEventi').childNodes[0].childNodes[i]; i++)
	{
		if(document.getElementById('listaEventi').childNodes[0].childNodes[i].tagName=="DT")
		{
			stringa = document.getElementById('listaEventi').childNodes[0].childNodes[i].innerHTML;
			if(getGiorno(stringa) == gn && getMese(stringa) == ms && getAnno(stringa) == an)
				return stringa;
		}
	}
	return "";
}

function scriviEvento(dt)
{
	var cerca="";
	var codice="";
	
	for(var i=0; document.getElementById('listaEventi').childNodes[0].childNodes[i]; i++)
	{
		cerca = document.getElementById('listaEventi').childNodes[0].childNodes[i].innerHTML;
		if(cerca == dt)
		{
			codice+="<h1 class=\"titoloEvento\">"+document.getElementById('listaEventi').childNodes[0].childNodes[i].innerHTML+"</h1>";
			codice+="<h2>"+document.getElementById('listaEventi').childNodes[0].childNodes[i+1].innerHTML+"</h2>";
			codice+="<p>Luogo: "+document.getElementById('listaEventi').childNodes[0].childNodes[i+2].innerHTML+"</p>";
			codice+="<p>Descrizione: "+document.getElementById('listaEventi').childNodes[0].childNodes[i+3].innerHTML+"</p>";
			for(var j=i+4; document.getElementById('listaEventi').childNodes[0].childNodes[j] && 
				document.getElementById('listaEventi').childNodes[0].childNodes[j].tagName != 'DT';j+=2)
			{
				if(document.getElementById('listaEventi').childNodes[0].childNodes[j].innerHTML != "")
				{
					codice+="<img src=\""+document.getElementById('listaEventi').childNodes[0].childNodes[j].innerHTML+"\"></img>";
					codice+="<p>Descrizione immagine: "+document.getElementById('listaEventi').childNodes[0].childNodes[j+1].innerHTML+"</p>";
				}
			}
			document.getElementById('contenutoEvento').innerHTML=codice;
			return;
		}
	}
}

function titolo(mese,anno) //funzione che scrive il titolo
{ 
	var Mesi = new Array(12);
	Mesi[0] = "Gennaio";
	Mesi[1] = "Febbraio";
	Mesi[2] = "Marzo";
	Mesi[3] = "Aprile";
	Mesi[4] = "Maggio";
	Mesi[5] = "Giugno";
	Mesi[6] = "Luglio";
	Mesi[7] = "Agosto";
	Mesi[8] = "Settembre";
	Mesi[9] = "Ottobre";
	Mesi[10] = "Novembre";
	Mesi[11] = "Dicembre";
	return Mesi[mese-1];
}

function annoBisestile(anno) //funzione che controlla se l'anno è bisestile o no
{ 
	if (anno % 400 == 0 || (anno % 4 == 0 && anno % 100 != 0))
		return true;
	return false;
}

function ultimo(mese,anno) //funzione che ritorna la data dell'ultimo giorno del mese
{ 
	d = new Date(anno,mese,0)
	if(mese==2)
	{
		temp = (annoBisestile(anno)) ? 29 : 28;
		return temp;
	}
	return d.getDate();
}

function segnaGiornoAttuale()
{
	trovaGiornoAtt = new RegExp(">"+giorno+"<");
	codiceGiornoAtt = " id=\"giornoAtt\">" + giorno + "<";
	codiceTabella = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
}

function segnaEventi(mese,anno)
{	
	for(var i=1; i<=giorniDelMese; i++)
	{
		evento = cercaEvento(i, mese, anno);
		if(evento != '')
		{
			var res = "";
			trovaGiornoAtt = new RegExp("class=\"fest\">"+i+"<");
			codiceGiornoAtt = "class=\"fest gEvento\"><a onclick=\"scriviEvento('"+evento+"')\" href=\"javascript:void(0)\">"+i+"<";
			res = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
			if(res == codiceTabella)
			{
				trovaGiornoAtt = new RegExp(">"+i+"<");
				codiceGiornoAtt = " class=\"gEvento\"><a onclick=\"scriviEvento('"+evento+"')\" href=\"javascript:void(0)\">"+i+"<";
				codiceTabella = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
			}
			else
				codiceTabella = res;
		}
	}
}

function segnaFestivi()
{
	if(gSett==0)
	{
		trovaGiornoAtt = new RegExp(">"+1+"<");
		codiceGiornoAtt = " class=\"fest\">" + 1 + "<";
		codiceTabella = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
	}
	
	for(var i=1 + 6 - gSett; i<=giorniDelMese; i+=7)
	{
		trovaGiornoAtt = new RegExp(">"+i+"<");
		codiceGiornoAtt = " class=\"fest\">" + i + "<";
		codiceTabella = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
		if(i != giorniDelMese)
		{
			trovaGiornoAtt = new RegExp(">"+(i+1)+"<");
			codiceGiornoAtt = " class=\"fest\">" + (i+1) + "<";
			codiceTabella = codiceTabella.replace(trovaGiornoAtt,codiceGiornoAtt);
		}
	}
}

//ATTENZIONE! I SEGUENTI CALCOLI SONO FATTI PER FAR SI CHE LA SETTIMANA VADA DA LUNEDI' ALLA DOMENICA NONOSTANTE IL PC CALCOLI DA DOMENICA A SABATO

function disegna_tabella(mese, anno) //funzione che disegna la tabella del calendario
{ 
	evento="";
	codiceTabella="";
	var i=0;
	var j=0;
	var cont=0;

	primodelmese = new Date(anno, mese -1, 1); // primo giorno del mese attuale [mese funzione 0-11]
	var month = titolo(mese,anno); //ricava il mese corrente in lettere (Gennaio, Febbraio...)
	giorniDelMese = ultimo(mese,anno); //calcola quanti giorni ha il mese corrente (30, 31, 28)
	gSett = primodelmese.getDay(); //calcola il giorno settimanale della data 1 del corrente mese
	
	codiceTabella+=("<table id=\"tabellaAgenda\"><caption>"+month+" "+anno+"</caption><thead><tr><th>"+"LUN"+"</th><th>"+"MAR"+"</th><th>"+"MER"+"</th><th>"+"GIO"+"</th><th>"+"VEN"+"</th><th class=\"fest\">"+"SAB"+"</th><th class=\"fest\">"+"DOM"+"</th></tr></thead><tbody><tr>");
  
  	if(gSett==0)
  		j=6;
  	else
  		j=gSett-1;
  		
  	for(i=0; i<j; i++)
  	{
  		codiceTabella+=("<td></td>");
  		cont++;
  	}
  		
	for (i=1; i<=giorniDelMese; i++)
	{
		codiceTabella+=("<td>"+i+"</td>");
		cont++;
		if(i!=giorniDelMese && cont%7==0)
			codiceTabella+=("</tr><tr>");
	}
	
	if(cont%7 !=0)
	{
		for(i=0; i<(7-cont%7); i++)
		{
			codiceTabella+=("<td></td>");
		}
	}
	codiceTabella+=("</tr></tbody></table>");
	
	segnaFestivi();

	segnaEventi(mese,anno);
	
	if(dataAttuale)
		segnaGiornoAttuale();	
	
	document.getElementById("tabAgenda").innerHTML=codiceTabella;
}

function centraTabella()
{
	var altDocumento = document.getElementById("contenuto").clientWidth;	
	altDocumento -= document.getElementById("tabellaAgenda").offsetWidth;
	altDocumento -= document.getElementById("frecciaSxAgenda").offsetWidth;
	altDocumento -= document.getElementById("frecciaDxAgenda").offsetWidth;
	altDocumento -= altDocumento / 100 * 1;
	altDocumento /= 2;
	stringAlt = "" + altDocumento + "px";
	
	document.getElementById("frecciaSxAgenda").style.marginLeft = stringAlt;
}


