/*
calendar.js

Copyright Denis Vlasov, 2009
All rights reserved.

VERSION 0.1
Last Modified: 04/12/2009
*/

var Calendar = Class.create();

Calendar.prototype = {

    initialize: function(lang)
    {
	if (lang == null || lang == "")
	    lang = 'rus';
	this.lang = lang;
    },

    LoadCalendar: function()
    {
//    	var d = new Date();

	var pars = "action=calendar&month=" + (this.month + 1) + "&year=" + this.year + "&lang=" + this.lang;
	pars += "&rnum=" + Math.random() * 1000000 % 1000000;
	
	var myAjax = new Ajax.Request(
    	    '/cgi-bin/getevents.pl',
    	    {method: "get", parameters: pars, onComplete: this.ProcessCalendar.bindAsEventListener(this)}
	);
	$('loadEventsArea').style.display = 'block';
    },

    ProcessCalendar: function(originalRequest)
    {
//	if (!originalRequest || originalRequest.responseText == "")
//	    return;
	var rows = originalRequest.responseText.split("\n");

//        if (rows.length == 0 || rows[0].indexOf('|') < 0)
//	    return;

	var dates = new Object();

	var tmp = new Date();
	var month = this.month;
	var year = this.year;
	
//	var month = tmp.getMonth();
//	var year = tmp.getFullYear();
	
        for (var i = 0; i < rows.length - 1; i++)
	{
	    if (rows[i].length == 0)
		continue;
	    var t = rows[i].split("|");
	    var d = t[0];
	    var m = t[1] - 1;
	    var y = t[2];
//	    var count = t[3];

	    if (isNaN(d) || isNaN(m) || isNaN(y))
		continue;
	    
	    month = m;
	    year = y;
	    
	    dates[d] = t[3];
	}
	
	var months = ['ßÍÂÀÐÜ', 'ÔÅÂÐÀËÜ', 'ÌÀÐÒ', 'ÀÏÐÅËÜ', 'ÌÀÉ', 'ÈÞÍÜ', 'ÈÞËÜ', 'ÀÂÃÓÑÒ', 'ÑÅÍÒßÁÐÜ', 'ÎÊÒßÁÐÜ', 'ÍÎßÁÐÜ', 'ÄÅÊÀÁÐÜ'];
	if (this.lang == "eng")
	    months = ['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'];

	$('date').innerHTML = months[month];
	if (this.lang == 'eng')
	    $('date').href = "/site/events/?month=" + (month + 1) + "&year=" + (year) + "&lang=" + this.lang;
	else
	    $('date').href = "/site/events/?month=" + (month + 1) + "&year=" + (year);

	var html = "<table class=\"calendar\" width=\"191\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
	    "<tbody>";
	if (this.lang == "eng")
	    html += "<tr><th>MN</th><th>TS</th><th>WD</th><th>TH</th><th>FR</th><th>ST</th><th>SN</th></tr>";
	else
	    html += "<tr><th>ÏÍ</th><th>ÂÒ</th><th>ÑÐ</th><th>×Ò</th><th>ÏÒ</th><th>ÑÁ</th><th>ÂÑ</th></tr>";

	var bMonth = new Date(year, month, 1);

	var dweek = bMonth.getDay();
	if (dweek == 0)
	    dweek = 7;
	
	var t = bMonth.getTime();
	var start = t - (60 * 60 * 24 * (dweek - 1) * 1000);
	var curDate= new Date(start);
	
	dweek = curDate.getDay();
	if (dweek == 0)
	    dweek = 7;
	
	var steps = 0;
	while (true)
	{
	    steps++;
	    if (steps > 100)
		break;
	    var date = curDate.getFullYear() + "-" + (month + 1) + "-" + curDate.getDate();
	    var url = "<a class=\"event\" href=\"javascript:void(null);\" title=\"" + dates[curDate.getDate()]+ "\" onClick=\"calendar.LoadEvents('" + date + "'); return false;\">" + curDate.getDate() + "</a>";

	    if (curDate.getDay() == 1)
		html += "<tr>"
	    if (curDate.getMonth() < month || curDate.getMonth() == month && curDate.getDate() < 1 || curDate.getMonth() > month)
		html += "<td>&nbsp;</td>";
	    else
	    {
		if (dates[curDate.getDate()])
		    html += "<td>" + url + "</td>";
		else
		    html += "<td class=\"single\">" + curDate.getDate() + "</td>";
	    }
	    
	    if (dweek == 7) {
		html += "</tr>" +
		    "<tr><td colspan=\"7\" bgcolor=\"#dadadd\"><img src=\"/support/images/spacer.gif\" alt=\"\" width=\"1\" border=\"0\" height=\"1\"></td></tr>";
	    }
		
	    curDate.setDate(curDate.getDate() + 1);//new Date(curDate.getTime() + 86400000);

	    dweek++;
	    if (dweek == 8)
		dweek = 1;
	    if (curDate.getMonth() != month && dweek == 1)
		break;
	}
	
	html += "</tbody>" +
		"</table>";
		
	$('loadEventsArea').style.display = 'none';
	$('calendarArea').innerHTML = html;
	this.LoadEvents();
    },
    
    LoadEvents: function(date)
    {
	var pars = "action=events&lang=" + this.lang;
	if (date != null)
    	    pars += "&date=" + date;
    	
	pars += "&rnum=" + Math.random() * 1000000 % 1000000;
	
	var myAjax = new Ajax.Request(
    	    '/cgi-bin/getevents.pl',
    	    {method: "get", parameters: pars, onComplete: this.ProcessEventList.bindAsEventListener(this)}
	);
	
	$('loadEventsArea').style.display = 'block';
    },
    
    ProcessEventList: function(originalRequest) {
	var rows = originalRequest.responseText.split("\n");

	$('loadEventsArea').style.display = 'none';
        if (rows.length == 0 || rows[0].indexOf('|') < 0)
	{
//	    $('eventsArea').innerHTML = "Íè îäíîãî ñîáûòèÿ íå íàéäåíî.";

	    return;
	}

        var events = new Array();

	var html = "";
        for (var i = 0; i < rows.length - 1; i++)
	{
	    var t = rows[i].split("|");
	    var id = t[0];
	    var title = t[1];
	    var date = t[2];
	    var time = t[3];
	    var place = t[4];
	    var showhref = t[5];
	    html += "<br><span class=\"date2\">" + date + " | </span> ";
	    
	    if (this.lang == 'eng')
	        html += "<a href=\"/article/" + id + "/?lang=eng\" class=\"ev_name\">" + title + "</a>";
	    else
	        html += "<a href=\"/article/" + id + "/\" class=\"ev_name\">" + title + "</a>";

	    if (place != "")
		html += "<br>" + place;
	    if (time != "") {
		if (this.lang == 'eng')
		    html += "<br>Start at " + time;
		else
		    html += "<br>Íà÷àëî: " + time;
	    }
	    html += "<br>";
	}

	$('eventsArea').innerHTML = html;
    }

}
