// Zestaw funkcji dla świąt ruchomych
// Jarosław Kustosik
// jkusto@q-100.pl
// przy wykorzystaniu procedur stworzonych przez:
// Maria Dżaman 
// mdzaman@poczta.onet.pl
/*
Skrypt stanowi fragment translacji programu napisanego w Delphi 3.0

Parametr wejściowy dla wszystkich funkcji jest czterocyfrową liczbą roku.

funkcje:

WielkanocD(Y) - wyznacza pierwszy dzień Wielkiej Nocy
WielkanocM(Y) - wyznacza miesiąc pierwszego dnia Wielkiej Nocy
Wielkanoc2D(Y) - wyznacza pierwszy dzień Wielkiej Nocy
Wielkanoc2M(Y) - wyznacza miesiąc pierwszego dnia Wielkiej Nocy
BozecialoD(Y) - Wyznacza dzień Bożego Ciała
BozecialoM(Y) - Wyznacza miesiąc Bożego Ciała
SrodapopiD(Y) - wyznacza dzien Środy Popielcowej
SrodapopiM(Y) - wyznacza miesiąc Środy Popielcowej

*/


function CzyRokPrzestepny(Year)
{

        if(Math.round(Year/4) == Year/4){
                if(Math.round(Year/100) == Year/100){
                        if(Math.round(Year/400) == Year/400)
                                return true;
                        else return false;
                }else return true;
        }
        return false;
}

function IloscDniMiesiaca(Year, Month)
{
         if(Month == 1){
                   if(CzyRokPrzestepny(Year)) return 29;
                   else return 28;
         }else{
                   if(Month >6) Month++;
                   if(Month/2 == Math.round(Month/2))  return 31;
         }
 return 30;
}


function Wielkanoc1(Y) 
{
        // na podstawie algorytmu Oudin
    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;
    return L;
}

function WielkanocM(Y) {
        // zwraca nr miesiaca Wielkiej Nocy
    var L= Wielkanoc1(Y);
    var M = 3 + Math.floor((L + 40) / 44);
        return M;
}


function WielkanocD(Y) {
        // zwraca nr pierwszego dnia Wiekiej Nocy
    var L= Wielkanoc1(Y);
    var M=WielkanocM(Y,L);
    var D = L + 28 - 31 * Math.floor(M / 4);
        return D;
}


function BozecialoD(Y)
{
        var text1="";
        var dayb = WielkanocD(Y) - 1;
         var monthb = WielkanocM(Y) + 2;
        var year = parseInt(Y);
        if (dayb<1) {monthb=monthb-1; dayb=IloscDniMiesiaca(year, monthb-1);};
        return dayb;
}
 

function BozecialoM(Y)
{
        var text1="";
        var dayb = WielkanocD(Y) - 1;
         var monthb = WielkanocM(Y) + 2;
        var year = parseInt(Y);
        if (dayb<1) {monthb=monthb-1; dayb=IloscDniMiesiaca(year, monthb-1);};
        return monthb;
}
 

function SrpopD(Y)
{
        var text1="";
        var Dayw=WielkanocD(Y)
        var dayp=Dayw-46;
        var Monthw=WielkanocM(Y)
        var year = parseInt(Y);
        var monthp=3;
        dzluty =IloscDniMiesiaca(Y, 1);
        if( (Monthw==4)&& (Dayw>15)) 
                        {dayp=Dayw-46+31; monthp=3;};
        if( (Monthw==4)&& (Dayw<16)) 
                {dayp=Dayw-46+31+dzluty; monthp=2;};
if (Monthw==3) 
        {dayp=Dayw-46+dzluty; monthp=2; };
        return dayp;
}

function SrpopM(Y)
{
        var text1="";
        var Dayw=WielkanocD(Y)
        var dayp=Dayw-46;
        var Monthw=WielkanocM(Y)
        var year = parseInt(Y);
        var monthp=3;
        dzluty =IloscDniMiesiaca(Y, 1);
        if( (Monthw==4)&& (Dayw>15)) 
                        {dayp=Dayw-46+31; monthp=3;};
        if( (Monthw==4)&& (Dayw<16)) 
		{dayp=Dayw-46+31+dzluty; monthp=2;};
if (Monthw==3) 
	{dayp=Dayw-46+dzluty; monthp=2; };
	return monthp;
}


function Wielkanoc2D(Y)
{
	var text1="";
	var dayv , monthv;
	dayv=WielkanocD(Y)+1;
	monthv=WielkanocM(Y);
	if (dayv==32)
	{dayv=1;
	monthv=4;
	}
	return dayv;
}
 
function Wielkanoc2M(Y)
{
	var text1="";
	var dayv , monthv;
	dayv=WielkanocD(Y)+1;
	monthv=WielkanocM(Y);
	if (dayv==32)
	{dayv=1;
	monthv=4;
	}
	return monthv;
}

// -->

