var calendar_callback_in_progress = false;
var calendar_show_days = false;
function InitializeCalendar() {
	CalendarNavToggleStatus();
	info = CalendarCurrentInfo();
	$.get("/calendar/news/", { cm: info.month, cy: info.year, ci: info.category_id }, RefreshCalendar );
	$("#calendar .prev").click(CalendarPrevClick);
	$("#calendar .next").click(CalendarNextClick);
	$(function(){ 
		$("#calendar").corner("round 8px").parent().css('padding', '1px').corner("round 9px");
		$("#calendar").hover(ShowCalendarDays, HideCalendarDays);
	});
}
ShowCalendarDays = function() {
	calendar_show_days = true;
	$("#calendar .days-row").show();
}
HideCalendarDays = function() {
	calendar_show_days = false;
	$("#calendar .days-row").hide();
}
function CalendarCurrentInfo(info) {
	if(!info) {
		return {
			year: $("#calendar_current_year").val(),
			month: $("#calendar_current_month").val(),
			category_id: $("#calendar_current_category_id").val()
		} 
	} else {
		CalendarSetCurrentMonth(info.month);
		CalendarSetCurrentYear(info.year);
	}	
}
function CalendarSetCurrentMonth(month) {
	$("#calendar_current_month").val(month);
}
function CalendarSetCurrentYear(year) {
	$("#calendar_current_year").val(year);
}
function IncCurrentInfo() {
	info = CalendarCurrentInfo();
	if(info.month == 12) {
		info.month = 1;
		info.year++;
	} else {
		info.month++;
	}
	CalendarCurrentInfo(info);
}
function DecCurrentInfo() {
	info = CalendarCurrentInfo();
	if(info.month == 1) {
		info.month = 12;
		info.year--;
	} else {
		info.month--;
	}
	CalendarCurrentInfo(info);
}
function CalendarNavToggleStatus() {
	calendar_callback_in_progress = !calendar_callback_in_progress;
	$("#calendar .prev").toggleClass('disabled');
	$("#calendar .next").toggleClass('disabled');
}
function CalendarNavDisabled() {
	calendar_callback_in_progress = true;
	$("#calendar .prev").attr('disabled', true);
	$("#calendar .next").attr('disabled', true);
}
RefreshCalendar = function(data) {
	$("#calendar_days").html(data);
	CalendarNavToggleStatus();
	calendar_show_days ? ShowCalendarDays() : HideCalendarDays();
}
CalendarNextClick = function() {
	if(calendar_callback_in_progress) return;
	CalendarNavToggleStatus();
	IncCurrentInfo();
	$.get("/calendar/news/", { cm: info.month, cy: info.year, ci: info.category_id }, RefreshCalendar );
}
CalendarPrevClick = function() {
	if(calendar_callback_in_progress) return;
	CalendarNavToggleStatus();
	DecCurrentInfo();
	$.get("/calendar/news/", { cm: info.month, cy: info.year, ci: info.category_id }, RefreshCalendar );
}