// w JS miesiące zaczynają się od 0 tzn że styczen ma wartosc 0, luty 1 itd.
print("Czy 8 kwietnia 2012 będzie wolne? - "+CzySwieto(new Date(2012,3,8)).toString());
print("Czy 22 listopada 2010 będzie wolne? - "+CzySwieto(new Date(2010, 10, 22)).toString());
print("Czy 26 grudnia 2011 będzie wolne? - "+CzySwieto(new Date(2011, 11, 26)).toString());
function CzySwieto(dt)
{
switch (dt.getMonth())
{
case 0:
{
if (dt.getDate() == 1 || dt.getDate() == 6)
{
return true;
}
break;
}
case 4:
{
if (dt.getDate() == 1 || dt.getDate() == 3)
{
return true;
}
break;
}
case 7:
{
if (dt.getDate() == 15)
{
return true;
}
break;
}
case 10:
{
if (dt.getDate() == 1 || dt.getDate() == 11)
{
return true;
}
break;
}
case 11:
{
if (dt.getDate() == 25 || dt.getDate() == 26)
{
return true;
}
break;
}
}
if (dt.getMonth() >= 3 || dt.getMonth() <= 6)
{
//obliczanie Wielkanocy
a = dt.getFullYear() % 19;
b = Math.floor(dt.getFullYear() / 100);
c = dt.getFullYear() % 100;
d = Math.floor(b / 4);
e = 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);
p = (h + l - 7 * m + 114) % 31;
dzien = p + 1;
miesiac = Math.floor((h + l - 7 * m + 114) / 31);
miesiac--;//w JS miesiące zaczynają się od 0
Wielkanoc = new Date(dt.getFullYear(), miesiac, dzien);
Wielkanoc2 = new Date(dt.getFullYear(), miesiac, dzien+1);
ZDS = new Date(dt.getFullYear(), miesiac, dzien+49);
BC = new Date(dt.getFullYear(), miesiac, dzien+60);
if (dt.valueOf() == Wielkanoc.valueOf() || dt.valueOf() == Wielkanoc2.valueOf() || dt.valueOf() == ZDS.valueOf() || dt.valueOf() == BC.valueOf())
{
return true;
}
}
return false;
}
Ly8gdyBKUyBtaWVzacSFY2UgemFjenluYWrEhSBzacSZIG9kIDAgdHpuIMW8ZSBzdHljemVuIG1hIHdhcnRvc2MgMCwgbHV0eSAxIGl0ZC4KIHByaW50KCJDenkgOCBrd2lldG5pYSAyMDEyIGLEmWR6aWUgd29sbmU/IC0gIitDenlTd2lldG8obmV3IERhdGUoMjAxMiwzLDgpKS50b1N0cmluZygpKTsKIAogcHJpbnQoIkN6eSAyMiBsaXN0b3BhZGEgMjAxMCBixJlkemllIHdvbG5lPyAtICIrQ3p5U3dpZXRvKG5ldyBEYXRlKDIwMTAsIDEwLCAyMikpLnRvU3RyaW5nKCkpOwogCiBwcmludCgiQ3p5IDI2IGdydWRuaWEgMjAxMSBixJlkemllIHdvbG5lPyAtICIrQ3p5U3dpZXRvKG5ldyBEYXRlKDIwMTEsIDExLCAyNikpLnRvU3RyaW5nKCkpOwogCmZ1bmN0aW9uIEN6eVN3aWV0byhkdCkKICAgewogCiAgICAgICAgICAgIHN3aXRjaCAoZHQuZ2V0TW9udGgoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGR0LmdldERhdGUoKSA9PSAxIHx8IGR0LmdldERhdGUoKSA9PSA2KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHQuZ2V0RGF0ZSgpID09IDEgfHwgZHQuZ2V0RGF0ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkdC5nZXREYXRlKCkgPT0gMTUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHQuZ2V0RGF0ZSgpID09IDEgfHwgZHQuZ2V0RGF0ZSgpID09IDExKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGR0LmdldERhdGUoKSA9PSAyNSB8fCBkdC5nZXREYXRlKCkgPT0gMjYpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogCiAgICAgICAgICAgIGlmIChkdC5nZXRNb250aCgpID49IDMgfHwgZHQuZ2V0TW9udGgoKSA8PSA2KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvL29ibGljemFuaWUgV2llbGthbm9jeQogICAgICAgICAgICAgICAgYSA9IGR0LmdldEZ1bGxZZWFyKCkgJSAxOTsKICAgICAgICAgICAgICAgIGIgPSBNYXRoLmZsb29yKGR0LmdldEZ1bGxZZWFyKCkgLyAxMDApOwogICAgICAgICAgICAgICAgYyA9IGR0LmdldEZ1bGxZZWFyKCkgJSAxMDA7CiAgICAgICAgICAgICAgICBkID0gTWF0aC5mbG9vcihiIC8gNCk7CiAgICAgICAgICAgICAgICBlID0gYiAlIDQ7CiAgICAgICAgICAgICAgICBmID0gTWF0aC5mbG9vcigoYiArIDgpIC8gMjUpOwogICAgICAgICAgICAgICAgZyA9IE1hdGguZmxvb3IoKGIgLSBmICsgMSkgLyAzKTsKICAgICAgICAgICAgICAgIGggPSAoMTkgKiBhICsgYiAtIGQgLSBnICsgMTUpICUgMzA7CiAgICAgICAgICAgICAgICBpID0gTWF0aC5mbG9vcihjIC8gNCk7CiAgICAgICAgICAgICAgICBrID0gYyAlIDQ7CiAgICAgICAgICAgICAgICBsPSAoMzIrMiplKzIqaS1oLWspJTc7CiAgICAgICAgICAgICAgICBtID0gTWF0aC5mbG9vcigoYSsxMSpoKzIyKmwpLzQ1MSk7CiAgICAgICAgICAgICAgICBwID0gKGggKyBsIC0gNyAqIG0gKyAxMTQpICUgMzE7CiAgICAgICAgICAgICAgICBkemllbiA9IHAgKyAxOwogICAgICAgICAgICAgICAgbWllc2lhYyA9IE1hdGguZmxvb3IoKGggKyBsIC0gNyAqIG0gKyAxMTQpIC8gMzEpOwogCiAgICAgICAgICAgICAgICBtaWVzaWFjLS07Ly93IEpTIG1pZXNpxIVjZSB6YWN6eW5hasSFIHNpxJkgb2QgMCAKIAogICAgICAgICAgICAgICAgV2llbGthbm9jID0gbmV3IERhdGUoZHQuZ2V0RnVsbFllYXIoKSwgbWllc2lhYywgZHppZW4pOwogICAgICAgICAgICAgICAgV2llbGthbm9jMiA9IG5ldyBEYXRlKGR0LmdldEZ1bGxZZWFyKCksIG1pZXNpYWMsIGR6aWVuKzEpOwogICAgICAgICAgICAgICAgWkRTID0gbmV3IERhdGUoZHQuZ2V0RnVsbFllYXIoKSwgbWllc2lhYywgZHppZW4rNDkpOwogICAgICAgICAgICAgICAgQkMgPSBuZXcgRGF0ZShkdC5nZXRGdWxsWWVhcigpLCBtaWVzaWFjLCBkemllbis2MCk7CiAKICAgICAgICAgICAgICAgIGlmIChkdC52YWx1ZU9mKCkgPT0gV2llbGthbm9jLnZhbHVlT2YoKSB8fCBkdC52YWx1ZU9mKCkgPT0gV2llbGthbm9jMi52YWx1ZU9mKCkgfHwgZHQudmFsdWVPZigpID09IFpEUy52YWx1ZU9mKCkgfHwgZHQudmFsdWVPZigpID09IEJDLnZhbHVlT2YoKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQ==