function oeff() {
 window.open("kontakt.htm", "_self");
}

function ckbild() {
 if (document.getElementById("kjs").complete == true) window.setTimeout("oeff()",3000);
 else window.setTimeout("ckbild()",1000);
return true;
}

function startKale() {
 x = new Date();
 y = x.getFullYear();
 document.getElementById('ausw').firstChild.data = String(y);
 z = x.getMonth();
 kale(y, z);
}

function vorzu(x) {
 var y = parseInt(document.getElementById('ausw').firstChild.data);
 x=y+x;
 if (x<1700) x=1700;
 if (x>2050) x=2050;
 document.getElementById('ausw').firstChild.data = String(x);
 kale(x, 0);
}

function kale(jahr, monat) {
 // Zahl der Tage, die seit dem 1. Januar 1700 vergangen sind:
 verg = (jahr-1700)*365 + parseInt((jahr-1701)/4) - parseInt((jahr-1701)/100) + parseInt((jahr-1701)/300);
 // Zahl der Tage, die seit dem 1. Januar 1700 vergangen sind, reduziert um die Zahl der vollständigen Wochen:
 verg = verg % 7;
 // Der 1. Januar 1700 war ein Freitag. Der erste Wochentag des Jahres, wenn Montag=1, Dienstag=2, ...:
 var wota = new Array(5,6,7,1,2,3,4);
 verg = wota[verg];
 // Die Monate:
 var mona = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
 // Korrektur für Schaltjahre:
 if ((jahr==2000) || ((jahr%4==0)&&(jahr%100!=0))){ mona[1]=29; }
 else { mona[1]=28; }
 // Berechnung des Ostersonntags (nach Oudin):
 c = parseInt(jahr/100);
 n = jahr - (19 * parseInt(jahr/19));
 k = parseInt((c-17)/25);
 i1 = c - parseInt(c/4) - parseInt((c-k)/3) + (19*n) + 15;
 i2 = i1 - 30*parseInt(i1/30);
 i3 = i2 - (parseInt(i2/28) * (1 - parseInt(i2/28) * parseInt(29/(i2+1))) * parseInt((21-n)/11));
 a1 = parseInt(jahr) + parseInt(jahr/4) + i3 + 2 - c + parseInt(c/4);
 a2 = a1 - 7*parseInt(a1/7);
 ia = i3 - a2;
 m = 3 + parseInt((ia+40)/44);
 d = ia + 28 - (31*parseInt(m/4));
 if (m==3) { m="März"; }
 else { m="April"; }
 document.getElementById("ot").firstChild.data =d;
 document.getElementById("om").firstChild.data =m;
 // Konstruktion des Kalenders
 var la = 0; // Nummer der Zelle
 for (j=0; j<=11; j++) {
  var ta = 1; // das aktuelle Datum
  for (i=1; i<=42; i++) {
   if (i<10) { la="t"+(j+1)+"0"+i; }
   else { la="t"+(j+1)+i; }
   if (i<verg || ta>mona[j]) { document.getElementById(la).firstChild.data="-"; }
   else { document.getElementById(la).firstChild.data=ta; ta++; verg++; }
  }
  verg = verg-1;
  verg = (verg % 7)+1;
 }
 document.getElementById("jmon").options[monat].selected=true;
 jaus(monat+1);
}

function Gauss(year) {
 var a,b,c;
 var m;
 var Mar; // "day in March" on which Pesach falls (return value)
 a = Math.floor((12 * year + 17) % 19);
 b = Math.floor(year % 4);
 m = 32.044093161144 + 1.5542417966212 * a +  b / 4.0 - 0.0031777940220923 * year;
 if (m < 0) m -= 1;
 Mar = Math.floor(m);
 if (m < 0) m++;
 m -= Mar;
 c = Math.floor((Mar + 3 * year + 5 * b + 5) % 7);
 if(c == 0 && a > 11 && m >= 0.89772376543210) Mar++;
 else if(c == 1 && a > 6 && m >= 0.63287037037037) Mar += 2;
 else if(c == 2 || c == 4 || c == 6) Mar++;
 Mar += Math.floor((year - 3760) / 100) - Math.floor((year - 3760) / 400) - 2;
 return Mar;
}

function leap(y) { return ((y % 400 == 0) || (y % 100 != 0 && y % 4 == 0)); }

function civ2heb(day, month, year) {
 var d = day;
 var m = month;
 var y = year;
 var hy;
 var pesach;
 var anchor;
 var adarType;
 m -= 2;
 if (m <= 0) { m += 12; y -= 1; } // Jan or Feb
 d += Math.floor(7 * m / 12 + 30 * (m - 1)); // day in March
 hy = y + 3760; // get Hebrew year
 pesach = Gauss(hy);
 if (d <= pesach - 15) { // before 1 Nisan
  anchor = pesach;
  d += 365;
  if(leap(y)) d++;
  y -= 1;
  hy -= 1;
  pesach = Gauss(hy);
 }
 else anchor = Gauss(hy + 1);
 d -= pesach - 15;
 anchor -= pesach - 12;
 y++;
 if(leap(y)) anchor++;
 for(m = 0; m < 11; m++) {
  var days;
  if(m == 7 && anchor % 30 == 2) days = 30; // Cheshvan
  else if(m == 8 && anchor % 30 == 0) days = 29; // Kislev
  else days = 30 - m % 2;
  if(d <= days) break;
  d -= days;
 }
 adarType = 0; // plain old Adar
 if (m == 11 && anchor >= 30) {
  if (d > 30) { adarType = 2; d -= 30; } // Adar 2
  else adarType = 1; // Adar 1
 }
 if(m >= 6) hy++; // Tishrei or after? then bump up year
 if(m == 11) m += adarType; // Adar? adjust for Adars
 return (d + ' ' + m + ' ' + hy);
}

function moadim(cday, cmonth, cyear, hday, hmonth, dow) { // dow: 1-7 Sonntag-Samstag
 if(hmonth == 6) {
  if(hday == 1 || hday == 2) return "Rosch ha-Schana";
  else if(hday == 3 && dow != 7) return "Jom Gedalja";
  else if(hday == 4 && dow == 1) return "Jom Gedalja";
  else if(hday == 10) return "Jom Kippur";
  else if(hday >= 15 && hday <= 21) return "Sukkot";
  else if(hday == 22) return "Schemini Azeret";
  else if(hday == 23) return "Simchat Tora (Diaspora)";
 }
 else if(hmonth == 8) { if(hday >= 25) return "Chanukka"; }
 else if(hmonth == 9) {
  if(hday <= 2) { return "Chanukka"; }
  else if(hday == 3) { // Kislev can be malei or chaser
   if(cday == 1) { cday = 29; cmonth = 11; }
   else if(cday == 2) { cday = 30; cmonth = 11; }
   else cday -= 3;
   var hdate = civ2heb(parseInt(cday),parseInt(cmonth),parseInt(cyear));
   hd = eval(hdate.substring(0, hdate.indexOf(' ')));
   if(hd == 29) return "Chanukka";
  }
  else if(hday == 10) return "Jom Assara be-Tewet";
 }
 else if(hmonth == 10) { if(hday==15) return "Tu bi-Schewat"; }
 else if(hmonth == 11 || hmonth == 13) {
  if(hday == 11 && dow == 5) return "Taanit Esther";
  else if(hday == 13 && dow != 7) return "Taanit Esther";
  else if(hday == 14) return "Purim";
  else if(hday == 15) return "Schuschan Purim";
 }
 else if(hmonth == 0) {
  if(hday == 12 && dow == 5) return "Taanit Bechorot";
  else if(hday == 14 && dow != 7) return "Taanit Bechorot";
  else if(hday >= 15 && hday <= 21) return "Pessach";
  else if(hday == 22) return "Pessach (Diaspora)";
 }
 else if(hmonth == 1) {
  if(hday == 14) return "Pessach Scheni";
  else if(hday == 18) return "Lag ba-Omer";
 }
 else if(hmonth == 2) {
  if(hday == 6) return "Schawuot";
  else if(hday == 7) return "Schawuot (Diaspora)";
 }
 else if(hmonth == 3) {
  if(hday == 17 && dow != 7) return "Jom be-Tammus";
  if(hday == 18 && dow == 1) return "Jom be-Tammus";
 }
 else if(hmonth == 4) {
  if(hday == 9 && dow != 7) return "Tischa be-Aw";
  if(hday == 10 && dow == 1) return "Tischa be-Aw";
  if(hday == 15) return "Tu be-Aw";
 }
return "";
}

function jaus(m) {
var mona = new Array (31,28,31,30,31,30,31,31,30,31,30,31);  // die Monate
jahr = document.getElementById('ausw').firstChild.data;
 if ((jahr==2000) || ((jahr%4==0)&&(jahr%100!=0))){ mona[1]=29; } // Korrektur für Schaltjahre
 else { mona[1]=28; }
var hebMonth = new Array('Nissan','Ijjar','Siwan','Tammus','Aw','Elul','Tischri','Cheschwan','Kislew', 'Tewet','Schewat','Adar','Adar I','Adar II');
var y = 0; // Ziffer des Wochentags
var ta = "";
var ja = ""; // Beginn und Ende des jüdischen Monats
do {
 y++;
 x = "t" + m + "0" + y;
 ta = document.getElementById(x).firstChild.nodeValue;
 } while (ta != '1')
if (y == 7) y =1; // Korrektur für Wochenbeginn am Sonntag
else y++;
document.getElementById("jjahr").firstChild.data=jahr;
var la = 0; // Nummer der Zelle
var ta = 1; // das aktuelle Datum
 for (i=1; i<=42; i++) {
  if (i<10) { la="j0"+i; }
  else { la="j"+i; }
  if (i<y || ta>mona[m-1]) {
   document.getElementById(la).firstChild.data = "-";
   document.getElementById("f"+la.substr(1,2)).firstChild.data = String.fromCharCode(160);
  }
  else {
   h = civ2heb(parseInt(ta),parseInt(m),parseInt(jahr));
   hs = h.split(" ");
   if (ta==1) ja = hs[2] + " " + hebMonth[hs[1]] + " / ";
   document.getElementById(la).firstChild.data = "(" + ta + ") " + hs[0];
   if (i<=7) dow=i;
   else if (i%7==0) dow=7;
   else if (i%7!=0) dow=i%7;
   f = moadim(ta,m,jahr,hs[0],hs[1],dow);
   if(f!="") document.getElementById("f"+la.substr(1,2)).firstChild.data = f;
   else document.getElementById("f"+la.substr(1,2)).firstChild.data = String.fromCharCode(160);
   ta++;
  }
 }
ja = ja + hs[2] + " " + hebMonth[hs[1]];
document.getElementById("jdat").firstChild.data = ja;
}
