//*****************************************************************************
//variabili da inserire nella pagina html per il funzionamento del calendario
//
//la data di sistema
//	var todayDateString = "2004/01/22"
//la data della pagina
//	var pageDateString  = "2004/01/22"
//opzionale l'elenco delle pagine selezionabili (null = tutte tra la prima e l'ultima)
//	var showDateStrings = new Array("2004/01/22","2004/01/23","2004/01/24",...)
//*****************************************************************************

var showDateStrings = null

/* Calendario 2010/11*/
var firstDateString = "2011/10/24"
var lastDateString  = "2012/08/30"

var firstDate = dateFromString(firstDateString)
var lastDate  = dateFromString(lastDateString)

var dayNames = new Array('Domenica','Luned&igrave;','Marted&igrave;','Mercoled&igrave;','Gioved&igrave;','Venerd&igrave;','Sabato')
var monthNames = new Array('Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre')
var monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31)


var todayDate = dateFromString(todayDateString)
var pageDate  = dateFromString(pageDateString)

//alcuni controlli
//if (daysElapsed(firstDate, todayDate) > 0) todayDate = firstDate
//if (daysElapsed(lastDate, todayDate) > 0) lastDate = todayDate


function formattedPageDate()
{
	var y = pageDateString.substring(0, 4) - 0
	var m = pageDateString.substring(5, 7) - 0
	var d = pageDateString.substring(8, 10) - 0
	var w = dayOfWeek(d, m, y)
	var str = ''
	if (daysElapsed(lastDate, pageDate) >= 0)
    		str += daysElapsed(pageDate, firstDate) + 1 + '° giorno | '
    	str += dayNames[w] + ' ' + d + ' ' + monthNames[m - 1] + ' ' + y
	document.write(str)
}

function formattedPageDate_string()
{
	var y = pageDateString.substring(0, 4) - 0
	var m = pageDateString.substring(5, 7) - 0
	var d = pageDateString.substring(8, 10) - 0
	var w = dayOfWeek(d, m, y)
	var str = ''
	if (daysElapsed(lastDate, pageDate) >= 0)
    		str += daysElapsed(pageDate, firstDate) + 1 + '° giorno | '
    	str += dayNames[w] + ' ' + d + ' ' + monthNames[m - 1] + ' ' + y
	return (str)
}

function getDayProgram(dayprogram)
{	
	var str = 'vai al '
	if (daysElapsed(lastDate, pageDate) >= 0)
    		str += daysElapsed(dayprogram, firstDate) + 1 + '° giorno'
	return str;
}

function changeDate(day, month, year)
{
	var d = (day < 10) ? '0' + day : day
	var m = (month < 10) ? '0' + month : month
	document.location = '/news/' + year + '/' + m + '/' + d + '/archivio.shtml'
}

function initCalendar()
{		
	var startYear = y2k(firstDate.getYear())
	var startMonth = firstDate.getMonth() + 1
	var endYear = y2k(lastDate.getYear())
	var endMonth = lastDate.getMonth() + 1
	var pageYear = y2k(pageDate.getYear())
	var currentMonth = pageDate.getMonth()
	drawCalendar(startMonth, startYear, true)	
	while ((startYear * 12 + startMonth) <= (endYear * 12 + endMonth)) {		
		drawCalendar(startMonth, startYear, true)
		if (++startMonth > 12) { startMonth = 1; startYear++; }
	}	
	var pageYear = y2k(pageDate.getYear())
	var pageMonth = pageDate.getMonth() + 1
	updateCalendar(pageMonth, pageYear)
}

function updateCalendar(month, year)
{	
	var startYear = y2k(firstDate.getYear())
	var startMonth = firstDate.getMonth() + 1
	var endYear = y2k(lastDate.getYear())
	var endMonth = lastDate.getMonth() + 1	
	while ((startYear * 12 + startMonth) <= (endYear * 12 + endMonth)) 
	{		
		document.getElementById('calendario' + startYear + startMonth).style.display = 'none'		
		if (++startMonth > 12) { startMonth = 1; startYear++; }
	}
	document.getElementById('calendario' + year + month).style.display = 'block'	
}

function drawCalendar(month, year, selectable)
{
	
	var monthDate = new Date(1, month - 1, year)
	var weekDay = dayOfWeek(1, month, year)
	var monthDay = dayOfMonth(month, year)

	var prevYear = year
	var prevMonth = (month - 1); if (prevMonth < 1) { prevMonth = 12; prevYear--; }
	var nextYear = year
	var nextMonth = (month + 1); if (nextMonth > 12) { nextMonth = 1; nextYear++; }	
	var str = ''		
	str += '<div id="calendario'+year + month+'" style="display:none" class="calendario">'	
	if (daysElapsed(dateFromInt(dayOfMonth(prevMonth, prevYear), prevMonth, prevYear), firstDate) >= 0)
		//str += '<p class="indietro"><a href="javascript:updateCalendar(' + prevMonth +',' + prevYear + ')"><span>indietro</span></a></p>'
		str += '<div id="bottPrec"><a href="javascript:updateCalendar(' + prevMonth +',' + prevYear + ')">Precedente</a></div>'
	str += '<p>'+monthNames[month - 1].toUpperCase()+'</p>'
	
	// Griglia calendario		
	str += '<ul>'	
	for (var i = 1; i <= monthDay; i++) {
		var thisDate = dateFromInt(i, month, year)		
		var isShowDate = false
		if ((daysElapsed(thisDate, firstDate) >= 0) && (daysElapsed(lastDate, thisDate) >= 0) && ((weekDay % 7) == 0)) 
		{
			//alert('dentro1');
			isShowDate = true
		}
		str += '<li>'
		if ((daysElapsed(thisDate, dateFromString(lastDateString)) > 0) || (daysElapsed(dateFromString(firstDateString), thisDate) > 0)) 
		{
			str += '<span class="disable">'+i+'</span>'
			
			
		} 
		else 
		{			
		 	if (daysElapsed(pageDate, thisDate) == 0) str += '<b>'						
			if ((daysElapsed(pageDate, thisDate) == 0) && selectable) 
			{
				str += '<a href="javascript:changeDate(' + i + ',' + month + ',' + year + ')" title="'+getDayProgram(thisDate)+'">'
			} 
			else if ((showDateStrings == null) && (daysElapsed(thisDate, firstDate) >= 0) && (daysElapsed(todayDate, thisDate) >= 0)) 
			{		
				str += '<a href="javascript:changeDate(' + i + ',' + month + ',' + year + ')" title="'+getDayProgram(thisDate)+'">'
			}									
			if (daysElapsed(todayDate, thisDate) == 0)
				str += ''
			
			str += i			
			if ((daysElapsed(pageDate, thisDate) == 0) && selectable) 
			{
				str += '</a>'
			} 
			else if ((showDateStrings == null) && (daysElapsed(thisDate, firstDate) >= 0) && (daysElapsed(todayDate, thisDate) >= 0)) 
			{
				str += '</a>'
			}			
			if (daysElapsed(pageDate, thisDate) == 0) str += '</b>'
		}	
		str += '</li>'				
	}	
	str += '</ul>'
	if (daysElapsed(lastDate, dateFromInt(1, nextMonth, nextYear)) >= 0)
		//str += '<p class="avanti"><a href="javascript:updateCalendar(' + nextMonth +',' + nextYear + ')"><span>avanti</span></a></p>'
		str +=   '<div id="bottSucc"><a href="javascript:updateCalendar(' + nextMonth +',' + nextYear + ')">Successivo</a></div>'
	
	str += '</div>'
	
	
	
	document.write(str)
}

function drawDataArticolo(data,archivio)
{
	
	var anno = data.substring(0,4);
	var mese = data.substring(5,7);
	var giorno = data.substring(8,10);
	var datanews = new Date ( anno, mese-1, giorno );

	giorno = (giorno.substring(0,1)==0)? giorno.substring(1): giorno;

	var numgiorno = daysElapsed(datanews, firstDate) + 1
	var str = '';
	str += '<div id="dataArticolo">'
	str += '<p id="giornata">'+numgiorno+'° '+' giorno | <span>'+dayNames[datanews.getDay()]+', '+giorno+' '+monthNames[datanews.getMonth()]+' '+anno+'</span></p>'
	if(archivio=='false')
	str += '<p id="archivioGiornata"><a href="/news/'+data+'/archivio.shtml">Vai all\'archivio della giornata &raquo;</a></p>'
							
	
	str += '</div>'
	
	document.write(str)
}

function dateFromString(dateString){
	return new Date(dateString.substring(0, 4), dateString.substring(5, 7) - 1, dateString.substring(8, 10))
}

function dateFromInt(day, month, year){
	return new Date(year, month - 1, day)
}

function dayOfWeek(day, month, year){
	var a = Math.floor((14 - month) / 12)
	var y = year - a
	var m = month + 12 * a - 2
	return (day + y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400) + Math.floor((31 * m) / 12) - 1) % 7
}

function dayOfMonth(month, year){
	return ((month == 2) && ((year % 400 == 0) || ((year % 100 != 0) && (year %4 == 0)))) ? d = 29 : monthDays[month - 1]
}

function y2k(year){
	return (year < 1000) ? year + 1900 : year
}

function daysElapsed(date1, date2){
	return (Date.UTC(y2k(date1.getYear()), date1.getMonth(), date1.getDate(), 0, 0, 0) - Date.UTC(y2k(date2.getYear()), date2.getMonth(), date2.getDate(), 0, 0, 0)) / 1000 / 60 / 60 / 24
}

function formattedDate(thisDateString){
	var thisDate = dateFromString(thisDateString)
	var y = y2k(thisDate.getYear())
	var m = thisDate.getMonth() + 1
	var d = thisDate.getDate()
	var w = dayOfWeek(d, m, y)
	var str = ''
	if (daysElapsed(lastDate, thisDate) >= 0)
    		str += daysElapsed(thisDate, firstDate) + 1 + '° giorno | '
    	str += dayNames[w] + ' ' + d + ' ' + monthNames[m - 1] + ' ' + y
	document.write(str)
}

function reverseDate(dateString){
	var y = dateString.substring(0, 4)
	var m = dateString.substring(5, 7)
	var d = dateString.substring(8, 10)
	return (d + '/' + m + '/' + y)
}

