var calendar_cache = {};
var months = ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];

function init_c(data, limits){
	onInit(function(){
		init_calendar(data, limits);
	});
}

function init_calendar(data, limits)
{
	var date = new Date();
	
	var container = jq("#calendar");
	var header = jq('.txt', container);
	var la = jq(".head .l", container);
	var ra = jq(".head .r", container);
	var body = jq(".body", container);
	
	la.click(function(){
		date.setMonth(date.getMonth() - 1);
		process_header(date);
		render_body(date);
		return false;
	});
	
	ra.click(function(){
		date.setMonth(date.getMonth() + 1);
		process_header(date);
		render_body(date);
		return false;
	});
	
	function process_header(date){
		la.css({visibility:'hidden'});
		ra.css({visibility:'hidden'});
		
		var y = date.getFullYear();
		var m = date.getMonth();
		
		if((y == limits.max_year && m < limits.max_month) || y < limits.max_year){
			ra.css({visibility:'visible'});
		}
		
		if((y <= limits.min_year && m > limits.min_month) || y > limits.min_year){
			la.css({visibility:'visible'});
		}
		
		header.html(months[m] + " " + y + "г");
	}
	
	function render_body(date){
		
		var y = date.getFullYear();
		var m = date.getMonth();
		var d = new Date(y, m, 1);
		var index = m + "_" + y;
		if(calendar_cache[index])
		{
			jq("table", body).hide();
			jq("#" + index).show();
			return;
		}
		var day = d.getDay();
		if(day == 0)
			day = 7;
		var html = "<table id='" + index + "'><tr>";
		var i = 1;
		while(d.getMonth() == m)
		{
			if(i < day)
				html += "<td>&nbsp;</td>";
			else
			{
				if(data[d.getDate() + "_" + index])
					html += "<td><a href='/" + data[d.getDate() + "_" + index] + "'>" + (i - day + 1) + "</a></td>";
				else
					html += "<td>" + (i - day + 1) + "</td>";
			}
			if(i % 7 == 0)
				html += '</tr><tr>';
			i += 1;
			var real_date = 1;
			if(i > day)
				real_date = i - day + 1;
			d.setDate(real_date);
		}
		while(i < 43){
			if(i % 7 == 0)
				html += '</tr><tr>';
			html += "<td>&nbsp;</td>";
			i++;
		}
		html += "</tr></table>";
		body.append(html);
		jq("table", body).hide();
		jq("#" + index).show();
		calendar_cache[index] = true;
	}
	
	process_header(date);
	render_body(date);
}