function Easter(Y) {
    var C = Math.floor(Y/100);
    var N = Y - 19*Math.floor(Y/19);
    var K = Math.floor((C - 17)/25);
    var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;
    I = I - 30*Math.floor((I/30));
    I = I - Math.floor(I/28)*(1 - Math.floor(I/28)*Math.floor(29/(I + 1))*Math.floor((21 - N)/11));
    var J = Y + Math.floor(Y/4) + I + 2 - C + Math.floor(C/4);
    J = J - 7*Math.floor(J/7);
    var L = I - J;
    var M = 3 + Math.floor((L + 40)/44);
    var D = L + 28 - 31*Math.floor(M/4);

    return padout(M) + '.' + padout(D);
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function getMM(string)  { return eval(string.substring(0,2)); }

function getDD(string)  { return eval(string.substring(3,5)); }

function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var accumulate    = new makeArray(  0, 31, 59, 90,120,151,181,212,243,273,304,334);
var accumulateLY  = new makeArray(  0, 31, 60, 91,121,152,182,213,244,274,305,335);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function daysinyear(year) { if (LeapYear(year)) return 366; else return 365; }

function addDays(day,month,year,addition) {
    if (LeapYear(year)) var number = day + accumulateLY[month] + addition;
    else                var number = day + accumulate[month]   + addition;

    var days = daysinyear(year);
   
    while (number > days) {
        number -= days;
        days = daysinyear(++year);
    }

    while (number < 1) {
        days = daysinyear(--year);
        number += days;
    }

    month = 1;

    if (LeapYear(year)) {
        while (number > accumulateLY[month]) { month++; }
        day = number - accumulateLY[--month];
    }
    else {
        while (number > accumulate[month]) { month++; }
        day = number - accumulate[--month];
    }

    return year + '.' + padout(month) + '.' + padout(day);
}

function getYYYY(string) {
    return eval(string.substring(0,string.indexOf('.')));
}

function getMMDD(string) {
    return string.substring(string.indexOf('.')+1,string.length);
}

var daysofweek   = new makeArray('Niedziela',
				 'Poniedzia&#322;ek', 
				 'Wtorek', 
				 '&#346;roda', 
				 'Czwartek', 
				 'Pi&#261;tek', 
				 'Sobota' );

var monthsofyear = new makeArray('stycze&#324;', 
				 'lutego',    							
				 'marca',  							
				 'kwietnia',																																			 
				 'maja',     																																			
				 'czerwca',																																			 
				 'lipca',  																																			
				 'sierpie&#324;',																																			 
				 'wrzesie&#324;',																																			 
				 'pa&#378;dziernik',     																												
				 'listopad',																																					 
				 'grudzie&#324;');

function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d+1;
}

function Nths(day) { 
    if (day == 1 || day == 21 || day == 31) return 'st';
    if (day == 2 || day == 22) return 'nd';
    if (day == 3 || day == 23) return 'rd';
    return 'th';
}

function FullDate(day,month,year) {
    return daysofweek[DayOfWeek(day,month,year)] +' '+ day +'. '+ monthsofyear[month] +' '+ year;
}