// set up variables
var monthsArray = new Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
var daysArray = new Array("L","M","M","G","V","S","D");
var prevYears = 10; // number of years before current date
var futureYears = 10; // number of years after current date
var today = new Date();
var nowMonth = today.getMonth();
var nowYear = today.getFullYear();
var curMonth = nowMonth;
var curYear = nowYear;
var actualDate=today.getDate();
var actualMonth=today.getMonth();
var actualYear=today.getFullYear();
//alert(actualDate+"/"+actualMonth+"/"+actualYear);
today.setDate(1); // set to first day of the month

// creates calendar for the current month
function createMonth() {
	var startDay = today.getDay(); // first day of the month
	if (startDay==0) startDay=7;
	else startDay-=1;
	var monLength = monthLength(); // number of days in month
	var lastDay = startDay+monLength-1; // last day of the month

	var calendar='<table class="table_cal_title"><tr class="cal_title"><th><a href="javascript: prevYear()">&nbsp;<<&nbsp;</a></th>';
	calendar+='<th><a href="javascript: prevMonth()">&nbsp;<&nbsp;</a></th>';
	calendar+='<th>&nbsp;'+monthsArray[curMonth]+'&nbsp;'+curYear+'&nbsp;</th>';
	calendar+='<th><a href="javascript: nextMonth()">&nbsp;>&nbsp;</a></th>';
	calendar+='<th><a href="javascript: nextYear()">&nbsp;>>&nbsp;</a></th>';
	calendar+='</tr></table>';
	calendar+='<table class="table_cal_content"><tr class="cal_intro">';
	for(i=0;i<7;i++) {
		calendar+='<th>'+daysArray[i]+'</th>';
	}
	calendar+='</tr><tr>';
	
	for(i=0;i<42;i++) {
		var curDay = i+1-startDay;
		if(i>lastDay && i==35) { // do not show last row if not needed
			calendar+='</tr><tr>';
		}
		if(i<startDay || i>lastDay) { // show blank cells before and after month
			calendar+='<td class="cal_hidden">&nbsp;</td>';
		}
		else {
			if(!(i%7) || !((i+1)%7) ) { // get days of the weekend
				if(!(i%7)&& i>0) {
					calendar+='</tr><tr>';
				}
				if(curDay==actualDate && curMonth==actualMonth && curYear==actualYear)
					calendar+='<td class="cal_current_day">'+curDay+'</td>';
				else calendar+='<td class="cal_days">'+curDay+'</td>';
			}
			else{
				if(curDay==actualDate && curMonth==actualMonth && curYear==actualYear)
					calendar+='<td class="cal_current_day">'+curDay+'</td>';
				else calendar+='<td class="cal_days">'+curDay+'</td>';
			}
		}
	}
	calendar+='</tr></table>';

	return calendar;
}

// get length of month
function monthLength() {
	monLength = 31;
	if(curMonth == 3 || curMonth == 5 || curMonth == 8 || curMonth == 10) monLength = 30;
	if(curMonth == 1) {
		if(curYear%4) monLength = 28;
		else monLength = 29;
	}
	return monLength;
}

// goto previous month
function prevMonth() {
	curMonth-=1;
	if(curMonth<0) {
		curMonth=11;
		if(curYear>(nowYear-prevYears)) {
			curYear -= 1;
		}
	}
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	$("#calendario_header").html(createMonth());
}

// goto previous year
function prevYear() {
	curYear-=1;
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	$("#calendario_header").html(createMonth());
}

// goto next month
function nextMonth() {
	curMonth += 1;
	if(curMonth>11) {
		curMonth=0;
		if(curYear<(nowYear+futureYears)) {
			curYear += 1;
		}
	}
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	$("#calendario_header").html(createMonth());
}

// goto next year
function nextYear() {
	curYear += 1;
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	$("#calendario_header").html(createMonth());
}



$(document).ready(function(){
	$("#calendario_header").html(createMonth());
});
