

function Easter(x) {
	window.status="Calculations ongoing"

	a=x%19
	c=x%100
	b=Math.floor(x/100)
	e=b%4
	d=Math.floor(b/4)
	f=Math.floor((b+8)/25)
	g=Math.floor((b-f+1)/3)
	h=(19*a+b-d-g+15)%30
	i=Math.floor(c/4)
	k=c%4
	l=(32 + 2*e + 2*i - h - k)%7
	m=Math.floor((a + 11*h + 22*l)/451)
	n=Math.floor((h + l - 7*m + 114 )/31)
	p=(h + l - 7*m + 114)%31 + 1
	if (n==3) {nt="March"}
	if (n==4) {nt="April"}
	s = padout(n) + "." + padout(p)
	return s

	//form.nn.value = nt
	//form.pp.value = p+1
	window.status="Calculations finished"
}

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);monthsofyear
	return monthsofyear[month] + ' ' + 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('Sunday',
                                 'Monday',
                                 'Tuesday',
                                 'Wednesday',
                                 'Thursday',
                                 'Friday',
                                 'Saturday');

var monthsofyear = new makeArray('January',
                                 'February',
                                 'March',
                                 'April',
                                 'May',
                                 'June',
                                 'July',
                                 'August',
                                 'September',
                                 'October',
                                 'November',
                                 'December');

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 + Nths(day) +' '+ monthsofyear[month] +' '+ year;
}

function catholicfests(year){

var easter = Easter(year);
var easterDay = getDD(easter);
var easterMonth = getMM(easter);

p = easter
var when = addDays(easterDay,easterMonth,year,-56);
S = when;
var when = addDays(easterDay,easterMonth,year,-46);
H = when;
var when = addDays(easterDay,easterMonth,year,39);
A = when;
var when = addDays(easterDay,easterMonth,year,49);
Pent = when; 
var when = addDays(easterDay,easterMonth,year,56);
T = when;
}
