function get_integer_case(forms, number)
{
    if (number) number = parseInt(number); else return;
    var ones = number % 10;
    var tens = parseInt(number / 10) % 10;
    if (ones == 1 && tens!= 1) return forms[0];
	else if ((ones == 2 || ones == 3 || ones == 4) && tens != 1) return forms[1];
	    else return forms[2];
}

function get_calendar(year, month)
{
    perl_get_calendar(year, month, get_calendar_callback);
}

function get_calendar_callback(year, month, data)
{
    if(year) {
	calendar_year = parseInt(year);
	calendar_month = parseInt(month);
	calendar_posts_counts = data;
	document.getElementById("calendar_div_innerdiv").innerHTML=draw_calendar();
    }
}


function set_new_month(side)
{
    var year;
    var month;
    if (side == "left") {
	//moving to the left
	if (calendar_month > 1) {
	    month = calendar_month - 1;
	    year = calendar_year;
	} else {
	    month = 12;
	    year = calendar_year - 1;
	}
    } else {
	//moving to the right
	if (calendar_month < 12) {
	    month = calendar_month + 1;
	    year = calendar_year;
	} else {
	    month = 1;
	    year = calendar_year + 1;
	}
    }
    get_calendar(year,month);
}

function draw_calendar()
{
    var now_day = null;
    var now_date = new Date();
    if(now_date.getMonth() == calendar_month - 1 && now_date.getFullYear() == calendar_year) now_day = now_date.getDate();
    var shown_day = null;
    if(calendar_shown_day) {
	if(calendar_shown_month == calendar_month && calendar_shown_year == calendar_year) shown_day = calendar_shown_day;
    }
    var date = new Date(calendar_year, calendar_month - 1, 1);
    var day_of_week = date.getDay();
    if (day_of_week == 0) day_of_week = 7;
    var next_month_date = new Date(calendar_year, calendar_month + 1 - 1, 1);
    var month_days = Math.round((next_month_date.getTime() - date.getTime())/(24*60*60*1000));

    var buffer = new Array();
    for (var i = 1; i < day_of_week; i++) buffer[i] = "empty";
    var j = 1;
    for (var i = day_of_week; i < day_of_week + month_days; i++) {
	if(calendar_posts_counts[j]) buffer[i] = calendar_posts_counts[j]; else buffer[i]=0;
	j++;
    }
    if((day_of_week + month_days - 1) % 7 != 0) {
	for (i = day_of_week + month_days; i < day_of_week + month_days + (7 - (day_of_week + month_days - 1) % 7); i++) {
	    buffer[i] = "empty";
	}
    }
    var html = '<div><img src="http://img.mail.ru/0.gif" width="1" height="5" alt=""></div><center><table cellpadding=0 cellspacing=0 border=0 width=100%>\n\
    <tr valign=top>\n\
	<td>'+(GetAjaxRequest()?'<a class="prev" onclick="set_new_month(\'left\'); gebi(\'calendar_div\').style.height = \'auto\'; return false;" href="#"><img src=http://img.mail.ru/r/blogs/left_calendar_angle.gif width=9 height=13 border=0></a>':'&nbsp;')+'</td>\n\
	<td width=100% class=date align=center><a href="' + PerlVar_JournalDir + '?year=' + calendar_year + '&month=' + calendar_month + '"><b>' + calendar_months[calendar_month - 1] + ' ' + calendar_year + '</b></a></td>\n\
	<td>'+(GetAjaxRequest()?'<a class="next" onclick="set_new_month(\'right\'); gebi(\'calendar_div\').style.height = \'auto\'; return false;" href="#"><img src=http://img.mail.ru/r/blogs/right_calendar_angle.gif width=9 height=13 border=0></a>':'&nbsp;')+'</td>\n\
    </tr>\n\
    <tr><td>&nbsp;</td><td>\n\
    <table cellpadding=0 cellspacing=5 border=0 width=100% class=setka>\n\
    <tr class=head><th width=14%>Пн</th><th width=14%>Вт</th><th width=14%>Ср</th><th width=14%>Чт</th><th width=14%>Пт</th><th class=holiday width=15%>Сб</th><th class=holiday width=15%>Вс</th></tr>\n';
    html += '<tr>\n';
    for (i = 1; i < buffer.length; i++) {
	var day = i - day_of_week + 1;
	html += '<td ' + (day == shown_day ? 'style="border:2px solid #003073; font-weight:bold"' : '') + ' ' + (day == now_day ? 'class=today' : '') + '>'
	    + (buffer[i] == 'empty' ? '&nbsp;' : (buffer[i] == 0 ? day : '<a href="' + PerlVar_JournalDir + '?year=' + calendar_year + '&month=' + calendar_month + '&day=' + day
	    + '" title="' + buffer[i] + ' ' + get_integer_case(calendar_post_forms_data, buffer[i]) + '" class="def-link">'
	    + day + '</a>')) + '</td>\n';
	if (i % 7 == 0) html += '\n</tr>\n<tr>';
    }
    html += '</tr>\n';
    html += '</table></td><td>&nbsp;</td></td></tr></table></center>';
    return html;
}

function load_calendar_state()
{
    if (!get_cookie("calendar_state") || calendar_year == "" || calendar_year == 0 || isNaN(calendar_year)) set_cookie("calendar_state", "hide");
    if (get_cookie("calendar_state") == "hide") {
	return "<a onclick='return false;' href=''><img onclick='show_hide_calendar(this);' id=calendar_state_icon src=http://img.mail.ru/r/blogs/calendar_maximize.gif width=14 height=14 border=0></a>&nbsp;&nbsp;";
    } else {
	return "<a onclick='return false;' href=''><img onclick='show_hide_calendar(this);' id=calendar_state_icon src=http://img.mail.ru/r/blogs/calendar_minimize.gif width=14 height=14 border=0></a>&nbsp;&nbsp;";
    }
}

show_hide_calendar = function(click_obj)
{
    if (get_cookie("calendar_state") == "hide") {
	set_cookie("calendar_state", "show");
	if(GetAjaxRequest()) {
	    document.getElementById("calendar_state_icon").src = "http://img.mail.ru/r/blogs/calendar_minimize.gif";
		if(!isIE) curtainStep = 19;
		else curtainStep = 28;
		koryto['calendar_div']=[0,190,0];
		click_obj.onclick = function onclick(event) { return false; } // заблокирвоать выпадушку
		razvorot('calendar_div', 1, 1, click_obj, show_hide_calendar);
		if(calendar_year == "" || calendar_year == 0 || isNaN(calendar_year)) {
		var now_date = new Date();
		get_calendar(now_date.getFullYear(),now_date.getMonth() + 1);		
	    }
	} else {
	    window.location.reload(true);
	}
    } else {
	set_cookie("calendar_state", "hide");
	document.getElementById("calendar_state_icon").src = "http://img.mail.ru/r/blogs/calendar_maximize.gif";;
	if(!isIE) curtainStep = 19;
	else curtainStep = 28;
	koryto['calendar_div']=[190,0,1];
	click_obj.onclick = function onclick(event) { return false; } // заблокирвоать выпадушку
	razvorot('calendar_div', 1, 0, click_obj, show_hide_calendar);
    }
}