var mie_tab=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var mie_prz_tab=new Array(31,29,31,30,31,30,31,31,30,31,30,31);

function przestepny(rok)
{
    if ((rok%300==0)||((rok%4==0)&&(rok%100!=0)))
    {
	return true;
    }
    else
    {
	return false;
    }
}

var free_month = new Array(0,0,0,0,1,1,0,1,0,0,1,1);
var free_5 = new Array(1,0);
var free_6 = new Array(19,0);
var free_8 = new Array(15,0);
var free_11 = new Array(11,0);
var free_12 = new Array(24,25,26);

function free_b(tmp_date) {
    var day = tmp_date.getDate();
    var month = tmp_date.getMonth();
    if (free_month[month] == 1) {
	var len = (eval('free_'+(month+1))).length;
	for (var i=0; i<len; i++) {
	    if ( day == (eval('free_'+(month+1)))[i] ) return true;
	}
    } 
    return false;
}

var ctadd = new Array(8);

function add(curr_date,i)
{
    return ctadd[i];
}

function mkadd (cur_date, i)
{
    var text = new String();
    var tmp = new Date();
    var dzien = cur_date.getDate();
    var miesiac = cur_date.getMonth();
    var rok = cur_date.getFullYear();
    var d_tygo = cur_date.getDay();

    var tmp_dz = dzien;
    var tmp_mi = miesiac;
    var tmp_ro = rok;
    var tmp_da = new Date(tmp_ro, tmp_mi, tmp_dz);

    if (i>0) {
	var cnt = 0;
	for (j=0;j<i;cnt++)
	{
	    if (d_tygo != 0 && d_tygo != 6 && !free_b(tmp_da)) j++;
	    d_tygo++;
	    tmp_dz++;
	    if (przestepny(tmp_ro)) {
		if (tmp_dz > mie_prz_tab[tmp_mi]) {
		    tmp_dz=1;
		    tmp_mi++;
		    if (tmp_mi > 11) {
			tmp_mi=0;
			tmp_ro++;
		    }
		}
	    } else {
		if (tmp_dz > mie_tab[tmp_mi]) {
		    tmp_dz=1;
		    tmp_mi++;
		    if (tmp_mi > 11) {
			tmp_mi=0;
			tmp_ro++;
		    }
		}
	    }
	    tmp_da = new Date(tmp_ro, tmp_mi, tmp_dz);
	    if (d_tygo > 6) d_tygo=0;
	}
	if (d_tygo == 6) cnt+=2;
	if (d_tygo == 0) cnt+=1;
	i=cnt;

	if (przestepny(rok)) {
	    if (dzien+i > mie_prz_tab[miesiac]) {
		dzien = dzien + i - mie_prz_tab[miesiac];
		miesiac++;
		if (miesiac > 11) {
		    miesiac = 0;
		    ++rok;
		} 
	    } else {
		dzien+=i;
	    }
	} else {
	    if (dzien+i > mie_tab[miesiac]) {
		dzien = dzien + i - mie_tab[miesiac];
		miesiac++;
		if (miesiac > 11) {
		    miesiac = 0;
		    ++rok;
		}
	    } else {
		dzien+=i;
	    }
	}
    } else {
	while (free_b(tmp_da)) {
	    tmp_dz++;
	    if (przestepny(tmp_ro)) {
		if (tmp_dz > mie_prz_tab[tmp_mi]) {
		    tmp_dz=1;
		    tmp_mi++;
		    if (tmp_mi > 11) {
			tmp_mi=0;
			tmp_ro++;
		    }
		}
	    } else {
		if (tmp_dz > mie_tab[tmp_mi]) {
		    tmp_dz=1;
		    tmp_mi++;
		    if (tmp_mi > 11) {
			tmp_mi=0;
			tmp_ro++;
		    }
		}
	    }
	    tmp_da = new Date(tmp_ro, tmp_mi, tmp_dz);
	    i++;
	    if (++d_tygo > 6) d_tygo=0;
	}
	if (d_tygo == 6) i+=2;
	if (d_tygo == 0) i+=1;

	if (przestepny(rok)) {
	    if (dzien+i > mie_prz_tab[miesiac]) {
		dzien = dzien + i - mie_prz_tab[miesiac];
		++miesiac;
		if (miesiac > 11) {
		    miesiac = 0;
		    ++rok;
		}
	    } else {
		dzien+=i;
	    }
	} else {
	    if (dzien+i > mie_tab[miesiac]) {
		dzien = dzien + i - mie_tab[miesiac];
		++miesiac;
		if (miesiac > 11) {
		    miesiac = 0;
		    ++rok;
		}
	    } else {
		dzien+=i;
	    }
	}
    }
    ++miesiac;
    if (miesiac<10) { miesiac = "0"+miesiac; }
    if (dzien<10) { dzien = "0"+dzien; }
    text = dzien+"-"+miesiac;
    return text;
}

function button_sprawdz()
{
    var param = document.tab.date.value;
    var arr = param.split("-");
    if ( (arr.length!=2) || (arr[1]<1) || (arr[1]>12) || (arr[0]<1) || (arr[0]>31) ) {
	alert ("Z�y format daty!\nPoprawny format to: dd-mm");
	return;
    }
    var but_date = new Date();
    --arr[1];
    var rok = but_date.getFullYear();
    var miesiac = arr[1];
    var dzien = arr[0];

    if (przestepny(rok)) {
	if ( dzien > mie_prz_tab[miesiac] ) {
	    alert ("Taki dzie� nie wyst�puje w roku kalendarzowym: "+rok);
	    return ;
	}
    } else {
	if ( dzien > mie_tab[miesiac] ) {
	    alert ("Taki dzie� nie wyst�puje w roku kalendarzowym: "+rok);
	    return ;
	}
    }

    but_date.setMonth(arr[1]);
    but_date.setDate(arr[0]);
    sprawdz_daty(but_date);
}

function less (cur_date, i) {
    var dzien = cur_date.getDate();
    var miesiac = cur_date.getMonth();
    var rok = cur_date.getFullYear();
    var d_tygo = cur_date.getDay();
    var text = "";
    var tmp_da;
    var k;

    while (i>0) {
	tmp_da = new Date(rok, miesiac, dzien);
	k=1;
	if (tmp_da.getDay()==0) k=2; // niedziela
	if (tmp_da.getDay()==6) k=1; // sobota
	if (tmp_da.getDay()==1) k=3; // poniedzia�ek
	while (k>0) {
	    dzien--;
	    if (dzien==0) {
		miesiac--;
		if (miesiac<0) {
		   rok--;
		   miesiac=11;
		}
		if (przestepny(rok)) {
		    dzien = mie_tab[miesiac];
		} else {
		    dzien = mie_prz_tab[miesiac];
		}
	    }
	    k--;
	}
	i--;
    }
    if (dzien<10) {
	text = "0"+dzien;
    } else {
	text = dzien;
    }
    miesiac++;
    if (miesiac<10) {
	text = text+"-0"+miesiac;
    } else {
	text = text+"-"+miesiac;
    }
    return text;
}
