/* calendar */
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 = "<table cellpadding=0 cellspacing=0 border=0 width=100% style=\"margin-top:10px;\">\n\
    <tr valign=top>\n\
	<td>"+(GetAjaxRequest()?"<a 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=cur_month><a class=dateOfMonth href=\"" +  PerlVar_JournalDir + "?year=" + calendar_year + "&month=" + calendar_month + "\">" + calendar_months[calendar_month - 1] + " " + calendar_year + "</a></td>\n\
	<td>"+(GetAjaxRequest()?"<a 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=0 border=0 width=100% class=calendar_table>\n\
    <tr class=head><td width=14%>Пн</td><td width=14%>Вт</td><td width=14%>Ср</td><td width=14%>Чт</td><td width=14%>Пт</td><td class=rest_day width=15%>Сб</td><td class=rest_day width=15%>Вс</td></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]) + "\">"
	    + day + "</a>")) + "</td>\n";
	if (i % 7 == 0) html += "\n</tr>\n<tr>";
    }
    html += "</tr>\n"
    html += "</table><td>&nbsp;</td></td></tr></table>";
    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 '<img id="calendar_state_icon" onclick="show_hide_calendar(this);" src=http://img.mail.ru/r/blogs/calendar_maximize.gif width=14 height=14 border=0 align=absmiddle>&nbsp;&nbsp;';
    } else {
	return '<img id="calendar_state_icon" onclick="show_hide_calendar(this);" src=http://img.mail.ru/r/blogs/calendar_minimize.gif width=14 height=14 border=0 align=absmiddle>&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 = 18;
		else curtainStep = 27;
		koryto['calendar_div']=[0,180,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 = 18;
	else curtainStep = 27;
	koryto['calendar_div']=[180,0,1];
	click_obj.onclick = function onclick(event) { return false; } // заблокирвоать выпадушку
	razvorot('calendar_div', 1, 0, click_obj, show_hide_calendar);
    }
}