///События для подсветки:
var events = new Array();
events["31.12"] = "Новый год";
events["14.01"] = "Старый новый год";

function CreateCalendar(elementid, month,year)
{
    /* Обрабатываем ввод */
    
    if (month != null)
    {
        if (month > 12)
        {
            month = 0;
            year++;
        }
        else if (month < 0)
        {
            month = 11;
            year--;
        }
    }
    
    /* Необходимые данные */

    //Дни недели
    var days_of_week = Array("Пн","Вт","Ср",
    "Чт","Пт","<span class=\"weekday\">Сб</span>","<span class=\"weekday\">Вс</span>");
    
    //Месяцы в году
    var months_of_year = Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль",
    "Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
    
    //Текущая дата
    var g_date = new Date();
    
    if (month != null)
    {
        g_date = new Date(year, month, g_date.getDate());
    }
    
    //Определяем количество дней в феврале в этом году
    var febdays = 28;
    if (g_date.getFullYear() % 4 == 0 && g_date.getFullYear() % 100 != 0 && g_date.getFullYear() % 400 == 0)
    {
        febdays = 29;
    }
    
    //Максимальное количество дней в каждом месяце
    var max_days_of_month = Array("31",febdays ,"31","30","31","30","31","31","30","31","30","31");
    
    //Максимальное количество дней в текущем месяце
    var max_days_current = max_days_of_month[g_date.getMonth()];
    
    //Текущее число
    var today = g_date.getDate();
    
    //Текущий месяц числом
    var curmonth = g_date.getMonth()+1;
    if (curmonth.toString().length != 2 ) { curmonth = "0" + curmonth; }; 

    //Первый день месяца
    var first_day_of_month = new Date(g_date.getFullYear(),g_date.getMonth(), 1).getDay();
    first_day_of_month += 6; if (first_day_of_month > 6) first_day_of_month %= 7;
    
    /* Создание календаря */

    var element = document.getElementById(elementid);
    
    //Начало внешнего контейнера
    var calendar = "<div id=\"calendar-outer\">";
    
    //Начало таблицы
    calendar += "<table id=\"calendar-inner\">";
    
    //Шапка календаря
    calendar += "<tr class=\"hat\">";
    
    calendar += "<td class=\"hat-cell\" colspan=\"7\"><table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr>";
    
    calendar += "<td><span onclick=\"CreateCalendar('" + elementid + "'," + (g_date.getMonth() - 1) + "," + g_date.getFullYear() + ");\" class=\"arrow\">&lt;</span></td>";
    
    calendar += "<td width=\"100%\"><span class=\"cur-month\">" + months_of_year[g_date.getMonth()] + "</span>";
    
    calendar += "&nbsp;&nbsp;<span class=\"cur-year\">" + g_date.getFullYear() + "</span></td>";
    
    calendar += "<td><span onclick=\"CreateCalendar('" + elementid + "'," + (g_date.getMonth() + 1) + "," + g_date.getFullYear() + ");\" class=\"arrow\">&gt;</span></td>";
    
    calendar += "</tr></table></td>";
    
    calendar += "</tr>";
    
    //Дни недели
    calendar += "<tr>";
    
    for (var i = 0; i < days_of_week.length; i++)
    {
        calendar += "<th>" + days_of_week[i] + "</th>";
    }
    
    calendar += "</tr><tr class=\"dayslist\">";
    
    //Выводим числа
    var day = 1;
    
    for (var i = 1; i <= 7*6; i++)
    {
    
        //Новая строка, если неделя закончилась
        if (i % 7 == 1 && i != 1)
        calendar += "</tr><tr class=\"dayslist\">";
        
        //Выводим дни    
        var currentclass = "day";
        var currentaction = "";
        
        //Если выходные дни - выдеяем
        if (i % 7 == 6 || i % 7 == 0)
        currentclass = "day weekday";
        
        //Если сегодняшний день - выделяем
        if (day == today)
        currentclass += " today";
        
        //Если есть события - выделяем
        if (events[day + "." + curmonth] != null)
        {
            currentclass += " event";
            currentaction = "onmousemove=\"ShowTip('<span class=event-data>" + months_of_year[g_date.getMonth()] + ",&nbsp;" + day + "</span><br/>" + events[day + "." + curmonth] + "',event)\"";
            currentaction += "onmouseout=\"HideTip()\"";
        }
        
        if (i > first_day_of_month && day <= max_days_current)
        {
            calendar += "<td " + currentaction + " class=\"" + currentclass + "\">" + day + "</td>";
            
            day++;
        }
        else
        {
            calendar += "<td class=\"" + currentclass + "\">&nbsp;</td>";
        }

    }
    
    calendar += "</table>";
    //Окончание таблицы
    
    //Окончание внешнего контейнера
    calendar += "</div>";
    
    element.innerHTML = calendar;
}

function ShowTip(txt, ev)
{
    document.getElementById("TOOLTIP").style.display = "block";
    document.getElementById("TOOLTIP").innerHTML = txt;
    document.getElementById("TOOLTIP").style.top = ev.clientY+10;
    document.getElementById("TOOLTIP").style.left = ev.clientX+10;
}

function HideTip()
{
    document.getElementById("TOOLTIP").style.display = "none";
    document.getElementById("TOOLTIP").innerHTML = "";
} 
