/**
 * @author Mikołaj Stodolny
 * @copyright Mikołaj Stodolny 2008
 */
function Kalendarz(){
    var czas = new Date();
    var dzisiaj = new ObecnyDzien(czas);
    var dni = new Array("Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "So");
    var miesiace = new Array("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
    var tablica = null;
    this.pokazKalendarz = start;
    this.wczesniej = wczesniej;
    this.pozniej = pozniej;
    
    function dniMiesiaca(){
        var dm = null;
        var tmp_d = new Date();
        tmp_d.setMonth(czas.getMonth());
        tmp_d.setYear(czas.getFullYear());
        var miech = czas.getMonth();
        if (miech == 0) {
            dm = 31;
        }
        if (miech == 1) {
            if (tmp_d.getFullYear() % 4 == 0) {
                dm = 29;
            }
            else {
                dm = 28;
            }
        }
        if (miech > 1 && miech < 6) {
            if (miech % 2 == 0) {
                dm = 31;
            }
            else {
                dm = 30;
            }
        }
        if (miech >= 6) {
            if (miech % 2 == 0) {
                dm = 30;
            }
            else {
                dm = 31;
            }
        }
        var komorka = new Array();
        tmp_d.setDate(1);
        var poczl = 0;
        if (tmp_d.getDay() == 0) {
            poczl = 6;
        }
        else {
            poczl = tmp_d.getDay() - 1;
        }
        for (var i = 0; i < poczl; i++) {
            komorka[i] = document.createElement('td');
        }
        for (var i = 0; i < dm; i++) {
            komorka[i + poczl] = document.createElement('td');
            komorka[i + poczl].innerHTML = i + 1;
            tmp_d.setDate(i + 1);
            if (dzisiaj.czyToDzisiaj(tmp_d)) 
                komorka[i + poczl].id = "dzis";
        }
        return komorka;
    }
    
    function pokazKalendarz(){
        var l = 0;
        var kom = dniMiesiaca();
        var rzad = new Array();
        var tytul = document.createElement('caption');
        var lewy = document.createElement('td');
	    lewy.innerHTML = '<a href="javascript:kal.wczesniej();"><-</a> ';
        var srodek = document.createElement('td');
        srodek.colSpan=5;
		tytul.innerHTML = miesiace[czas.getMonth()] + " " + czas.getFullYear();
        srodek.appendChild(tytul);
        var prawy = document.createElement('td');
        prawy.innerHTML = '<a href="javascript:kal.pozniej();">-></a> ';
        rzad[0] = document.createElement('tr');
		rzad[0].appendChild(lewy);
        rzad[0].appendChild(srodek);
        rzad[0].appendChild(prawy);
        rzad[1] = document.createElement('tr');
        var j = 1;
        for (i = 1; i < 8; i++) {
            if (i == 7) 
                j = 0;
            dzienTygodnia = document.createElement('td');
            dzienTygodnia.innerHTML = dni[j];
            if (j == 0) 
                dzienTygodnia.className = "swieta";
            rzad[1].appendChild(dzienTygodnia);
            j++;
        }
        for (var i = 0; i < kom.length; i++) {
            if (l == 0) {
                rzad[rzad.length] = document.createElement('tr');
            }
            if (l == 6) {
                kom[i].className = "swieta";
            }
            rzad[rzad.length - 1].appendChild(kom[i]);
            
            l++;
            if (l > 6) 
                l = 0;
        }
        var temp_tb = document.createElement('tbody');
        temp_tb.align = "center";
        for (var i = 0; i < rzad.length; i++) {
            temp_tb.appendChild(rzad[i]);
        }
        var temp_tab = document.createElement('table');
        temp_tab.appendChild(tytul);
        temp_tab.appendChild(temp_tb);
        document.getElementById('kalendarz').appendChild(temp_tab);
        tablica = temp_tab;
    }
    
    function start(){
        document.write('<div id="kalendarz" align="center"></div>');
        pokazKalendarz();
    }
    
    function wczesniej(){
        var miech = czas.getMonth() - 1;
        if (miech < 0) {
            miech = 11;
            czas.setFullYear(czas.getFullYear() - 1);
        }
        czas.setMonth(miech);
        document.getElementById('kalendarz').removeChild(tablica);
        pokazKalendarz();
    }
    
    function pozniej(){
        var miech = czas.getMonth() + 1;
        if (miech > 11) {
            miech = 0;
            czas.setFullYear(czas.getFullYear() + 1);
        }
        czas.setMonth(miech);
        document.getElementById('kalendarz').removeChild(tablica);
        pokazKalendarz();
    }
    
    
}

function ObecnyDzien(tczas){
    dzien = tczas.getDate();
    miesiac = tczas.getMonth();
    rok = tczas.getFullYear();
    this.czyToDzisiaj = porownanie;
	
    function porownanie(zmienna){
        var odpowiedz = false;
        if (rok == zmienna.getFullYear()) {
            if (miesiac == zmienna.getMonth()) {
                if (dzien == zmienna.getDate()) {
                    odpowiedz = true;
                }
            }
        }
        return odpowiedz;
    }
}
