//Liturgicky kalendar v Javascriptu verze 2.2
//  (c) 2009 Jirka Bubenicek  -  hebrak@yahoo.com
//
//  License: GNU GENERAL PUBLIC LICENSE
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.



function kdmr(dd,mm,rr){
this.d=dd; this.m=mm; this.r=rr;
}

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;

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 mysva(d,m,r,SVA){
for(i=0;i<mydata.length;i++){
    mytxt=mydata[i];
    datx=mytxt.substring(0, mytxt.indexOf(" "));
    adat=datx.split(".");
    myd=adat[0];
    mym=adat[1];
    myr=adat[2];
    mytxt=mytxt.substring(mytxt.indexOf(" ")+1,mytxt.length);
   if ( myr==r || myr=="*" ) {
    if ( myd==d && mym==m ){
     if (mytxt.substring(0,1)=="=") { SVA=mytxt.substring(1,mytxt.length); }
     if (mytxt.substring(0,1)=="+") { SVA=SVA+" "+mytxt.substring(1,mytxt.length); }
     if (mytxt.substring(0,1)=="/") { 
        if (SVA=="") { SVA=mytxt.substring(1,mytxt.length); }
        else { SVA=SVA+"<BR>"+mytxt.substring(1,mytxt.length); }
     }
    }
   }
 }
return SVA;
}



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==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 ( (d==2)  && (m==11) ) SVA="Vzpomínka na všechny věrné zemřelé";

 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';

 SVA=mysva(d,m,r,SVA);

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>0) && (r<100)) {r=2000+r; }
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 pistable(){
var mjd=MJDout(dmr.d, dmr.m, dmr.r);
var ntydnu=parseInt(document.tabform.ntydnu.value); if (isNaN(ntydnu)) ntydnu=1;
if (ntydnu < 1 ) { ntydnu=1; }
if (ntydnu > 55 ) { ntydnu=55; }
document.tabform.ntydnu.value=ntydnu;
mjd=mjd-dentmjd(mjd);
mjdstart=mjd;
iHTML="<TABLE class='TABLEkalendar'>\n";
iHTML=iHTML+"<TR><TD style='width: 1em' class='TDkalendarTit'>&nbsp;</TD><TD colspan='2' class='TDkalendarTit'><B>KALENDÁŘ</B></TD>\n"; 
iHTML=iHTML+"<TD nowrap colspan='2' class='TDkalendarTit'><B>liturgická doba<BR>(týden v breviáři)</B></TD>";
iHTML=iHTML+"<TD class='TDkalendarTit'><B>slavnosti, svátky, památky</B></TD></TR>\n"; 
for (var ityden = 0; ityden <= ntydnu; ityden++) {
 tdnu=7;
 if (ityden == ntydnu) { tdnu=1; }
 for (var i = 1; i <= tdnu; i++) {
 txt=liturg(mjd); 
 if (txt=="") { txt="&nbsp;"; }
 if ((BRE==10) || (BRE==0)) { BRE="&nbsp;" } else { BRE="("+BRE+")" }
 DOBcolor="TDkalendarBila";
 if ((DOB=="POS") || (DOB=="ADV")) { DOBcolor="TDkalendarFial"; }
 if (DOB=="MEZ")  { DOBcolor="TDkalendarZele"; }
 if (DOB=="VAN") DOB="vánoční";
 if (DOB=="POS") DOB="postní";
 if (DOB=="VEL") DOB="velikonoční";
 if (DOB=="ADV") DOB="adventní";
 if (DOB=="MEZ") DOB="mezidobí";
 txt="<TD class='TDkalendarDob "+DOBcolor+"'>"+DOB+"</TD><TD class='TDkalendarBre'>"+BRE+"</TD><TD nowrap class='TDkalendarTxt'>"+txt+"</TD>";
 //txt="<TD nowrap align='right'>"+dmr.d+".</TD><TD align='right'> "+dmr.m+".</TD><TD> "+dmr.r+"</TD>"+txt;
 txt="<TD class='TDkalendarDAT'>"+dmr.d+"."+dmr.m+"."+dmr.r+"</TD>"+txt;
 if ((i==1)||(i==8)) var txd="<TD class='TDkalendarDenNE'>NEDĚLE</TD>";
 if (i==2) var txd="<TD class='TDkalendarDen'>pondělí</TD>";
 if (i==3) var txd="<TD class='TDkalendarDen'>úterý</TD>";
 if (i==4) var txd="<TD class='TDkalendarDen'>středa</TD>";
 if (i==5) var txd="<TD class='TDkalendarDen'>čtvrtek</TD>";
 if (i==6) var txd="<TD class='TDkalendarDen'>pátek</TD>";
 if (i==7) var txd="<TD class='TDkalendarDen'>SOBOTA</TD>";
 txt=txd+txt; 
 if (mjd==MJDdnes) txt="<TD>=</TD>"+txt
   else { if (mjd==MJDnasel) txt="<TD>-</TD>"+txt
           else txt="<TD>&nbsp;</TD>"+txt }
 iHTML=iHTML+'<TR>'+txt+'</TR>\n';
 mjd++;
 }
}
iHTML=iHTML+"</TABLE>\n"; 
MJDin(mjdstart);


document.getElementById('litkalendiv').innerHTML=iHTML;
}


function dnesekclick() { MJDin(MJDdnes); pistable(); }
function ptydenclick() { posundt(7); pistable();  } 
function mtydenclick() { posundt(-7); pistable();  }
function datumclick() { indat(); pistable();  }
function svatclick() { insvat(); pistable();  }


if (typeof(mydata)=="undefined") { mydata=["x"]; }

MJDin(MJDdnes);

onload = pistable;


