JSversion="1.1";

// (C) 1997-2008 Hatto v. Hatzfeld
// Ohne ausdrueckliche Genehmigung des Autors darf diese Datei
// in keiner Weise kopiert, verbreitet oder verwendet werden.
// Ein Link auf http://www.salesianer.de/util/kalender.html
// darf aber selbstverstaendlich gesetzt werden.
// E-Mail: hatzfeld@salesianer.de
// Änderungen 27.1.2001: Suche nach 29.2. ermöglicht; Zweitaufruf-Bug durch Leeren von ber0feld beseitigt
// Änderung 2008: Jahrestag für 29.2. nicht auf 28.2. verschieben (in Funktion ber0j)
// Änderung 2011: Für MSIE Methode clear() nur bedingt ausführen

function ersetze(adresse) { top.location.replace(adresse); }

kffertig="nein";
meld29f=false; // ob Fehlermeldung 29.2. von Funktion dattagT auszulassen ist

var nmax=8;
statmeld=new Array("Zur Hinweisseite","Spezielle Geburtstage","Wochentag und Kalenderwoche","Bewegliche Feste","Fristen","Termine","Schwangerschaftsdauer","Jahre zu Wochentag suchen","FAQ, Infos");
if (statmeld.length-1 != nmax) { alert("statmeld.length-1 = "+statmeld.length+"-1 <> nmax = "+nmax); }

function Zg(n) {
  if (n <= nmax) { window.status = statmeld[n]; }
  else { window.status = "-"; }
}

function Vd(n) {
  window.status="";
}

function Lk(n) {
  if (""+parent.kffertig == "ja") {
    n=parseInt(""+n);
    if (n>0 && n<8) {
      if (parent.kalhead.location.href.indexOf("kal-e" + n + ".html")<0)
         { parent.kalhead.location.href="kal-e" + n + ".html"; } // if.. damit Eingabefelder nicht unnoetig geloescht werden
      parent.kalrslt.location.replace("kalwill1.html");
    }
    else {
      if (n>=0) parent.kalhead.location.href="kalkopf1.html";
      if (n==8) { parent.kalrslt.location.replace("kalfaq.html"); }
      else { parent.kalrslt.location.replace("kalwill1.html"); }
    }
    parent.kalmenu.document.speicher.aktFunkt.value=n; // dort fuer Resize bei NN gespeichert
  }
}

function ctrlyr(aktjahr) {
  var realjahr=aktjahr;
  if (realjahr<80) { realjahr+=2000 }
  if (realjahr<200) { realjahr+=1900 }
  return realjahr;
}

function setzeheutef1() {
  jetzt = new Date(); jtag = jetzt.getDate();
  jmonat = jetzt.getMonth() + 1; jjahr = ctrlyr(jetzt.getYear());
  sk(parent.kalhead.document.f1.Tag1,jtag);
  sk(parent.kalhead.document.f1.Monat1,jmonat);
  sk(parent.kalhead.document.f1.Jahr1,jjahr);
  sk(parent.kalhead.document.f1.JahrKWo,jjahr);
}

function setzeheutef2() {
  jetzt = new Date(); jjahr = ctrlyr(jetzt.getYear());
  sk(parent.kalhead.document.f2.Jahr,jjahr);
}

function setzeheutef3() {
  jetzt = new Date(); jtag = jetzt.getDate();
  jmonat = jetzt.getMonth() + 1; jjahr = ctrlyr(jetzt.getYear());
  sk(parent.kalhead.document.f3.Tag2,jtag);
  sk(parent.kalhead.document.f3.Monat2,jmonat);
  sk(parent.kalhead.document.f3.Jahr2,jjahr);
}

function setzeheutef4() {
  jetzt = new Date(); jtag = jetzt.getDate();
  jmonat = jetzt.getMonth() + 1; jjahr = ctrlyr(jetzt.getYear());
  sk(parent.kalhead.document.f4.Tag1,jtag);
  sk(parent.kalhead.document.f4.Monat1,jmonat);
  sk(parent.kalhead.document.f4.Jahr1,jjahr);
}

function setzeheutef5() {
  jetzt = new Date(); jtag = jetzt.getDate();
  jmonat = jetzt.getMonth(); jjahr = ctrlyr(jetzt.getYear());
  if(jmonat == 0) { jmonat=12; jjahr--;  }
  sk(parent.kalhead.document.f5.Tag1,jtag);
  sk(parent.kalhead.document.f5.Monat1,jmonat);
  sk(parent.kalhead.document.f5.Jahr1,jjahr);
}

function sk(objekt,neuwert) {
  var wert=""+objekt.value;
  if (wert.length == 0) objekt.value=neuwert;
}

function setzepm(modus,objekt) {
  if(modus==5) { window.status="Addiert 1 im aktiven Eingabefeld"; }
  else { if (modus==2) { window.status="Subtrahiert 1 im aktiven Eingabefeld"; }
    else { if (modus==3) { window.status=""; }
      else {
        if(objekt.value) {
          var altwert=lies(objekt.value);
          if (modus==1) { objekt.value=altwert-1; }
          if (modus==4) { objekt.value=altwert+1; }
          if (objekt.value<1) {objekt.value="1";}
          objekt.focus();
        }
        else { objekt.value="1"; }
      }
    }
  }
}

function lies(va) {
  var wertstr=""+va;
  if (wertstr.length>0) {
    if (wertstr.charAt(0)=="0") wertstr=wertstr.substring(1,wertstr.length);
    var wertN = parseInt(wertstr);
    if (isNaN(wertN)==true) wertN=0;
    return wertN;
  }
  else return 0;
}

MonatsTage= new Array();
MonatsTage[1]= 31; MonatsTage[2]= 28; MonatsTage[3]= 31;
MonatsTage[4]= 30; MonatsTage[5]= 31; MonatsTage[6]= 30;
MonatsTage[7]= 31; MonatsTage[8]= 31; MonatsTage[9]= 30;
MonatsTage[10]= 31; MonatsTage[11]= 30; MonatsTage[12]= 31;

WochenTag= new Array(); WochenTag[0]= "Sonntag";
WochenTag[1]= "Montag"; WochenTag[2]= "Dienstag"; WochenTag[3]= "Mittwoch";
WochenTag[4]= "Donnerstag"; WochenTag[5]= "Freitag"; WochenTag[6]= "Samstag";

MonatsName= new Array();
MonatsName[1]= "Januar"; MonatsName[2]= "Februar"; MonatsName[3]= "M&auml;rz";
MonatsName[4]= "April"; MonatsName[5]= "Mai"; MonatsName[6]= "Juni";
MonatsName[7]= "Juli"; MonatsName[8]= "August"; MonatsName[9]= "September";
MonatsName[10]= "Oktober"; MonatsName[11]= "November"; MonatsName[12]= "Dezember";

jhunm= new Array(); jhunn= new Array();
jhunm[0]= 22; jhunn[0]= 2;
jhunm[1]= 22; jhunn[1]= 2;
jhunm[2]= 23; jhunn[2]= 3;
jhunm[3]= 23; jhunn[3]= 4;
jhunm[4]= 24; jhunn[4]= 5;
jhunm[5]= 24; jhunn[5]= 5;
jhunm[6]= 24; jhunn[6]= 6;
jhunm[7]= 25; jhunn[7]= 0;
jhunm[8]= 26; jhunn[8]= 1;
jhunm[9]= 25; jhunn[9]= 1;

function dattagT(TaT,MoT,JaT) {
  var dt, MonatsTag;
  Ta = parseInt(TaT);
  Mo = parseInt(MoT);
  Ja = parseInt(JaT);
  if (Ja > 2499 || Ja < 1) {
    alert("Als Jahreszahlen sind\nnur 1 bis 2499 erlaubt!"); dt = -99;
  }
  else {
    if (Ja<100 && parent.kalmenu.document.speicher.jh1meld.value=="ja") {
      alert("Jahreszahlen unter 100 werden als Daten\ndes 1. Jahrhunderts n. Chr. interpretiert.\n\n(Diese Meldung wird nicht mehr angezeigt.)");
      parent.kalmenu.document.speicher.jh1meld.value="nein";
    }
    if (Mo > 12 || Mo < 1) {
      alert("Als Monate bitte nur Zahlen von 1 bis 12 eingeben!"); dt = -99;
    }
    else {
      if (Ta > 31 || Ta < 1) {
        alert("Als Tage bitte nur Zahlen von 1 bis 31 eingeben!"); dt = -99;
      }
      else {
        MonatsTag = MonatsTage[Mo];
        if (Mo == 2)
          if ((Ja % 4) == 0 && (Ja < 1582 || (Ja % 100) > 0 || (Ja % 400) == 0)) MonatsTag = 29;
        if (Ta > MonatsTag) {
          var zwi="Der Monat " + MonatsName[Mo] + " hat nur " + MonatsTag + " Tage!";
          if (Mo == 2) {
            zwi="Der Monat Februar hat im Jahr "+Ja+" nur " + MonatsTag + " Tage!";
            if(Ta == 29 && meld29f) {
              meld29f=false; return -99;
            }
          }
          alert(zwi); dt = -99;
        }
        else {
          dt = dattage(Ta, Mo, Ja);
          if (dt <= -20) alert("Unerlaubtes Datum!");
        }
      }
    }
  }
  return dt;
}

function dattage(Ta, Mo, Ja) {
  var dattag = 365 * Ja + Ta;
  for (i=1;i<Mo;i++) dattag+= MonatsTage[i]
  if (Ja < 1582) {
    dattag+= 10;
    for (i = 1580; i >= Ja; i-= 4 )
      dattag--;
  }
  else
  if (Ja == 1582) {
    if (Mo == 10) {
      if (Ta < 5) dattag+= 10;
      else
      if (Ta < 15) dattag = -99;
    }
    else if (Mo < 10) dattag+= 10;
  }
  else
  if (Ja > 2499) dattag = -99;
  else {
    for (i = 1584; i < Ja; i+= 4)
      dattag++;
    for (i = 1700; i < Ja; i+= 100)
      if ((i % 400) > 0) dattag--;
  }
  if (dattag > 0) {
    if ((Ja % 4) == 0 && Mo > 2 & (Ja < 1582 || (Ja % 100) > 0 || (Ja % 400) == 0)) dattag++;
  }
  return dattag;
}

function datum(dattag) {
  var MonatsTag
  Ja = Math.floor(dattag/365); Ta = dattag-(365*Ja)
  if (dattag < 577718) {
    Ta-= 10;
    for (i = 1580; i >= Ja; i-= 4) Ta++;
  }
  else {
    for (i = 1584; i < Ja; i+= 4) Ta--;
    for (i = 1700; i < Ja; i+= 100) {
      if ((i % 400) > 0) Ta++;
    }
  }
  while (Ta > 365) {
    Ta-= 365;
    if ((Ja % 4) == 0 && (Ja < 1582 || (Ja % 100) > 0 || (Ja % 400) == 0)) Ta--;
    Ja++;
  }
  while (Ta < 1) {
    Ta+= 365;
    Ja--;
    if ((Ja % 4) == 0 && (Ja < 1582 || (Ja % 100) > 0 || (Ja % 400) == 0)) Ta++;
  }
  Mo = 1;
  for (i = 1; i <= 12; i++) {
    MonatsTag = MonatsTage[i];
    if (i == 2)
      if ((Ja % 4) == 0 && (Ja < 1582 || (Ja % 100) > 0 || (Ja % 400) == 0)) MonatsTag = 29;
    if (Ta > MonatsTag) {
      Ta-= MonatsTag;
      Mo++;
    }
    else break;
  }
  datumtxt = WoTag(dattag) + ", " + Ta + ". " + MonatsName[Mo] + " " + Ja;
  return datumtxt;
}

function WoTag(dattag) {
  wt = (dattag + 25) % 7;
  wota = WochenTag[wt];
  return wota;
}

function rund3(x) {
  var k = (Math.round(x * 1000) / 1000).toString();
  k += (k.indexOf('.') == -1)? '.000' : '000';
  var p = k.indexOf('.');
  return k.substring(0, p) + ',' + k.substring(p+1, p+4);
}

function ZeigeSpanne(datag1, datag2) {
  ZTage = Math.abs(datag1 - datag2);
  ZWo = Math.floor(ZTage/7); ZWoTR = ZTage - (ZWo * 7);
  ZSt = ZTage * 24; ZMin = ZSt * 60; ZSek = ZMin * 60;
  ZJahre = rund3(ZTage/365.2422);

  Zeige(dtbl1 + dtbl2 +
         df1 + "Die Zeitspanne zwischen den beiden Daten" + df0 + dtzr +
         dfb1 + datum(datag1) + dfb0 + dtzr +
         df1 + "und" + df0 + dtzr +
         dfb1 + datum(datag2) + dfb0 + dtzr +
         df1 + "betr&auml;gt <B>" + ZTage + " Tag(e)</B>." + df0 + dtzr +
         df1 + "Das sind <B>" + ZJahre + " Sonnenjahre" + dfb0 + dtzr +
         df1 + "oder <B>" + ZWo + " Woche(n) und " + ZWoTR + " Tag(e)" + dfb0 + dtzr +
         df1 + "oder <B>" + ZSt + " Stunden" + dfb0 + dtzr +
         df1 + "oder <B>" + ZMin + " Minuten" + dfb0 + dtzr +
         df1 + "oder <B>" + ZSek + " Sekunden." + dfb0 +
         dtbl0 + dtbl0 );
}

// Elemente fuer leichtere Formatierung
var df1 = "<FONT FACE=\"Verdana,Arial\">"; var df0 = "</FONT>";
var dfb1 = df1 + "<B>"; var dfb0 = "</B>" + df0;
var df1g = "<FONT FACE=\"Verdana,Arial\" SIZE=+2>";
var dtbl1 = "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 width=\"100%\" height=\"90%\">\n<TR><TD align=center NOWRAP>";
var dtbl2 = "\n<TABLE class=\"mt\">\n<TR><TD NOWRAP>";
var dtzd="<\/TD>\n<TD NOWRAP>"; var dtzr="<\/TD><\/TR>\n<TR><TD NOWRAP>";
var dtbl0 = "<\/TD><\/TR><\/TABLE>";
var dtwerbung='<br>\n<TABLE cellpadding="0" cellspacing="0" border="0" align="center">\n<TR>' +
   '<TD><FONT FACE="Arial">Unser &quot;Sponsor&quot;</font><\/TD><\/TR>\n' +
   '<TR><TD><A HREF="http://www.donbosco.de/" target="kalext"><IMG SRC="sdb-bang.gif" BORDER="0" WIDTH="120" HEIGHT="65" ALT="www.donbosco.de" border="0"><\/A><\/TD>' +
   '<\/TR><\/TABLE>\n';


var uebergabetext="<B>leer</B>";

function Zeige(txt) {
  if(parseInt(navigator.appVersion)<4) {
    uebergabetext=txt;
    parent.kalrslt.location.href="kaln3.html";
  }
  else {
    var txt2 = "<HTML>\n<HEAD>\n"+
     "<TITLE>Dynamisch erzeugte Ausgabe</TITLE>\n"+
     "<style type=\"text/css\">\n"+
     ".mt { border-style:solid; border-color:#CC6666; background-color:#FFCCCC; border-width:2px; padding:2px; }\n"+
     "<\/style>\n<\/HEAD>\n" +
     "<BODY TEXT=\"#3366CC\" BGCOLOR=\"#FFFFFF\" LINK=\"#6699FF\" VLINK=\"#6699FF\" ALINK=\"#6699FF\">\n" +
     txt + "\n<CENTER><P><FONT FACE=\"Verdana,Arial\" SIZE=-2>" +
     "Fragen? Sehen Sie in die <A HREF=\"kalfaq.html\">FAQ</A>!" +
     "<\/FONT><\/FONT><\/P><\/CENTER>\n<\/BODY>\n<\/HTML>";
    parent.kalrslt.document.close();
    if(parent.kalrslt.document.clear) parent.kalrslt.document.clear();
    parent.kalrslt.document.open("text/html");
    parent.kalrslt.document.writeln(txt2);
    parent.kalrslt.document.close();
  }
}

var ber0feld = new Array();
var ber0x, ber0z;
var ber0fakt = new Array(10,20,25,50,75);
var ber0typ = new Array("Wochen","Tage","Std.","Min.","Sek.","Jahre");

function ber0sort(a,b) {
  return a[2]-b[2];
}

function ber0() {
  Ta1 = lies(parent.kalhead.document.f0.Tag1.value);
  Mo1 = lies(parent.kalhead.document.f0.Monat1.value);
  Ja1 = lies(parent.kalhead.document.f0.Jahr1.value);
  ber0feld = new Array(); // Bugfix
  datag1 = dattagT(Ta1, Mo1, Ja1);
  if (datag1>-20) {
    jetzt = new Date(); Ta2 = jetzt.getDate();
    Mo2 = jetzt.getMonth() + 1; Ja2 = ctrlyr(jetzt.getYear());
    datag2 = dattagT(Ta2, Mo2, Ja2)-1;
    if (datag1>datag2) {
      // damit auch bei zukünftigen Daten halbwegs sinnvoll, ab 1 Jahr in Zukunft
      Ta2 = Ta1; Mo2 = Mo1; Ja2 = Ja1+1;
      if (Ta2>28 && Mo2 == 2) Ta2=28;
      datag2 = dattagT(Ta2,Mo2,Ja2);
    }
    ber0x = 0;
    ber0f(0,datag1,datag2,7,1);
    ber0f(1,datag1,datag2,1,1);
    ber0f(2,datag1,datag2,1/24,100);
    ber0f(3,datag1,datag2,1/(24*6),100);
    ber0f(4,datag1,datag2,1/(24*36),1000);
    ber0j(Ta1,Mo1,Ja1,datag2,Ja2);
    ber0feld.sort(ber0sort);
    var AusgText=dtbl1+df1g+"Spezielle Jubil&auml;en f&uuml;r<BR>"+datum(datag1)+df0+"<BR>&nbsp;"+dtbl2 +
        dfb1+"Anla&szlig;"+dfb0 + dtzd + dfb1+"Datum"+dfb0 + dtzd + dfb1+"Zeit"+dfb0 ;
    for (ber0z=0;ber0z<ber0x;ber0z++) {
      i=ber0feld[ber0z][0]; j=""+ber0feld[ber0z][1];
      if (i==3) { j=j+"0";} if (i==4) { j=j+"00"; }
      if (j.indexOf("000000")>0) { j = j.substring(0,j.length-6)+" Mio."; }
      AusgText+=dtzr+df1+j+" "+ber0typ[i]+df0 + dtzd + df1;
      datag2k=ber0feld[ber0z][2]; datag2=Math.floor(datag2k);
      AusgText+=datum(datag2)+df0 + dtzd + df1;
      i=Math.floor((datag2k-datag2)*24*60+.5);
      j=Math.floor(i/60); i=i-j*60;
      if (j<10) { j="0"+j+":" } else { j=""+j+":" }
      if (i<10) { j+="0"+i } else { j+=i }
      AusgText+=j+df0;
    }
    AusgText+= dtbl0 + dtbl0;
    Zeige(AusgText);
    parent.kalhead.document.f0.Tag1.focus();
  }
}

function ber0f(ztyp,d1,d2,zfak,efak) {
  var JuTag=d2; var Fak=efak; var lflag=1; ber0z=0;
  while (JuTag < 912500 && ber0z<5 && lflag==1) {
    for (i=0;i<ber0fakt.length;i++) {
      JuWert=ber0fakt[i]*Fak; JuTag=JuWert*zfak+d1;
      if (JuTag>=d2) {
        if (ber0z>0 && JuTag>d2+3652) { lflag=0; break; }
        ber0feld[ber0x] = new Array(ztyp,JuWert,JuTag);
        ber0x++; ber0z++; if (ber0z>4) { lflag=0; break; }
      }
    }
    Fak=Fak*10;
  }
}

function ber0j(Ta,Mo,Ja,d2,j2) {
  var i; var JuTag; var JuJahr=1*j2; var Fak=1; var lflag=1; ber0z=0;
  while (JuJahr < 2500 && ber0z<5 && lflag==1) {
    for (i=0;i<ber0fakt.length;i++) {
      JuWert=ber0fakt[i]*Fak; JuJahr=1*Ja+JuWert;
      if (JuJahr < 2500) {
        // korrigiert im Jahr 2008
        if (Ta==29 && Mo==2) { JuTag=dattagT(28,2,JuJahr)+1; }
        else { JuTag=dattagT(Ta,Mo,JuJahr); }
        if (JuTag>=d2) {
          if (ber0z>0 && JuJahr>10+j2) { lflag=0; break; }
          ber0feld[ber0x] = new Array(5,JuWert,JuTag);
          ber0x++; ber0z++; if (ber0z>4) { lflag=0; break; }
        }
      }
      else { lflag=0; break; }
    }
    Fak=Fak*10;
  }
}

function ber1() {
  Ta1 = lies(parent.kalhead.document.f1.Tag1.value);
  Mo1 = lies(parent.kalhead.document.f1.Monat1.value);
  Ja1 = lies(parent.kalhead.document.f1.Jahr1.value);
  datag = dattagT(Ta1, Mo1, Ja1);
  if (datag > -20) {
       if (Ja1 > 1975) {
         Zeige(dtbl1 + dtbl2 + df1g + datum(datag) + "<BR>" + kalwo(Ja1,datag) + df0 + dtbl0 + "<br>" + dtwerbung + dtbl0); }
       else { Zeige(dtbl1 + dtbl2 + df1g + datum(datag) + df0 + dtbl0 + "<br>" + dtwerbung + dtbl0); }
  }
  parent.kalhead.document.f1.Tag1.focus();
}

function kalwv(kJahr,kdtg) {
  var wth, datagw, kW;
  datagw = dattagT(4, 01, kJahr);
  wth = (datagw + 24) % 7;
  datagw = datagw - wth;
  kW = Math.floor((kdtg+7-datagw)/7)
  return kW;
}

function kalwo(kJ1,dtg) {
  var kT, kM, kJ, kalw, kalww, kW, kalJ;
  kJ=parseInt(kJ1);
  if (kJ>1975 && kJ<2500) {
    kalw = kalwv(kJ,dtg)
    if (kalw < 1) {kalw = kalwv(kJ-1,dtg); kalJ = kJ-1 }
    else { kalJ = kJ;
      if (kalw > 52) {
        kalww = kalwv(kJ+1,dtg);
        if (kalww>0) { kalw = kalww; kalJ = kJ+1 }
      }
    }
    kW = "" + kalw + ". Kalenderwoche " + kalJ
  }
  else kW="";
  return kW;
}

function ber1KWo() {
  var kalw, Ja1;
  kalw = lies(parent.kalhead.document.f1.KWo.value);
  Ja1 = lies(parent.kalhead.document.f1.JahrKWo.value);
  if (Ja1 < 1976) {
    alert("Nur Jahre ab 1976!");
    parent.kalhead.document.f1.JahrKWo.focus();
  }
  else {
    if (kalw > 53 || kalw <1)  { alert("Kalenderwoche nicht vorhanden!"); }
    else {
      datag = dattagT(4, 01, Ja1);
      wth = (datag + 24) % 7;
      datag = datag + (kalw * 7) - wth - 7;
      if (datag > dattagT(28,12,Ja1)) { alert("Kalenderwoche nicht vorhanden!!"); }
      else {
        Zeige(dtbl1 + dtbl2 + df1g + "Die " + kalwo(Ja1,datag) + "<BR>beginnt am<BR>" + datum(datag) + df0 +
          dtbl0 + "<br>" + dtwerbung + dtbl0);
      }
    }
    parent.kalhead.document.f1.KWo.focus();
  }
}

function ber2() {
  var M, N, a, b, c, d, e, OT, AT;
  Ja = lies(parent.kalhead.document.f2.Jahr.value);
  if (Ja >= 532 && Ja < 2500) {
    if (Ja<1583) {M = 15; N = 6}
    else {
      jj=Math.floor(Ja/100);
      M = jhunm[jj-15]; N = jhunn[jj-15];
    }
    a = Ja % 19; b = Ja % 4; c = Ja % 7;
    d = (19 * a + M) % 30;
    e = (2 * b + 4 * c + 6 * d + N) % 7;
    if (e + d == 35 || (d == 28 && e == 6 && a > 10)) d-= 7;
    OT = dattage(22,3,Ja) + e +d;
    Ascher = datum(OT-46);
    Karfr = datum(OT-2);
    Ostern = datum(OT);
    AT = dattage(14,5,Ja); wt = (AT+4) % 7; AT-= wt;
    Muttag = (Ja > 1913) ? datum(AT) : " - ";
    Himmel = datum(OT+39);
    Pfingsten = datum(OT+49);
    Fronleich = (Ja > 1245) ? datum(OT+60) : " - ";
    HerzJF = (Ja > 1672) ? datum(OT+68) : " - ";
    AT = dattage(7,10,Ja); wt = (AT+4) % 7; AT-= wt;
    Ernteda = (Ja > 1769) ? datum(AT) : " - ";
    AT = dattage(3,12,Ja); wt = (AT+4) % 7; AT-= wt;
    Buss = (Ja > 1852) ? datum(AT-11) : " - ";
    Advent = datum(AT);
    if (Ja >= 1980) {
      AT = dattage(31,3,Ja); wt = (AT+4) % 7; AT-= wt;
      if (Ja == 1980) AT+=7;
      SoZBeg = datum(AT)+ " (02.00)";
      AT = dattage(31,10,Ja);
      if (Ja < 1996) { AT = dattage(30,9,Ja); }
      else { AT = dattage(31,10,Ja); }
      wt = (AT+4) % 7; AT-= wt;
      SoZEnd = datum(AT)+ " (03.00)";
    } 
    else if (Ja == 1916) {
      SoZBeg = datum(dattage(30,4,1916))+ " (23.00)";
      SoZEnd = datum(dattage(1,10,1916))+ " (01.00)";
    } 
    else if (Ja == 1917) {
      SoZBeg = datum(dattage(16,4,1917))+ " (02.00)";
      SoZEnd = datum(dattage(17,9,1917))+ " (03.00)";
    } 
    else if (Ja == 1918) {
      SoZBeg = datum(dattage(15,4,1917))+ " (02.00)";
      SoZEnd = datum(dattage(16,9,1917))+ " (03.00)";
    } 
    else if (Ja >= 1940 && Ja <= 1942) {
      SoZBeg = datum(dattage(1,4,1940))+ " (02.00)";
      SoZEnd = datum(dattage(2,11,1942))+ " (03.00)";
    } 
    else if (Ja == 1943) {
      SoZBeg = datum(dattage(29,3,1943))+ " (02.00)";
      SoZEnd = datum(dattage(4,10,1943))+ " (03.00)";
    } 
    else if (Ja == 1944) {
      SoZBeg = datum(dattage(3,4,1944))+ " (02.00)";
      SoZEnd = datum(dattage(2,10,1944))+ " (03.00)";
    } 
    else if (Ja == 1945) {
      SoZBeg = datum(dattage(2,4,1945))+ " (02.00)<br>(anders in SBZ und Berlin!)";
      SoZEnd = datum(dattage(16,9,1945))+ " (02.00)<br>(SBZ u. Berlin: 18.11.1945)";
    } 
    else if (Ja == 1946) {
      SoZBeg = datum(dattage(15,4,1946))+ " (02.00)";
      SoZEnd = datum(dattage(7,10,1946))+ " (03.00)";
    } 
    else if (Ja == 1947) {
      SoZBeg = datum(dattage(6,4,1947))+ " (03.00)<br>ab 11. Mai (03.00): 2 Std.";
      SoZEnd = datum(dattage(5,10,1947))+ " (03.00)<br>bis 29. Juni (03.00): 2 Std.";
    } 
    else if (Ja == 1948) {
      SoZBeg = datum(dattage(18,4,1948))+ " (02.00)";
      SoZEnd = datum(dattage(3,10,1948))+ " (03.00)";
    } 
    else if (Ja == 1949) {
      SoZBeg = datum(dattage(10,4,1949))+ " (02.00)";
      SoZEnd = datum(dattage(2,10,1949))+ " (03.00)";
    } else { SoZBeg=" - "; SoZEnd=" - "; }
    Zeige(dtbl1 + df1g + "Bewegliche Tage<BR>des Jahres " + Ja + df0 + "<BR>\n" + dtbl2 +
           dfb1 + "Aschermittwoch" + dfb0 + dtzd + df1 + Ascher + df0 + dtzr + "\n" +
           dfb1 + "Karfreitag" + dfb0 + dtzd + df1 + Karfr + df0 + dtzr + "\n" +
           dfb1 + "Ostersonntag" + dfb0 + dtzd + df1 + Ostern + df0 + dtzr + "\n" +
           dfb1 + "Muttertag" + dfb0 + dtzd + df1 + Muttag + df0 + dtzr + "\n" +
           dfb1 + "Christi Himmelfahrt" + dfb0 + dtzd + df1 + Himmel + df0 + dtzr + "\n" +
           dfb1 + "Pfingstsonntag" + dfb0 + dtzd + df1 + Pfingsten + df0 + dtzr + "\n" +
           dfb1 + "Fronleichnam" + dfb0 + dtzd + df1 + Fronleich + df0 + dtzr + "\n" +
           dfb1 + "Herz-Jesu-Fest" + dfb0 + dtzd + df1 + HerzJF + df0 + dtzr + "\n" +
           dfb1 + "Erntedankfest" + dfb0 + dtzd + df1 + Ernteda + df0 + dtzr + "\n" +
           dfb1 + "Bu&szlig;- und Bettag" + dfb0 + dtzd + df1 + Buss + df0 + dtzr + "\n" +
           dfb1 + "1. Adventssonntag" + dfb0 + dtzd + df1 + Advent +df0 + dtzr + "\n" +
           dfb1 + "<i>Beginn Sommerzeit (D)<\/i>" + dfb0 + dtzd + df1 + SoZBeg +df0 + dtzr + "\n" +
           dfb1 + "<i>Ende Sommerzeit (D)<\/i>" + dfb0 + dtzd + df1 + SoZEnd +df0 +
           dtbl0 + dtbl0 );
  }
  else { alert("Erlaubt sind nur Jahreszahlen von 532 bis 2499 nach Christus."); }
  parent.kalhead.document.f2.Jahr.focus();
}


function ber3() {
  Ta1 = lies(parent.kalhead.document.f3.Tag1.value);
  Mo1 = lies(parent.kalhead.document.f3.Monat1.value);
  Ja1 = lies(parent.kalhead.document.f3.Jahr1.value);
  datag1 = dattagT(Ta1, Mo1, Ja1);
  Ta2 = lies(parent.kalhead.document.f3.Tag2.value);
  Mo2 = lies(parent.kalhead.document.f3.Monat2.value);
  Ja2 = lies(parent.kalhead.document.f3.Jahr2.value);
  datag2 = dattagT(Ta2, Mo2, Ja2);
  if (datag1 < -19)  { parent.kalhead.document.f3.Tag1.focus(); }
  else { if (datag2 < -19) { parent.kalhead.document.f3.Tag2.focus(); }
    else { ZeigeSpanne(datag1, datag2);
      parent.kalhead.document.f3.Tag1.focus();
    }
  }
}

function ber4() {
  Ta1 = lies(parent.kalhead.document.f4.Tag1.value);
  Mo1 = lies(parent.kalhead.document.f4.Monat1.value);
  Ja1 = lies(parent.kalhead.document.f4.Jahr1.value);
  datag1 = dattagT(Ta1, Mo1, Ja1);
  if (datag1 > -20) {
    dadi = lies(parent.kalhead.document.f4.zeitzahl.value);
    deinheit = parent.kalhead.document.f4.einheit.options.selectedIndex;
    if (deinheit == 4)
      dadi = dadi * 7;
    else {
      if (deinheit < 3) dadi = dadi / 24;
      if (deinheit < 2) dadi = dadi / 60;
      if (deinheit < 1) dadi = dadi / 60;
      if (dadi > Math.floor(dadi)) dadi = Math.floor(dadi+1);
    }
    dadi = (2*parent.kalhead.document.f4.richt.options.selectedIndex - 1) * dadi;
    datag2 = datag1 + dadi;
    if (datag2 > -20 && datag2 < 912500) {
      ZeigeSpanne(datag1, datag2);
      parent.kalhead.document.f4.Tag1.focus();
    }
    else { alert("Das sich ergebende Datum liegt\nnicht mehr im erlaubten Bereich.");
      parent.kalhead.document.f4.zeitzahl.focus();
    }
  }
}

function ber5() {
  Ta1 = lies(parent.kalhead.document.f5.Tag1.value);
  Mo1 = lies(parent.kalhead.document.f5.Monat1.value);
  Ja1 = lies(parent.kalhead.document.f5.Jahr1.value);
  datag1 = dattagT(Ta1, Mo1, Ja1);
  if (datag1 > -20) {
    var datumsart = parent.kalhead.document.f5.datumsart.options.selectedIndex;
    datag2 = (datumsart == 0) ? datag1 + 268 : datag1 + 280;
    var dreg = (datumsart == 0) ? "" : "<BR><FONT FACE=\"Verdana,Arial\" SIZE=-1>Sollte der Regelzyklus " +
       "k&uuml;rzer oder l&auml;nger als 28 Tage<BR>sein, dann liegt auch der vermutliche Geburtstermin<BR>" +
       "entsprechend vor oder nach diesem Datum." + df0
    Zeige(dtbl1 + dtbl2 + df1 + "Voraussichtlicher Geburtstermin ist<BR>" + df0 +
       df1g + datum(datag2) + df0 + dreg + "<BR><BR>" +
       df1 + "<B>Achtung:</B> H&ouml;chstens eines von 20 Kindern wird<BR>" +
                "tats&auml;chlich am so errechneten Termin geboren!<BR>" +
                "Vermutlich liegt der Termin irgendwo im Zeitraum<BR><B>" +
                datum(datag2-10) + " - <BR>" + datum(datag2+10) + "</B>.<BR>" +
                "Nur eine regelm&auml;&szlig;ige Schwangerschaftsuntersuchung<BR>" +
                "jedoch kann verl&auml;&szlig;lichere Angaben liefern." + df0 +
       dtbl0 + dtbl0);
  }
}

function ber7() {
  WT = lies(parent.kalhead.document.f7.wochentag.options.selectedIndex);
  Ta = lies(parent.kalhead.document.f7.Tag.value);
  Mo = lies(parent.kalhead.document.f7.Monat.value);
  Ja1 = lies(parent.kalhead.document.f7.Jahr1.value);
  Ja2 = lies(parent.kalhead.document.f7.Jahr2.value);
  var AnzTreffer=0;
  if (Ja1 <= Ja2 || Ja2<1) {
    if (dattagT(Ta,Mo,2000)>=0) {
      if(WT<7) {
        //Wochentag suchen
        var AusgText=dtbl1+df1g+"Gefundene Termine"+df0+"<BR>&nbsp;"+dtbl2;
        for(Ja=Ja1;Ja<=Ja2;Ja++) {
          meld29f=true;
          datag=dattagT(Ta,Mo,Ja);
          wt = (datag + 25) % 7;
          if(wt == WT && meld29f) { //Treffer
            AnzTreffer++;
            if(AnzTreffer>1) AusgText+=dtzr;
            AusgText+=df1+datum(datag)+df0;
          }
        }
        meld29f=false;
        if (AnzTreffer>0) {
          AusgText+=dtbl0+dtbl0;
        }
        else {
          AusgText=dtbl1+df1g+"Keine Termine gefunden"+df0+dtbl0;
        }
      }
      else {
        //Osterdatum
        var AusgText=dtbl1+df1g+"Gefundene Ostertermine<BR>&nbsp;"+dtbl2;
        var M, N, a, b, c, d, e, OT;
        if (Ja1 >= 532 && Ja2 < 2500) {
          for(Ja=Ja1;Ja<=Ja2;Ja++) {
            meld29f=true;
            datag=dattagT(Ta,Mo,Ja);
            wt = (datag + 25) % 7;
            if(wt==0 && meld29f) {
              if (Ja<1583) {M = 15; N = 6}
              else {
                jj=Math.floor(Ja/100);
                M = jhunm[jj-15]; N = jhunn[jj-15];
              }
              a = Ja % 19; b = Ja % 4; c = Ja % 7;
              d = (19 * a + M) % 30;
              e = (2 * b + 4 * c + 6 * d + N) % 7;
              if (e + d == 35 || (d == 28 && e == 6 && a > 10)) d-= 7;
              OT = dattage(22,3,Ja) + e +d;
              if(OT==datag) { //Treffer
                AnzTreffer++;
                if(AnzTreffer>1) AusgText+=dtzr;
                AusgText+=df1+datum(datag)+df0;
              }
            }
          }
          meld29f=false;
          if (AnzTreffer>0) {
            AusgText+=dtbl0+dtbl0;
          }
          else {
            AusgText=dtbl1+df1g+"Keine Ostertermine gefunden"+df0+
              "<br>"+df1+"(Anmerkung: Ostern kann nicht vor dem<br>22.3. und nicht nach dem 25.4. liegen)"+df0+dtbl0;
          }
        }
        else {
          alert("Jahreszahlen nur zwischen 532 und 2500 erlaubt!");
          parent.kalhead.document.f7.Jahr1.focus(); return;
        }
      }
      Zeige(AusgText);
      parent.kalhead.document.f7.Jahr1.focus();
    }
  }
  else {
    alert("Jahreszahlen fehlerhaft!");
    parent.kalhead.document.f7.Jahr1.focus();
  }
}

