
function Calendar(div, pointer)
{
    this.div = document.getElementById(div);
    this.pointer = pointer;
    this.days = ['Po','Út','St','Čt','Pá','So','Ne'];
    this.months = ['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'];

    this.onclickDelegates = new Array;

    this.lastDay = function(date)
    {
        if (date == null)
        {
            date = new Date();
        }

        var month = date.getMonth();

        for (var i = 31; i>=28; i--)
        {
            var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), i, 0, 0, 0))
            if (d.getMonth() == month)
            {
                return i;
            }
        }
        return 30;
    }


    this.show = function(date)
    {
        if (this.div == null)
        {
            return;
        }
        this.div.innerHTML = '';

        if (date == null)
        {
            date = new Date();
        }

        var table = document.createElement('table');
        table.setAttribute('class', 'calendar');
        //table.setAttribute('style', 'background-color: #000');
        var tbody = document.createElement('tbody');

        var date2 = new Date(date);
        date2.setMonth(date.getMonth() - 1);

        var date3 = new Date(date);
        date3.setMonth(date.getMonth() + 1);

        var tr = document.createElement('tr');
        var td = document.createElement('th');
        td.innerHTML = '<a href="javascript:void(0);" style="font-weight:normal" onclick="'+this.pointer+'.show(new Date(\''+date2+'\'));"><img src="http://www.umpires.cz/resources/images/arrow_l.gif" alt="left" style="width:10px; height:10px"/></a>';
        tr.appendChild(td);

        var td = document.createElement('th');
        td.colSpan = 5;
        var text = document.createTextNode(this.months[date.getMonth()] + ' ' + date.getFullYear());
        td.appendChild(text);
        tr.appendChild(td);

        var td = document.createElement('th');
        td.innerHTML = '<a href="javascript:void(0);" style="font-weight:normal" onclick="'+this.pointer+'.show(new Date(\''+date3+'\'));"><img src="http://www.umpires.cz/resources/images/arrow_r.gif" alt="right" style="width:10px; height:10px"/></a>';
        tr.appendChild(td);

        tbody.appendChild(tr);




        var tr = document.createElement('tr');
        for(var i = 0; i<7; i++)
        {
            var td = document.createElement('th');
            var text = document.createTextNode(this.days[i]);
            td.appendChild(text);
            tr.appendChild(td);
        }
        tbody.appendChild(tr);

        var day = 1;
        var first = new Date(Date.UTC(date.getFullYear(), date.getMonth(), 1, 0, 0, 0)).getDay();
        if (first == 0) first = 7;


        var last = this.lastDay(date);

        for(var week = 1; week <= 6; week++)
        {
            var tr = document.createElement('tr');

            for(var j = 1; j<=7; j++)
            {
                var td = document.createElement('td');
                if (week == 1 && j < first || day > last)
                {
                    td.innerHTML = "&nbsp";
                }
                else
                {
                    td.innerHTML = "<a href=\"javascript:void(0);\" onclick=\"" + this.pointer + ".onclick('" + date.getFullYear() + "','" + (date.getMonth()+1) + "','" + day + "');\">" + day + "</a>";

                    day++;
                }
                tr.appendChild(td);
            }

            tbody.appendChild(tr);
        }

        table.appendChild(tbody);


        //this.div.appendChild(table);
        this.div.innerHTML = '<table class="calendar">'+ table.innerHTML + '</table>';

    }

    this.getDiv = function()
    {
        return this.div;
    }

    this.addOnclick = function(func)
    {
        this.onclickDelegates[this.onclickDelegates.length] = func;
    }

    this.onclick = function(year, month, day)
    {
        for(var i = 0; i < this.onclickDelegates.length; i++)
        {
            var val = this.onclickDelegates[i];

            if (val == null || typeof(val) != 'function')
            {
                continue;
            }

            val(year, month, day);
        }
    }

}