var arrCurrMonthSelDate=new Array();
var arrCurrMonthTitle = new Array();
var arrCurrMonthDesc = new Array();
var arrCurrMonthStart = new Array();

// Calendar Setup code
$(document).ready(function() 
{
	
	// LELELELELELELELELELELELELELELELELELELELELELE
	$('#divCalendar').hide();
	// LELELELELELELELELELELELELELELELELELELELELELE
	
	//Carico un array con tutti gli eventi del mese
	FillEvents();
});

function DayClick(objClicked)
{

	var currDayDate = new Date(objClicked.date);
	var blnEvent = false;
	$.each(arrCurrMonthSelDate, function(i, item) {
		if(item.getDate() == currDayDate.getDate() && item.getMonth() == currDayDate.getMonth() && item.getFullYear() == currDayDate.getFullYear())
		{
			blnEvent = true;
		}
	});

	if (blnEvent)	
	{
		//lancio la funzione per lanciare l'evento
		FillDayEvent(objClicked.date);
	}
	else
	{
		$('#divCalendar').hide(500);
	}
}


function DayClickCurrDate()
{
	var currDayDate = new Date();
	var blnEvent = false;
	$.each(arrCurrMonthSelDate, function(i, item) {
		if(item.getDate() == currDayDate.getDate() && item.getMonth() == currDayDate.getMonth() && item.getFullYear() == currDayDate.getFullYear())
		{
			blnEvent = true;
		}
	});

	if (blnEvent)	
	{
		//lancio la funzione per lanciare l'evento
		FillDayEvent(currDayDate);
	}
}

//pagina che riempie gli array con gli eventi e le relative info, da utilizzare anche al click su un determinato evento
function FillEvents()
{
	// chiamo la pagina con il calendario in formato .ics	
	//var sUrl = 'TestMicroformats.ics';
	//var sUrl = 'http://cal.shaolinyanhui.com/Lezioni.ics';
	//var sUrl = 'Lezioni.ics';
	var sUrl = 'proxy.php';
	//var sUrl = 'ftp://danielezani:shiyanhui@continental.dreamhost.com/Lezioni.ics'

	$.get(sUrl, 
		function(sInputCalendar)
		{

			var bOpen = 0;
			var iSequence = 0;
			var currDStart = null;
			var sRepeat = '';
			var sTitle = '';
			var sDesc = '';
			var sStart = '';

			//PARSE DEL DOCUMENTO PER RIEMPIRE L'ARRAY DEGLI EVENTI DEL MESE
			jQuery.each(sInputCalendar.split('\r\n'), function() 
			{

				if(this.match("BEGIN:VEVENT"))
				{
					bOpen = 1;				
				}
	
				if(this.match(/DTSTART;/i))
				{
				
					var eDate = ParseDateTime(this.replace(/DTSTART;(.*)/, "$1"));
					var currDate = new Date();
					var tDate = new Date(currDate.getFullYear() - 1, currDate.getMonth(), currDate.getDate());
					if (eDate > tDate)
					{
						currDStart = eDate;
					}
				}
				if(this.match("FREQ=WEEKLY") && bOpen == 1)
				{
					sRepeat = "WEEKLY";				
				}
				if(this.match("SEQUENCE:") && bOpen == 1)
				{
					iSequence = this.replace("SEQUENCE:", "");	
				}
				if(this.match(/SUMMARY:/i))
				{
					sTitle = this.replace(/SUMMARY:(.*)/, "$1");
				}
				if(this.match(/DESCRIPTION:/i))
				{
					sDesc = this.replace(/DESCRIPTION:(.*)/, "$1");
				}
				if(this.match(/DTSTART;/i))
				{
					var sNewDate = this.replace(/DTSTART;(.*)/, "$1");
					sStart = ParseDateTime(sNewDate);
					sStart.setMinutes(sNewDate.substring(sNewDate.indexOf(':')+12, sNewDate.indexOf(':')+14));
				}
				if(this.match("END:VEVENT"))
				{
					
					arrCurrMonthSelDate.push(currDStart);
					arrCurrMonthTitle.push(sTitle);
					arrCurrMonthDesc.push(sDesc);
					arrCurrMonthStart.push(sStart);

					if(sRepeat == "WEEKLY" && iSequence > 0)
					{
						var x = 0;
						for (x=1;x<iSequence;x=x+1)
						{
							var newDate = new Date(currDStart.getFullYear(), currDStart.getMonth(), currDStart.getDate() + (7 * x));
							arrCurrMonthSelDate.push(newDate);
							arrCurrMonthTitle.push(sTitle);
							arrCurrMonthDesc.push(sDesc);
							arrCurrMonthStart.push(sStart);

							//alert(newDate);
						}
	
					}
								
					//chiudo tutto
					bOpen = 0;
					iSequence = 0;
					currDStart = null;
					sRepeat = '';	

					sTitle = '';
					sDesc = '';
					sStart = '';			
				}

			});

			//ALLA FINE DEL MIO CICLO IMPOSTO IL CALENDARIO
			$('#divSelDay').calendar({
				parentElement: '#divCalContainer',
				dateFormat: '%d.%m.%Y',
				selectHandler: DayClick
			});
			
			DayClickCurrDate();
			


	}, "text");
}

//ciclo gli array gia popolati e quando arrivo alla data cliccata carico i rispettivi valori
function FillDayEvent(selDate)
{
	var i = 0;
	for(i=0;i<arrCurrMonthSelDate.length;i++)
	{
		if(arrCurrMonthSelDate[i].getFullYear() == selDate.getFullYear() && arrCurrMonthSelDate[i].getMonth() == selDate.getMonth() && arrCurrMonthSelDate[i].getDate() == selDate.getDate())
		{
			ViewSelEvent(arrCurrMonthTitle[i],arrCurrMonthDesc[i],arrCurrMonthStart[i],'');
		}
	}
}

//visualizzo l'evento sotto al calendario
function ViewSelEvent(sTitle,sDesc,sStart,sEnd)
{
	var sSelEvent = '';
	sSelEvent += '<h3>' + sTitle + '</h3>';
	sSelEvent += '<div class="desc">' + sDesc + '</div>';
	if(sStart != null)
	{	
		sSelEvent += '<div class="start">' + sStart.getHours() + ':' + sStart.getMinutes() + '</div>';
	}	
	/*if(sEnd != null)
	{	
		sSelEvent += '<div class="end">' + sEnd.getHours() + ':' + sEnd.getMinutes() + '</div>';
	}*/
	
	
	
	$('#divCalendar').html(sSelEvent);
	
	// LELELELELELELELELELELELELELELELELELELELELELE
	$('#divCalendar').show(500);
	// LELELELELELELELELELELELELELELELELELELELELELE	
}


function ParseDateTime(sInputDate)
{
  var sInputDateW = sInputDate.substring(sInputDate.indexOf(":") + 1);
  var sYear = sInputDateW.substring(0,4);
  var sMonth = sInputDateW.substring(4,6) - 1;
  var sDay = sInputDateW.substring(6,8);
  var sHour = 12;
  var sMinute = 00;
  if (sInputDateW.substring(8,9) == "T")
  {
    sHour = sInputDateW.substring(9,11);
    sMinute = sInputDateW.substring(11,12);
    //alert(sInputDateW.substring(11,12));
  }

  return new Date(sYear, sMonth, sDay, sHour, sMinute);
}

