function _Calendar() {
    this.Months = new Array("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
    this.myDate = new Date();
    this.Month = parseInt(this.myDate.getMonth());
    this.Year = parseInt(this.myDate.getFullYear());
    this.datyNaMiesiac = null;
    this.t = null;


    this.inArray = function(tablica, wartosc) {
        if (typeof(tablica) != 'object') return false;
        if (typeof(wartosc) == 'object') return false;
        for (var x = 0; x < tablica.length; x++)
            if (tablica[x] == wartosc) return true;
        return false
    };

    this.numLeapYears = function(StartYear, EndYear) {
        if (EndYear >= StartYear) {
            for (LeapYears = 0; StartYear <= EndYear; StartYear++)
                if (this.isLeapYear(StartYear)) LeapYears++;
        } else {
            for (LeapYears = 0; EndYear <= StartYear; EndYear++)
                if (this.isLeapYear(EndYear)) LeapYears++;
        }
        return LeapYears;
    };

    this.isLeapYear = function(Year) {
        if (Math.round(Year / 4) == Year / 4) {
            if (Math.round(Year / 100) == Year / 100) {
                if (Math.round(Year / 400) == Year / 400) return true;
                return false;
            }
            return true;
        }
        return false;
    };

    this.findNewYearStartingDay = function(Year) {
        var LeapYears = this.numLeapYears(1995, Year);
        var Years = (Year >= 1995) ? ((Year - 1995) + LeapYears) : ((Year - 1995) - LeapYears);
        var Day = (Year >= 1995) ? (Math.round(((Years / 7 - Math.floor(Years / 7)) * 7) + .1)) : (Math.round(((Years / 7 - Math.ceil(Years / 7)) * 7) - .1));
        if (Year >= 1995) {
            if (this.isLeapYear(Year)) Day--;
        } else {
            Day += 7;
        }
        if (Day < 0) Day = 6;
        if (Day > 6) Day = 0;
        return Day;
    };

    this.findNumDaysInMonth = function(Year, Month) {
        if (Month == 1) {
            if (this.isLeapYear(Year)) return 29;
            else return 28;
        } else {
            if (Month > 6) Month++;
            if (Month / 2 == Math.round(Month / 2)) return 31;
        }
        return 30;
    };

    this.findMonthStartDay = function(NewYearDay, Year, Month) {
        var AddArray = new Array(12);
        AddArray[0] = 0;
        AddArray[1] = 3;
        AddArray[2] = 3;
        AddArray[3] = 6;
        AddArray[4] = 1;
        AddArray[5] = 4;
        AddArray[6] = 6;
        AddArray[7] = 2;
        AddArray[8] = 5;
        AddArray[9] = 0;
        AddArray[10] = 3;
        AddArray[11] = 5;

        var MonthStartDay = NewYearDay + AddArray[Month];
        if (this.isLeapYear(Year) && (Month > 1)) MonthStartDay ++;
        if (MonthStartDay > 6) MonthStartDay -= 7;

        return MonthStartDay;
    };

    this.clearCalendar = function() {
        $('#calendar td').each(function() {
            $ob = $(this);
            $ob.removeClass().addClass("default");
            $ob.html('');
            $ob.unbind();
            $ob.attr('title', '');
            $ob.addClass("dzienNiema");
            $ob.css({cursor:'default'});
        });
    };

    this.fillCalendar = function() {
        this.clearCalendar();
        var NewYearDay = this.findNewYearStartingDay(this.Year);
        var MonthStartDay = this.findMonthStartDay(NewYearDay, this.Year, this.Month);
        var NumDaysInMonth = this.findNumDaysInMonth(this.Year, this.Month);

        var nr = 1;
        $('#calendar td').each(function(k) {
            nr++;
            var t = nr - 1 - MonthStartDay;
            if (t >= 1 && t <= NumDaysInMonth) {
                t = (t < 10) ? '0' + t : t;
                $(this).html(t);
                $(this).css({cursor:'default'});
                var klasa = ($(this).is(":first-child")) ? 'dzienNiedziela' : "dzien";
                $(this).removeClass().addClass(klasa);
            }
        });
        this.setDaysWithPosts();
    };

    this.setDaysWithPosts = function() {
        var ob = this;
        var $tabela = $('#calendar');
        var $div = $tabela.parent();
        $.ajax({
            url: '/scripts/php_functions/kalendarz_f.php',
            data: {
                akcja : 'pobierzDaty',
                m : ob.Month,
                r : ob.Year
            },
            dataType : 'json',
            success: function(json) {
                if (!jQuery.isEmptyObject(json)) {

                    var nr = 1;
                    var NewYearDay = ob.findNewYearStartingDay(ob.Year);
                    var MonthStartDay = ob.findMonthStartDay(NewYearDay, ob.Year, ob.Month);
                    var NumDaysInMonth = ob.findNumDaysInMonth(ob.Year, ob.Month);
                    var Tmies = ((ob.Month + 1) < 10) ? '0' + (ob.Month + 1) : (ob.Month + 1);

                    $('td', $tabela).each(function(k) {
                        nr++;
                        var t = nr - 1 - MonthStartDay;
                        t = (t < 10) ? '0' + t : t;
                        if (t >= 1 && t <= NumDaysInMonth) {
                            for (x = 0; x < json.length; x++) {
                                var pobranaData = json[x].data;
                                if (pobranaData == ob.Year + "-" + Tmies + "-" + t) {
                                    $(this).css({cursor:'pointer'});
                                    $(this).removeClass().addClass('dzienZWpisem');
                                    $(this).html('<a href="/' +(ob.Year+"-"+Tmies+"-"+t)+ '/show" title="'+json[x].tytul+'">'+$(this).html()+'</a>');
                                }
                            }
                        }
                    });
                }
            },
            complete:function(obj) {
                $('#calendar td a').tooltip()
            }
        });
    };

    this.incDecYearAndMonth = function(val) {
        this.Month += val;
        if (this.Month > 11) {
            this.Year++;
            this.Month = 0;
        }
        if (this.Month < 0) {
            this.Year--;
            this.Month = 11;
        }
        $('#dataKalendarza').html('<strong>' + this.Year + '</strong> ' + this.Months[this.Month]);
        this.fillCalendar()
    };

    this.init = function() {
        var ob = this;
        $('#dataKalendarza').html('<strong>' + ob.Year + '</strong> ' + ob.Months[ob.Month]);
        $('#calendar_data_inc').click(function() {
            ob.incDecYearAndMonth(1)
        });
        $('#calendar_data_dec').click(function() {
            ob.incDecYearAndMonth(-1)
        });
        ob.fillCalendar();

    };
}


$(document).ready(function() {
    var calendar = new _Calendar();
    calendar.init();
});



