/**
 * @author Edo
 */

// function becomes a method for each month object
function GetFirstDay(theYear, theMonth)
{
    var firstDate = new Date(theYear,theMonth,1);
    return firstDate.getDay();
}

// number of days in the month
function GetMonthLen(theYear, theMonth) 
{
    var oneDay = 86400000;
	theYear = parseInt(theYear);
	theMonth = parseInt(theMonth);
    var thisMonth = new Date(theYear, theMonth, 1);
    var nextMonth = new Date(theYear, (theMonth + 1), 1);
    var len = Math.ceil((nextMonth.getTime() - thisMonth.getTime())/oneDay);
    return len;
}

// correct for Y2K anomalies
function GetY2KYear(today) 
{
    var yr = today.getYear();
    return ((yr < 1900) ? yr+1900 : yr);
}

function CalendarOnClickEvent(obj)
{
	var name = obj.currentTarget.getAttribute("name");
	var arr = name.split(",");
	GenerateCalendar(arr[0], arr[1], arr[2]);
	return false;
}

function GenerateCalendar(month, year, type)
{
	month = parseInt(month);
	year = parseInt(year);
	var shorts = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
	var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
	var date = new Date();
	var yearNow = date.getFullYear();
	var monthNow = date.getMonth();
	var len = GetMonthLen(year, month);
	var first = GetFirstDay(year, month);
	
	var tableString = "<tr>";
	if(first > 1)
		tableString += "<td colspan=\"" + (first - 1) + "\" class=\"pad\">&nbsp;</td>";
	else if(first == 0)
		tableString += "<td class=\"pad\" colspan=\"6\">&nbsp;</td>";		
	var firstTime = false;
	var firstFix = --first
	for(var i = 0; i < len; i++)
	{
		if(!firstTime)
			firstTime = true;
		else if(firstTime && ((i+firstFix) % 7) == 0)
			tableString += "</tr><tr>";

		var dayItr = i + 1;
		tableString += "<td id=\"cDay_" + dayItr + "\">" + dayItr + "</td>"
		
	}
	var lenTest = len % 8;
	if(i != 28 && lenTest != 0 && lenTest != 7)
		tableString += "<td class=\"pad\" colspan=\"" + lenTest + "\">&nbsp;</td>";
	tableString += "</tr>";
	$("#idCalendarBody").html(tableString);
	$("#idCalendarCaption").text(months[month] + " " + year);
	
	var prevMonth;
	var prevYear;
	var nextMonth;
	var nextYear;
	
	if(month == 0)
	{
		nextMonth = month + 1;
		nextYear = year;
		prevMonth = 11;
		prevYear = year - 1;	
	}
	else if(month == 11)
	{
		nextMonth = 0;
		nextYear = year + 1;
		prevMonth = month - 1;
		prevYear = year;
	}
	else
	{
		nextMonth = month + 1;
		nextYear = year;
		prevMonth = month - 1;
		prevYear = year;		
	}
	//Footer
	var footerString = "							<tr>";
	footerString += "								<td abbr=\"" + months[prevMonth] +  "\" colspan=\"3\" id=\"idCalendarPrev\"><a href=\"#idCalendar\" id=\"idCalendarPrevHtml\" title=\"View posts for " + months[prevMonth] +  " " + prevYear +  "\" name=\"" + prevMonth + "," + prevYear + "," + type + "\">&laquo; " + shorts[prevMonth] +  "</a></td>";
	footerString += "								<td class=\"pad\">&nbsp;</td>";
	footerString += "								<td abbr=\"" + months[nextMonth] +  "\" colspan=\"3\" id=\"idCalendarNext\"><a href=\"#idCalendar\" id=\"idCalendarNextHtml\"title=\"View posts for " + months[nextMonth] +  " " + nextYear +  "\" name=\"" + nextMonth + "," + nextYear + "," + type + "\">" + shorts[nextMonth] +  " &raquo;</a></td>";
	footerString += "							</tr>";
	$("#idCalendarFooter").html(footerString);
	$("#idCalendarPrevHtml").click(CalendarOnClickEvent);
	$("#idCalendarNextHtml").click(CalendarOnClickEvent);
	
	//Fetch calendar contents
	var link = "";
	if(type == 0) //News
	{
		link = "calendar.php?type=0&date=" + year + "-" + (month + 1);
	}
	else
	{
		var username = $.jqURL.get("u");
		if(username == undefined)
			return; //location.href = "index.html";
			
		link = "calendar.php?type=1&u=" + username + "&date=" + year + "-" + (month + 1);
	}
		
	var dayArr = new Array();
	
	$.getJSON(baseLink + link + callbackAttr, 
	function(JSON)
	{
		$.each(JSON.results, 
		function(i, result)
		{
			var dayTd = $("#cDay_" + result.day);

			if(type == 0)
				dayTd.html("<a href=index.html?date=" + year + "-" + (month + 1) + "-" + result.day + ">" + result.day + "</a>");
			else
				dayTd.html("<a href=blog.html?u=" + username + "&date=" + year + "-" + (month + 1) + "-" + result.day + ">" + result.day + "</a>");
	  	});
	});	
}