﻿//Liturgicky kalendar v Javascriptu   (c) Jirka Bubenicek    mailto:hebrak@yahoo.com

//function onLoad()
//{

//}
var dnesniden = new Date();
var dmr = new kdmr(dnesniden.getDate(), dnesniden.getMonth()+1, dnesniden.getYear());
if (dmr.r<1900) dmr.r+=1900;
var MJDdnes=MJDout(dmr.d, dmr.m, dmr.r);
var MJDnasel=MJDdnes;
document.write("Dnes je "+dmr.d +"."+dmr.m +"."+dmr.r+"<br>");
document.write(liturg(MJDdnes));


function count_img() {  if (++num_img == 20) pistable(); }
var num_img = -1;

//function onLoad() {MJDin(MJDdnes); count_img(); }

function onKonquError() {
 for (var k = 1; k < 21; k++) { onLoad(); };
 dnesekclick();
} 
/*
inum = new Array(17);

for(var j = 0; j < 20; j++) {
    inum[j] = new Image();
    inum[j].onload = count_img;
    inum[j].src = "" +j + ".gif";
}
*/
function kdmr(dd,mm,rr){
this.d=dd; this.m=mm; this.r=rr;
}

function MJDout(dd,mm,rr){
dmr.d=dd; dmr.m=mm; dmr.r=rr;
if (2<mm) {var cc=rr; var ee=mm+1;}
     else {var cc=rr-1; var ee=mm+13}
return Math.floor(365.25*cc)+Math.floor(30.6*ee)+dd-679019;
}

function MJDin(mjd){
var xx=mjd+2400001;
var bb=Math.floor((xx-1867216.25)/36524.25);
bb=xx+1+bb-Math.floor(bb/4);
if (xx<229163) bb=xx;
bb+=1524;
var cc=Math.floor((bb-122.1)/365.25);
xx=Math.floor(365.25*cc);
var ee=Math.floor((bb-xx)/30.6001);
var dd=bb-xx-Math.floor(30.6*ee);
var mm=ee-1; if (14<=ee) mm=ee-13;
var yy=cc-4716; if (mm<=2) yy=cc-4715;
dmr.d=dd; dmr.m=mm; dmr.r=yy;
}


function dentmjd(mjd) {
return (mjd-4) % 7;
}



function MJDvelk(rok){
var A=rok % 19;
var B=rok % 4;
var C=rok % 7;
var D=(19*A+24) % 30;
var E=(2*B+4*C+6*D+5) % 7;
var X=D+E-9;
if (0<X) {if (X==26) X=19;
          if ( (X==25) && (D==28) && (10<A) ) X=18;
          return MJDout(X,4,rok);
          }
    else {X=22+D+E;
          return MJDout(X,3,rok);
          }
}


var NEDc=0;
var NEDp="";
var DOB="";
var BRE=0;
var SVA="";
var V=0;
var R=0;

function liturg(J) {
MJDin(J);
var d=dmr.d;
var m=dmr.m;
var r=dmr.r;
V=MJDvelk(r);
var S=MJDout(24, 12, r);
R=S- ((S-4) % 7) -28;
var JJ=MJDout(13, 1, r); 
var U=JJ-((JJ-4) % 7);
var O=35+R; 
if (S+1==O) O=S+6;
DOB="MEZ";
var pn=0;
if ( (V-46<=J) && (J<V-1) ) {
                      DOB="POS";
                      pn=(J-V+49)/7;}
if ( (V-1<=J) && (J<=V+49) ) {
                      DOB="VEL";
                      pn=(J-V+7)/7;}
if ( (R+7<=J) && (J<=S) ) {
                      DOB="ADV";
                      pn=(J-R)/7;}
if (S<J) { DOB="VAN";
           pn=(J-R)/7;}
if (J<=U) {DOB="VAN";
           pn=(J-U)/7+3;}
if ( (U<J) && (J<V-46) ) pn=(J-U)/7+1;
if ( (V+49<J) && (J<R) ) pn=(J-R)/7+34;

BRE=1+(Math.floor(pn+3) % 4);
  if (S<J) BRE=1;
  if ( (V-2<=J) && (J<V+7) ) BRE=0;
var c=(r+2) % 3; if (R<J) c=r % 3;
c++;
NEDc=0; NEDp=" ";


var ndoba="";
if (DOB=="VAN") ndoba="vánoční";
if (DOB=="POS") ndoba="postní";
if (DOB=="VEL") ndoba="velikonoční";
if (DOB=="ADV") ndoba="adventní";
if (DOB=="MEZ") ndoba="v mezidobí";
SVA="";

if ( (d==2) && (m==1) ) SVA="Pam. sv. B. Velikého a Ř. Naziánského";
if ( (d==17) && (m==1) ) SVA="Pam. sv. Antonína, opata";
if ( (d==18) && (m==1) ) SVA="Pam. P. Marie, Matky jednoty křes»anů";
if ( (d==24) && (m==1) ) SVA="Pam. sv. Frantiąka Saleského";
if ( (d==25) && (m==1) ) SVA="Svát. Obrácení sv. Pavla";
if ( (d==26) && (m==1) ) SVA="Pam. sv. Timoteje a Tita";
if ( (d==28) && (m==1) ) SVA="Pam. sv. Tomáąe Akvinského";
if ( (d==31) && (m==1) ) SVA="Pam. sv. Jana Boska";

if ( (d==5) && (m==2) ) SVA="Pam. sv. Agáty";
if ( (d==6) && (m==2) ) SVA="Pam. sv. Pavla Mikiho a druhů";
if ( (d==10) && (m==2) ) SVA="Pam. sv. Scholastiky";
if ( (d==22) && (m==2) ) SVA="Svát. Stolce sv. Petra";
if ( (d==23) && (m==2) ) SVA="Pam. sv. Polykarpa";

if ( (d==23) && (m==4) ) SVA="Svát. sv. Vojtěcha";
if ( (d==25) && (m==4) ) SVA="Svát. sv. Marka";

if ( (d==2) && (m==5) ) SVA="Pam. sv. Atanáąe";
if ( (d==3)  && (m==5) ) SVA="Svát. sv. Filipa a Jakuba";
if ( (d==14) && (m==5) ) SVA="Svát. sv. Matěje";
if ( (d==16) && (m==5) ) SVA="Svát. sv. Jana Nepomuckého";
if ( (d==26) && (m==5) ) SVA="Pam. sv. Filipa Neriho";
if ( (d==31) && (m==5) ) SVA="Svát. Navątívení Panny Marie";

if ( (d==1) && (m==6) ) SVA="Pam. sv. Justina";
if ( (d==5) && (m==6) ) SVA="Pam. sv. Bonifáce";
if ( (d==11) && (m==6) ) SVA="Pam. sv. Barnabáąe";
if ( (d==13) && (m==6) ) SVA="Pam. sv. Antonína z Padovy";
if ( (d==21) && (m==6) ) SVA="Pam. sv. Aloise";
if ( (d==28) && (m==6) ) SVA="Pam. sv. Ireneje";

if ( (d==3)  && (m==7) ) SVA="Svát. sv. Tomáąe, apoątola";
if ( (d==5)  && (m==7) ) SVA="Slav. sv. Cyrila a Metoděje";
if ( (d==11) && (m==7) ) SVA="Svát. sv. Benedikta";
if ( (d==22) && (m==7) ) SVA="Pam. sv. Marie Magdalény";
if ( (d==25) && (m==7) ) SVA="Svát. sv. Jakuba, apoątola";
if ( (d==26) && (m==7) ) SVA="Pam. sv. Jáchyma a Anny";
if ( (d==29) && (m==7) ) SVA="Pam. sv. Marty";
if ( (d==31) && (m==7) ) SVA="Pam. sv. Ignáce z Loyoly";

if ( (d==1) && (m==8) ) SVA="Pam. sv. Alfonsa z Liguori";
if ( (d==4) && (m==8) ) SVA="Pam. sv. Jana Vianneye";
if ( (d==8) && (m==8) ) SVA="Pam. sv. Dominika";
if ( (d==10) && (m==8) ) SVA="Svát. sv. Vavřince";
if ( (d==11) && (m==8) ) SVA="Pam. sv. Kláry";
if ( (d==14) && (m==8) ) SVA="Pam. sv. Maxmiliána Marie Kolbeho";
if ( (d==20) && (m==8) ) SVA="Pam. sv. Bernarda";
if ( (d==21) && (m==8) ) SVA="Pam. sv. Pia X.";
if ( (d==22) && (m==8) ) SVA="Pam. Panny Marie Královny";
if ( (d==24) && (m==8) ) SVA="Svát. sv. Bartoloměje, apoątola";
if ( (d==27) && (m==8) ) SVA="Pam. sv. Moniky";
if ( (d==28) && (m==8) ) SVA="Pam. sv. Augustina";
if ( (d==29) && (m==8) ) SVA="Umučení sv. Jana Křtitele";

if ( (d==3) && (m==9) ) SVA="Pam. sv. Řehoře Velikého";
if ( (d==8) && (m==9) ) SVA="Svát. Narození Panny Marie";
if ( (d==13) && (m==9) ) SVA="Pam. sv. Jana Zlatoústého";
if ( (d==14) && (m==9) ) SVA="Svát. Povýąení svatého kříľe";
if ( (d==15) && (m==9) ) SVA="Pam. Panny Marie Bolestné";
if ( (d==21) && (m==9) ) SVA="Svát. sv. Matouąe";
if ( (d==27) && (m==9) ) SVA="Pam. sv. Vincence z Paula";
if ( (d==29) && (m==9) ) SVA="Svát. sv. Michaela Gabriela Rafaela";

if ( (d==1) && (m==10) ) SVA="Pam. sv. Terezie od Dítěte Jeľíąe";
if ( (d==2) && (m==10) ) SVA="Pam. sv. andělů stráľných";
if ( (d==4) && (m==10) ) SVA="Pam. sv Frantiąka z Assisi";
if ( (d==15) && (m==10) ) SVA="Pam. sv. Terezie od Jeľíąe";
if ( (d==17) && (m==10) ) SVA="Pam. sv. Ignáce z Antiochie";
if ( (d==18) && (m==10) ) SVA="Svát. sv. Lukáąe, evangelisty";
if ( (d==28) && (m==10) ) SVA="Svát. sv. ©imona a Judy";

if ( (d==2) && (m==11) ) SVA="Vzpomínka na vąechny věrné zemřelé";
if ( (d==9) && (m==11) ) SVA="Svát. Posvěcení lateránské baziliky";
if ( (d==10) && (m==11) ) SVA="Pam. sv. Lva Velikého";
if ( (d==12) && (m==11) ) SVA="Pam. sv. Josafata";
if ( (d==13) && (m==11) ) SVA="Pam. sv. Aneľky České";
if ( (d==17) && (m==11) ) SVA="Pam. sv. Alľběty Uherské";
if ( (d==22) && (m==11) ) SVA="Pam. sv. Cecílie";
if ( (d==30) && (m==11) ) SVA="Svát. sv. Ondřeje";

if ( (d==6) && (m==12) ) SVA="Pam.. sv. Mikuláąe";
if ( (d==7) && (m==12) ) SVA="Pam. sv. Ambroľe";
if ( (d==13) && (m==12) ) SVA="Pam. sv. Lucie";
if ( (d==14) && (m==12) ) SVA="Pam. sv. Jana od Kříľe";
if ( (d==24)  && (m==12) ) SVA='©tědrý den';
if ( (d==25) && (m==12) ) SVA="Slav. Narození Páně";
if ( (d==26)  && (m==12) ) SVA="Svát. sv. ©těpána";
if ( (d==27)  && (m==12) ) SVA="Svát. sv. Jana apoątola";
if ( (d==28) && (m==12) ) SVA="Svát. sv. Mláďátek";

if (dentmjd(J)==0) {
    NEDc=Math.floor(pn);
    if ( (DOB=="VAN") && (NEDc==5) ) NEDc=1;
    if (c==1) NEDp="A";
    if (c==2) NEDp="B";
    if (c==3) NEDp="C"; 
    SVA=""+NEDc+". neděle "+ndoba+" (cyklus čtení "+NEDp+")";
}

 if ( (d==6)  && (m==8) ) SVA='Svát. Proměnění Páně';
 if ( (d==28) && (m==9) ) SVA='Slav. sv. Václava';
 if ( (d==1)  && (m==11) ) SVA='Slav. Vąech svatých';

 if (J==U) SVA='Křest Páně';
 if (J==S+1) SVA='BO®Í HOD VÁNOČNÍ';
 if (J==O) SVA='Svát. sv. Rodiny';
 if ( (d==1)  && (m==1) ) SVA='Slav. Panny Marie, Matky Boľí';
 if ( (d==15) && (m==8) ) SVA='Slav. Nanebevzetí Panny Marie';
 if ( (d==6)  && (m==1) ) SVA='Slav. Zjevení Páně';
 if ( (d==2)  && (m==2) ) SVA='Svát. Uvedení Páně do chrámu';
 if ( (dentmjd(J)==0) || ((J>V-7)&&(J<V+7)) )  {  }
    else { if ( (d==19) && (m==3)  ) SVA='Slav. sv. Josefa';
           if ( (d==25) && (m==3)  ) SVA='Slav. Zvěstování Páně';
           if ( (d==8)  && (m==12) ) SVA='Slav. Neposkvrněného početí P. Marie';  }
 if ( (d==24) && (m==6) ) SVA='Slav. Narození sv. Jana Křtitele';
 if ( (d==29) && (m==6) ) SVA='Slav. sv. Petra a Pavla';

 if (J==V-46) SVA='POPELEČNÍ STŘEDA';
 if (J==V-7) SVA='KVĚTNÁ NEDĚLE';
 if (J==V-3) SVA='ZELENÝ ČTVRTEK';
 if (J==V-2) SVA='VELKÝ PÁTEK';
 if (J==V-1) SVA='BÍLÁ SOBOTA';                 
 if (J==V) SVA="ZMRTVÝCHVSTÁNÍ PÁNĚ";
 if (J==V+39) SVA='Slav. Nanebevstoupení Páně';
 if (J==V+49) SVA='Slav. Seslání Ducha Svatého';
 if (J==V+56) SVA='Slav. Nejsvětějąí Trojice';
 if (J==V+60) SVA='Slav. Těla a krve Páně';
 if (J==V+68) SVA='Slav. Nejsvětějąího srdce Jeľíąova';
 if (J==R)    SVA='Slav. Jeľíąe Krista Krále';



dmr.d=d; dmr.m=m; dmr.r=r;
return SVA;

}



function posundt(dny){ MJDin(MJDout(dmr.d, dmr.m, dmr.r)+dny) }


function indat(){
with (document.tabform){
var d=parseInt(inden.value); if (isNaN(d)) d=0;
var m=parseInt(inmes.value); if (isNaN(m)) m=0;
var r=parseInt(inrok.value); if (isNaN(r)) r=0;
if ((d>31) || (d<1) ){inden.value=""; inden.focus(); return;}
if ((m>12) || (m<1) ){inmes.value=""; inmes.focus(); return;}
if ((r>2099) || (r<1901) ){inrok.value=""; inrok.focus(); return;}
inden.value=dmr.d= d;
inmes.value=dmr.m= m;
inrok.value=dmr.r= r;
MJDnasel=MJDout(d,m,r);
}
}

function insvat(){
with (document.tabform){
var r=parseInt(inrok.value); if (isNaN(r)) r=0;
if ((r>2099) || (r<1901) ) inrok.value=r=dmr.r;
liturg(MJDout(1,1,r));
with (document.tabform.vybersva){
if (selectedIndex==0) MJDnasel=V;
if (selectedIndex==1) MJDnasel=V-46;
if (selectedIndex==2) MJDnasel=V+49;
if (selectedIndex==3) MJDnasel=R+7;
}
MJDin(MJDnasel);
inden.value=dmr.d;
inmes.value=dmr.m;
inrok.value=dmr.r;
}
}

function zaccis(c) { return Math.floor(c/10) }
function poccif(c) { var pc=zaccis(c); if (pc==0) pc=10; return pc; }
function endcif(c) { return c-10*zaccis(c) }


function pistable(){
var mjd=MJDout(dmr.d, dmr.m, dmr.r);
mjd=mjd-dentmjd(mjd);
for (var i = 1; i < 9; i++) {
 document.tabform["datsva"+i].value =liturg(mjd);
if (DOB=="VEL") document["doba"+i].src=inum[16].src;
if (DOB=="POS") document["doba"+i].src=inum[15].src;
if (DOB=="ADV") document["doba"+i].src=inum[12].src;
if (DOB=="VAN") document["doba"+i].src=inum[13].src;
if (DOB=="MEZ") document["doba"+i].src=inum[14].src;
if (BRE==0) BRE=10;
document["brev"+i].src=inum[BRE].src;
document["den1"+i].src=inum[poccif(dmr.d)].src;
document["den2"+i].src=inum[endcif(dmr.d)].src;
document["mes1"+i].src=inum[poccif(dmr.m)].src;
document["mes2"+i].src=inum[endcif(dmr.m)].src;
var rx=zaccis(dmr.r);
document["rok4"+i].src=inum[endcif(dmr.r)].src;
document["rok3"+i].src=inum[endcif(rx)].src;
rx=zaccis(rx);
document["rok1"+i].src=inum[poccif(rx)].src;
document["rok2"+i].src=inum[endcif(rx)].src;

if (mjd==MJDdnes) document["sipka"+i].src=inum[17].src
   else { if (mjd==MJDnasel) document["sipka"+i].src=inum[18].src
           else document["sipka"+i].src=inum[19].src; }

 mjd++;
 }
MJDin(mjd-8);
}


function dnesekclick() {if (num_img>=20) {MJDin(MJDdnes); pistable();} }
function ptydenclick() {if (num_img>=20) {posundt(7); pistable(); } } 
function mtydenclick() {if (num_img>=20) {posundt(-7); pistable(); } }
function datumclick() {if (num_img>=20) {indat(); pistable(); } }
function svatclick() {if (num_img>=20) {insvat(); pistable(); } }

/*
with (document) {
writeln('<FORM NAME="tabform" onSubmit="0">  ');
writeln('<TABLE BORDER=0 width=610><TR>');
writeln('<TD>&nbsp;</TD><TD colspan=2><IMG SRC="kalend.gif"></TD>');
writeln('<TD colspan=2><IMG SRC="help.gif"> </TD></TR>');
for (var i = 1; i < 9; i++) {
 if ((i==1)||(i==8)) var txd="nedele";
 if (i==2) var txd="pondeli";
 if (i==3) var txd="utery";
 if (i==4) var txd="streda";
 if (i==5) var txd="ctvrtek";
 if (i==6) var txd="patek";
 if (i==7) var txd="sobota";
 writeln('<TR><TD width=22><IMG SRC="19.gif" name="sipka'+i+'"> </TD><TD width=70><IMG SRC="'+txd+'.gif"></TD> ');
 write('<TD width=102><IMG SRC="10.gif" name="den1'+i+'"><IMG SRC="10.gif" name="den2'+i+'"><IMG SRC="11.gif">');
 write('<IMG SRC="10.gif" name="mes1'+i+'"><IMG SRC="10.gif" name="mes2'+i+'"><IMG SRC="11.gif">');
 write('<IMG SRC="10.gif" name="rok1'+i+'"><IMG SRC="10.gif" name="rok2'+i+'">');
 writeln('<IMG SRC="10.gif" name="rok3'+i+'"><IMG SRC="10.gif" name="rok4'+i+'"></TD>');

writeln('<TD width=81><IMG SRC="cekej.gif" name="doba'+i+'"><IMG SRC="10.gif"><IMG SRC="10.gif" name="brev'+i+'"></TD> ');

 write('<TD> <INPUT TYPE="text" NAME="datsva'+i);
 writeln('" SIZE=39  VALUE =""></TD></TR> ');
 
 }
writeln('</TABLE><HR width=510> <TABLE width=600><TR><TD>'); 
writeln(' <INPUT TYPE="button" VALUE="Najdi dneąek" NAME="dnesButton" "); ');
        writeln(' onClick="dnesekclick()"> ');
writeln(' <INPUT TYPE="button" VALUE="+ týden" NAME="ptyden" ');
        writeln(' onClick="ptydenclick()"> ');
writeln(' <INPUT TYPE="button" VALUE="- týden" NAME="mtyden" ');
        writeln(' onClick="mtydenclick()"><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;(od roku 1901 do 2099)');
	writeln('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
	writeln('<A HREF="javascript:onKonquError()">');
	writeln('x </A></FONT> </TD></TR> <TR><TD> ');

writeln(' <INPUT TYPE="text" NAME="inden" SIZE=2  VALUE =""> ');
writeln(' <INPUT TYPE="text" NAME="inmes" SIZE=2  VALUE =""> ');
writeln(' <INPUT TYPE="text" NAME="inrok" SIZE=4  VALUE =""> ');
writeln(' <INPUT TYPE="button" VALUE="Najdi datum" NAME="indatButt" ');
        writeln(' onClick="datumclick()"> ');
writeln('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ');
writeln('<SELECT name="vybersva" SIZE=1><OPTION VALUE="0" SELECTED> Velikonoce');
writeln('<OPTION VALUE="1"> Popeleční středa <OPTION VALUE="2"> Letnice');
writeln('<OPTION VALUE="3"> 1.neděle adventní </SELECT>');
writeln(' <INPUT TYPE="button" VALUE="Najdi svátek" NAME="svaButt" ');
        writeln(' onClick="svatclick()"> </TD></TR></TABLE>');
writeln(' </FORM> ');



}



onload = onLoad;
*/


