// Java Document
  function Neumond(k){
    var JDE, e, m, m1, f, o;
    k = Math.floor(k);
    t = k / 1236.85;
    e = Var_e(t);
    m = Var_m(k, t);
    m1 = Var_m1(k, t);
    f = Var_f(k, t);
    o = Var_o(k, t);
    //Neumondkorrekturen
    JDE = Var_JDE(k, t)
    JDE += -.4072 * SN(m1) + .17241 * e * SN(m) + .01608 * SN(2 * m1) + .01039 * SN(2 * f) + .00739 * e * SN(m1 - m) - .00514 * e * SN(m1 + m) + .00208 * e * e * SN(2 * m) - .00111 * SN(m1 - 2 * f) - .00057 * SN(m1 + 2 * f);
    JDE += .00056 * e * SN(2 * m1 + m) - .00042 * SN(3 * m1) + .00042 * e * SN(m + 2 * f) + .00038 * e * SN(m - 2 * f) - .00024 * e * SN(2 * m1 - m) - .00017 * SN(o) - .00007 * SN(m1 + 2 * m) + .00004 * SN(2 * m1 - 2 * f);
    JDE += .00004 * SN(3 * m) + .00003 * SN(m1 + m - 2 * f) + .00003 * SN(2 * m1 + 2 * f) - .00003 * SN(m1 + m + 2 * f) + .00003 * SN(m1 - m + 2 * f) - .00002 * SN(m1 - m - 2 * f) - .00002 * SN(3 * m1 + m);
    JDE += .00002 * SN(4 * m1);
    return Korrektur(JDE, t, k);
  }
  function Viertel(k, modus){
    // modus = .25 = Erstes Viertel, modus = .75 = Letztes Viertel
    var JDE, w, e, m, m1, f, o;
    k = Math.floor(k) + modus;
    t = k / 1236.85;
    e = Var_e(t);
    m = Var_m(k, t);
    m1 = Var_m1(k, t);
    f = Var_f(k, t);
    o = Var_o(k, t);
    // Viertelmondkorrekturen
    JDE = Var_JDE(k, t)
    JDE += -.62801 * SN(m1) + .17172 * e * SN(m) - .01183 * e * SN(m1 + m) + .00862 * SN(2 * m1) + .00804 * SN(2 * f) + .00454 * e * SN(m1 - m) + .00204 * e * e * SN(2 * m) - .0018 * SN(m1 - 2 * f) - .0007 * SN(m1 + 2 * f);
    JDE += -.0004 * SN(3 * m1) - .00034 * e * SN(2 * m1 - m) + .00032 * e * SN(m + 2 * f) + .00032 * e * SN(m - 2 * f) - .00028 * e * e * SN(m1 + 2 * m) + .00027 * e * SN(2 * m1 + m) - .00017 * SN(o);
    JDE += -.00005 * SN(m1 - m - 2 * f) + .00004 * SN(2 * m1 + 2 * f) - .00004 * SN(m1 + m + 2 * f) + .00004 * SN(m1 - 2 * m) + .00003 * SN(m1 + m - 2 * f) + .00003 * SN(3 * m) + .00002 * SN(2 * m1 - 2 * f);
    JDE += .00002 * SN(m1 - m + 2 * f) - .00002 * SN(3 * m1 + m);
    w = .00306 - .00038 * e * CS(m) + .00026 * CS(m1) - .00002 * CS(m1 - m) + .00002 * CS(m1 + m) + .00002 * CS(2 * f);
    (modus == .25) ? JDE += w : JDE += -w;
    return Korrektur(JDE, t, k);
  }
  function Vollmond(k){
    var JDE, e, m, m1, f, o;
    k = Math.floor(k) + .5;
    t = k / 1236.85;
    e = Var_e(t);
    m = Var_m(k, t);
    m1 = Var_m1(k, t);
    f = Var_f(k, t);
    o = Var_o(k, t);
    //Vollmondkorrekturen
    JDE = Var_JDE(k, t);
    JDE += -.40614 * SN(m1) + .17302 * e * SN(m) + .01614 * SN(2 * m1) + .01043 * SN(2 * f) + .00734 * e * SN(m1 - m) - .00515 * e * SN(m1 + m) + .00209 * e * e * SN(2 * m) - .00111 * SN(m1 - 2 * f) - .00057 * SN(m1 + 2 * f);
    JDE += .00056 * e * SN(2 * m1 + m) - .00042 * SN(3 * m1) + .00042 * e * SN(m + 2 * f) + .00038 * e * SN(m - 2 * f) - .00024 * e * SN(2 * m1 - m) - .00017 * SN(o) - .00007 * SN(m1 + 2 * m) + .00004 * SN(2 * m1 - 2 * f);
    JDE += .00004 * SN(3 * m) + .00003 * SN(m1 + m - 2 * f) + .00003 * SN(2 * m1 + 2 * f) - .00003 * SN(m1 + m + 2 * f) + .00003 * SN(m1 - m + 2 * f) - .00002 * SN(m1 - m - 2 * f) - .00002 * SN(3 * m1 + m);
    JDE += .00002 * SN(4 * m1);
    return Korrektur(JDE, t, k);
  }
  function Korrektur(JDE, t, k){
    //Zusätzlichen Korrekturen
    JDE += .000325 * SN(299.77 + .107408 * k - .009173 * t * t) + .000165 * SN(251.88 + .016321 * k) + .000164 * SN(251.83 + 26.651886 * k) + .000126 * SN(349.42 + 36.412478 * k) + .00011 * SN(84.66 + 18.206239 * k);
    JDE += .000062 * SN(141.74 + 53.303771 * k) + .00006 * SN(207.14 + 2.453732 * k) + .000056 * SN(154.84 + 7.30686 * k) + .000047 * SN(34.52 + 27.261239 * k) + .000042 * SN(207.19 + .121824 * k) + .00004 * SN(291.34 + 1.844379 * k);
    JDE += .000037 * SN(161.72 + 24.198154 * k) + .000035 * SN(239.56 + 25.513099 * k) + .000023 * SN(331.55 + 3.592518 * k);
    return JDE;
  }
  function Finsternis(k, Typ, Modus){
    // Typ = .5 = Mondfinsternis; Typ = 0 = Sonnenfinsternis
    // Modus = 0 = Finsternis partiell, Modus = 1 = Finsternis total, Modus = 2 = Sonnenfinsternis ringförmig
    var t, f, JDE, Ringtest;
    k = Math.floor(k) + Typ;
    t = k / 1236.85;
    f = Var_f(k, t);
    JDE = 0;
    Ringtest = 0;
    if(SN(Math.abs(f)) <= .36){
      var var1, var2, o, f1, a1, e, m, m1, p, q, g, u;
      o = Var_o(k, t);
      f1 = f - .02665 * SN(o);
      a1 = 299.77 + .107408 * k - .009173 * t * t;
      e = Var_e(t);
      m = Var_m(k, t);
      m1 = Var_m1(k, t);
      p = .207 * e * SN(m) + .0024 * e * SN(2 * m) - .0392 * SN(m1) + .0116 * SN(2 * m1) - .0073 * e * SN(m1 + m) + .0067 * e * SN(m1 - m) + .0118 * SN(2 * f1);
      q = 5.2207 - .0048 * e * CS(m) + .002 * e * CS(2 * m) - .3299 * CS(m1) - .006 * e * CS(m1 + m) + .0041 * e * CS(m1 - m);
      g = (p * CS(f1) + q * SN(f1)) * (1 - .0048 * CS(Math.abs(f1)));
      u = .0059 + .0046 * e * CS(m) - .0182 * CS(m1) + .0004 * CS(2 * m1) - .0005 * CS(m + m1);
      JDE = Var_JDE(k, t);
      (Typ) ? JDE += - .4065 * SN(m1) + .1727 * e * SN(m) : JDE += - .4075 * SN(m1) + .1721 * e * SN(m);
      JDE += .0161 * SN(2 * m1) - .0097 * SN(2 * f1) + .0073 * e * SN(m1 - m) - .005 * e * SN(m1 + m) - .0023 * SN(m1 - 2 * f1) + .0021 * e * SN(2 * m);
      JDE += .0012 * SN(m1 + 2 * f1) + .0006 * e * SN(2 * m1 + m) - .0004 * SN(3 * m1) - .0003 * e * SN(m + 2 * f1) + .0003 * SN(a1) - .0002 * e * SN(m - 2 * f1) - .0002 * e * SN(2 * m1 - m) - .0002 * SN(o);
      if(Typ){
        if((1.0248 - u - Math.abs(g)) / .545 <= 0) JDE = 0 // keine Mf
        if(Modus == 0 && (1.0128 - u - Math.abs(g)) / .545 > 0 && (.4678 - u) * (.4678 - u) - g * g > 0) JDE = 0; // keine partielle Mf
        if(Modus == 1 && ((1.0128 - u - Math.abs(g)) / .545 <= 0 != (.4678 - u) * (.4678 - u) - g * g <= 0)) JDE = 0; // keine totale Mf
      }
      else{
        if(Math.abs(g) > 1.5433 + u) JDE = 0; // keine SF
        if(Modus == 0 && ((g >= -.9972 && g <= .9972) || (Math.abs(g) >= .9972 && Math.abs(g) < .9972 + Math.abs(u)))) JDE = 0; // keine partielle Sf
        if(Modus > 0){
           if((g < -.9972 || g > .9972) || (Math.abs(g) < .9972 && Math.abs(g) > .9972 + Math.abs(u))) JDE = 0; // keine ringförmige oder totale SF
           if(u > .0047 || u >= .00464 * Math.sqrt(1 - g * g)) Ringtest = 1; // keine totale Sf
           if (Ringtest == 1 && Modus == 1) JDE = 0;
           if (Ringtest == 0 && Modus == 2) JDE = 0;
        }
      }
    }
    return JDE;
  }
  function Beleuchtung(JDE){
    var t, d, m, m1, i;
    t = (JDE - 2451545) / 36525;
    d = 297.8502042 + 445267.11151686 * t - .00163 * t * t + t * t * t / 545868 - t * t * t * t / 113065000;
    m = 357.5291092 + 35999.0502909 * t - .0001536 * t * t + t * t * t / 24490000;
    m1 = 134.9634114 + 477198.8676313 * t + .008997 * t * t + t * t * t / 69699 - t * t * t * t / 14712000;
    i = 180 - d - 6.289 * SN(m1) + 2.1 * SN(m) - 1.274 * SN(2 * d - m1) - .658 * SN(2 * d) - .241 * SN(2 * m1) - .110 * SN(d);
    return (1 + CS(i)) / 2 * 100;
  }
  function Apogaeum(){
    var k, d, m, f, JDE;
    var Heute = new Date();
    var JDA = Java_JD(Heute.getTime());
    k = Math.floor((Dezimaljahr() - 1999.97) * 13.2555) + .5;
    do{
      t = k / 1325.55
      d = 171.9179 + 335.9106046 * k - .010025 * t * t - .00001156 * t * t * t + .000000055 * t * t * t * t;
      m = 347.3477 + 27.1577721 * k - .0008323 * t * t - .000001 * t * t * t;
      f = 316.6109 + 364.5287911 * k - .0125131 * t * t - .0000148 * t * t * t;
      JDE = 2451534.6698 + 27.55454988 * k - .0006886 * t * t - .000001098 * t * t * t + .0000000052 * t * t + .4392 * SN(2 * d) + .0684 * SN(4 * d) + (.0456 - .00011 * t) * SN(m) + (.0426 - .00011 * t) * SN(2 * d - m) + .0212 * SN(2 * f);
      JDE += - .0189 * SN(d) + .0144 * SN(6 * d) + .0113 * SN(4 * d - m) + .0047 * SN(2 * d + 2 * f) + .0036 * SN(d + m) + .0035 * SN(8 * d) + .0034 * SN(6 * d - m) - .0034 * SN(2 * d - 2 * f) + .0022 * SN(2 * d - 2 * m) - .0017 * SN(3 * d);
      JDE += .0013 * SN(4 * d + 2 * f) + .0011 * SN(8 * d - m) + .001 * SN(4 * d - 2 * m) + .0009 * SN(10 * d) + .0007 * SN(3 * d + m) + .0006 * SN(2 * m) + .0005 * SN(2 * d + m) + .0005 * SN(2 * d + 2 * m) + .0004 * SN(6 * d + 2 * f);
      JDE += .0004 * SN(6 * d - 2 * m) + .0004 * SN(10 * d - m) - .0004 * SN(5 * d) - .0004 * SN(4 * d - 2 * f) + .0003 * SN(2 * f + m) + .0003 * SN(12 * d) + .0003 * SN(2 * d + 2 * f - m) - .0003 * SN(d - m);
      k += 1;
    }
    while(JDE < JDA);
    return JDE;
  }
  function Perigaeum(){
    var k, t, d, m, f, JDE;
    var Heute = new Date();
    var JDA = Java_JD(Heute.getTime());
    k = Math.floor((Dezimaljahr() - 1999.97) * 13.2555);
    do{
      t = k / 1325.55
      d = 171.9179 + 335.9106046 * k - .010025 * t * t - .00001156 * t * t * t + .000000055 * t * t * t * t;
      m = 347.3477 + 27.1577721 * k - .0008323 * t * t - .000001 * t * t * t;
      f = 316.6109 + 364.5287911 * k - .0125131 * t * t - .0000148 * t * t * t;
      JDE = 2451534.6698 + 27.55454988 * k - .0006886 * t * t - .000001098 * t * t * t + .0000000052 * t * t - 1.6769 * SN(2 * d) + .4589 * SN(4 * d) - .1856 * SN(6 * d) + .0883 * SN(8 * d);
      JDE += - (.0773 + .00019 * t) * SN(2 * d - m) + (.0502 - .00013 * t) * SN(m) - .046 * SN(10 * d) + (.0422 - .00011 * t) * SN(4 * d - m) - .0256 * SN(6 * d - m) + .0253 * SN(12 * d) + .0237 * SN(d);
      JDE += .0162 * SN(8 * d - m) - .0145 * SN(14 * d) + .0129 * SN(2 * f) - .0112 * SN(3 * d) - .0104 * SN(10 * d - m) + .0086 * SN(16 * d) + .0069 * SN(12 * d - m) + .0066 * SN(5 * d) - .0053 * SN(2 * d + 2 * f);
      JDE += - .0052 * SN(18 * d) - .0046 * SN(14 * d - m) - .0041 * SN(7 * d) + .004 * SN(2 * d + m) + .0032 * SN(20 * d) - .0032 * SN(d + m) + .0031 * SN(16 * d - m);
      JDE += - .0029 * SN(4 * d + m) - .0027 * SN(2 * d - 2 * m) + .0024 * SN(4 * d - 2 * m) - .0021 * SN(6 * d - 2 * m) - .0021 * SN(22 * d) - .0021 * SN(18 * d - m);
      JDE += .0019 * SN(6 * d + m) - .0018 * SN(11 * d) - .0014 * SN(8 * d + m) - .0014 * SN(4 * d - 2 * f) - .0014 * SN(6 * d - 2 * f) + .0014 * SN(3 * d + m) - .0014 * SN(5 * d + m) + .0013 * SN(13 * d);
      JDE += .0013 * SN(20 * d - m) + .0011 * SN(3 * d + 2 * m) - .0011 * SN(4 * d + 2 * f - 2 * m) - .001 * SN(d + 2 * m) - .0009 * SN(22 * d - m) - .0008 * SN(4 * f) + .0008 * SN(6 * d - 2 * f) + .0008 * SN(2 * d - 2 * f + m);
      JDE += .0007 * SN(2 * m) + .0007 * SN(2 * f - m) + .0007 * SN(2 * d + 4 * f) - .0006 * SN(2 * f - 2 * m) - .0006 * SN(2 * d - 2 * f + 2 * m) + .0006 * SN(24 * d) + .0005 * SN(4 * d - 4 * f) + .0005 * SN(2 * d + 2 * m) - .0004 * SN(d - m) + .0027 * SN(9 * d) + .0027 * SN(4 * d + 2 * f);
      k += 1;
   }
    while(JDE < JDA);
    return JDE;
  }
  function JD_Java(JD){
    return (JD - 2440587.5) * 86400000;
  }
  function Java_JD(Zeit){
    return Zeit / 86400000 + 2440587.5;
  }
   function Augabe_der_Mondentfernung(){
    var Minuten;
    var Zeit = new Date();
    // Tabellenanfang
    document.write("<h2 align=\"center\">Das nächste Perigäum und Apogäum<\/h2>");
    document.write("<table summary=\"Rahmen\" align=\"center\" border=\"1\" bgcolor=\"#ffffff\"><tr><td>");
    document.write("<table summary=\"Peri- und Apogäum\" border=\"0\">");
    //Perigäum
    var JDP = Perigaeum();
    Zeit.setTime(JD_Java(JDP));
    var km = Math.round(Entfernung(JDP));
    (Zeit.getMinutes() < 10) ? Minuten = "0" + Zeit.getMinutes() : Minuten = Zeit.getMinutes();
    var Peri = "<tr><td>Die nächste Mondnähe<\/td><td>" + In_Tagen(JDP) +" <td align=\"right\">" + Zeit.getDate() + "." + (Zeit.getMonth() + 1) + "." + Zeit.getFullYear() + " um<\/td><td align=\"right\">" + Zeit.getHours() + "." + Minuten + " Uhr<\/td><td>bei " + km + " km<\/td><\/tr>";
    //Apogäum
    var JDA = Apogaeum();
    Zeit.setTime(JD_Java(JDA));
    var km = Math.round(Entfernung(JDA));
    (Zeit.getMinutes() < 10) ? Minuten = "0" + Zeit.getMinutes() : Minuten = Zeit.getMinutes();
    var Apog = "<tr><td>Die nächste Mondferne<\/td><td>" + In_Tagen(JDA) +" <td align=\"right\">" + Zeit.getDate() + "." + (Zeit.getMonth() + 1) + "." + Zeit.getFullYear() + " um<\/td><td align=\"right\">" + Zeit.getHours() + "." + Minuten + " Uhr<\/td><td>bei " + km + " km<\/td><\/tr>";
    //Sortierung
    if (JDP < JDA)
      document.write(Peri + Apog);
    else
      document.write(Apog + Peri);
     //Tabellenende
    document.write("<\/table>");
    document.write("<\/td><\/tr><\/table>");
   }
  function Dezimaljahr(){
    var Gesamt = 365;
    var Summe = 0;
    var Monatstage = new Array(31,28,31,30,31,30,31,31,30,31,30,30);
    var Heute = new Date();
    var Jahr = Heute.getFullYear();
    var Monat = Heute.getMonth();
    var Tag = Heute.getDate();
    if (Jahr % 4 == 0){
      Monatstage[1] = 29;
      Gesamt = 366;
    }
    for (t = 0; t < Monat ; t++ ) {
      Summe += Monatstage[t];
    }
    return Jahr + (Summe + Tag) / Gesamt;
  }
  function Var_o(k, t){
    return 124.7746 - 1.5637558 * k + .0020691 * t * t + .00000215 * t * t * t;
  }
  function Var_f(k, t){
    return 160.7108 + 390.67050274 * k - .0016341 * t * t - .00000227 * t * t * t + .000000011 * t * t * t * t;
  }
  function Var_m1(k, t){
    return 201.5643 + 385.81693528 * k + .1017438 * t * t + .00001239 * t * t * t - .000000058 * t * t * t * t;
  }
  function Var_m(k, t){
    return 2.5534 + 29.10535669 * k - .0000218 * t * t - .00000011 * t * t * t;
  }
  function Var_e(t){
    return 1 - .002516 * t - .0000074 * t * t;
  }
  function Var_JDE(k, t){
    return 2451550.09765 + 29.530588853 * k + .0001337 * t * t - .00000015 * t * t * t + .00000000073 * t * t * t * t;
  }
  function Var_k(tz){
    Heute = new Date();
    return (Heute.getFullYear() + (Heute.getMonth() * 30.4 + Heute.getDate() + tz) / 365 - 2000) * 12.3685;
  }
  function NaechsterVM(zeit){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Vollmond(k) < zeit);
    return Vollmond(k);
  }
  function NaechstesLV(zeit){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Viertel(k, .75) < zeit);
    return Viertel(k, .75);
  }
  function NaechsterNM(zeit){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Neumond(k) < zeit);
    return Neumond(k);
  }
  function NaechstesEV(zeit){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Viertel(k, .25) < zeit);
    return Viertel(k, .25);
  }
  function NaechsteMF(zeit, Typ){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Finsternis(k, .5, Typ) < zeit);
    return Finsternis(k, .5, Typ);
  }
  function NaechsteSF(zeit, Typ){
    var tz = 0, k;
    do{
      k = Var_k(tz);
      tz += 1;
    }
    while(Finsternis(k, 0, Typ) < zeit);
    return Finsternis(k, 0, Typ);
  }
  function Entfernung(JD){
    var t, d, m, m1, f, sr;
    t = (JD - 2451545) / 36525;
    d = 297.8502042 + 445267.11151686 * t - .00163 * t * t + t * t * t / 545868 - t * t * t * t / 113065000;
    m = 357.5291092 + 35999.0502909 * t - .0001536 * t * t + t * t * t / 24490000;
    m1 = 134.9634114 + 477198.8676313 * t + .008997 * t * t + t * t * t / 69699 - t * t * t * t / 14712000;
    f = 93.27209929999999 + 483202.0175273 * t - .0034029 * t * t - t * t * t / 3526000 + t * t * t * t / 863310000;
    sr = 385000.56 + Koeffizient(d, m, m1, f) / 1000;
    return sr;
  }
  function Koeffizient(d, m, m1, f){
    var sr = 0;
    var t;
    var kd = new Array(0,2,2,0,0,0,2,2,2,2,0,1,0,2,0,0,4,0,4,2,2,1,1,2,2,4,2,0,2,2,1,2,0,0,2,2,2,4,0,3,2,4,0,2,2,2,4,0,4,1,2,0,1,3,4,2,0,1,2,2);
    var km = new Array(0,0,0,0,1,0,0,-1,0,-1,1,0,1,0,0,0,0,0,0,1,1,0,1,-1,0,0,0,1,0,-1,0,-2,1,2,-2,0,0,-1,0,0,1,-1,2,2,1,-1,0,0,-1,0,1,0,1,0,0,-1,2,1,0,0);
    var km1 = new Array(1,-1,0,2,0,0,-2,-1,1,0,-1,0,1,0,1,1,-1,3,-2,-1,0,-1,0,1,2,0,-3,-2,-1,-2,1,0,2,0,-1,1,0,-1,2,-1,1,-2,-1,-1,-2,0,1,4,0,-2,0,2,1,-2,-3,2,1,-1,3,-1);
    var kf = new Array(0,0,0,0,0,2,0,0,0,0,0,0,0,-2,2,-2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,-2,2,0,2,0,0,0,0,0,0,-2,0,0,0,0,-2,-2,0,0,0,0,0,0,0,-2);
    var kr = new Array(-20905355,-3699111,-2955968,-569925,48888,-3149,246158,-152138,-170733,-204586,-129620,108743,104755,10321,0,79661,-34782,-23210,-21636,24208,30824,-8379,-16675,-12831,-10445,-11650,14403,-7003,0,10056,6322,-9884,5751,0,-4950,4130,0,-3958,0,3258,2616,-1897,-2117,2354,0,0,-1423,-1117,-1571,-1739,0,-4421,0,0,0,0,1165,0,0,8752);
    for (t = 0; t < 60; t++){
      sr += kr[t] * CS(kd[t] * d + km[t] * m + km1[t] * m1 + kf[t] * f);
    }
    return sr;
  }
  function In_Tagen(JDE){
    var Text;
    var Heute = new Date();
    var Diff = Math.floor(JDE - Java_JD(Heute.getTime()));
    if (Diff == 1)
      Text = " ist <\/td><td colspan=\"2\">morgen den<\/td>";
    if (Diff == 0)
      Text = " ist <\/td><td colspan=\"2\">heute den<\/td>";
    if (Diff > 1)
      Text = " ist in <\/td><td align=\"right\">" + Diff + "<\/td><td>Tagen am";
    return Text
  }
  function Ausgabe_der_Mondphasen(Text, JDE){
    var Minuten, SText;
    var Heute = new Date();
    Heute.setTime(JD_Java(JDE));
    (Heute.getMinutes() < 10) ? Minuten = "0" + Heute.getMinutes() : Minuten = Heute.getMinutes();
     document.write("<tr><td>" + Text + In_Tagen(JDE)+ "<\/td><td align=\"right\">" + Heute.getDate() + "." + (Heute.getMonth() + 1) + "." + Heute.getFullYear() + " um<\/td><td align=\"right\">" + Heute.getHours() + "." + Minuten + " Uhr<\/td><\/tr>");
  }

  function NaechsteMondphasen(){
    var JDE_mondphase = new Array(4);
    var JDE_finsternis = new Array(5);
    var Text_mondphase = new Array(" ","Nächster Vollmond","Das nächste Letzte Viertel","Nächster Neumond","Das nächste Erste Viertel");
    var Text_finsternis = new Array(" ","Die nächste partielle Mondfinsternis","Die nächste totale Mondfinsternis","Die nächste partielle Sonnenfinsternis","Die nächste totale Sonnenfinsternis","Die nächste ringförmige Sonnenfinsternis");
    var test, t;
    var Heute = new Date();
    var zeit =  Java_JD(Heute.getTime());

    JDE_mondphase[1] = NaechsterVM(zeit);
    JDE_mondphase[2] = NaechstesLV(zeit);
    JDE_mondphase[3] = NaechsterNM(zeit);
    JDE_mondphase[4] = NaechstesEV(zeit);
    JDE_finsternis[1] = NaechsteMF(zeit, 0); //partiell
    JDE_finsternis[2] = NaechsteMF(zeit, 1); //total
    JDE_finsternis[3] = NaechsteSF(zeit, 0); //partiell
    JDE_finsternis[4] = NaechsteSF(zeit, 1); //total
    JDE_finsternis[5] = NaechsteSF(zeit, 2); //ring

   do{
      test = 0;
      for(t = 1; t < 4; t++){
        if(JDE_mondphase[t] > JDE_mondphase[t + 1]){
          JDE_mondphase[0] = JDE_mondphase[t];
          JDE_mondphase[t] = JDE_mondphase[t + 1];
          JDE_mondphase[t + 1] = JDE_mondphase[0];
          Text_mondphase[0] = Text_mondphase[t];
          Text_mondphase[t] = Text_mondphase[t + 1];
          Text_mondphase[t + 1] = Text_mondphase[0];
          test = 1;
        }
      }
    }
    while(test);

     do{
      test = 0;
      for(t = 1; t < 5; t++){
        if(JDE_finsternis[t] > JDE_finsternis[t + 1]){
          JDE_finsternis[0] = JDE_finsternis[t];
          JDE_finsternis[t] = JDE_finsternis[t + 1];
          JDE_finsternis[t + 1] = JDE_finsternis[0];
          Text_finsternis[0] = Text_finsternis[t];
          Text_finsternis[t] = Text_finsternis[t + 1];
          Text_finsternis[t + 1] = Text_finsternis[0];
          test = 1;
        }
      }
    }
    while(test);
    document.write("<h2 align=\"center\">Die nächsten Mondphasen<\/h2>");
    document.write("<table summary=\"Rahmen\" align=\"center\" border=\"1\" bgcolor=\"#ffffff\"><tr><td>");
    document.write("<table summary=\"Mondphasen\" border=\"0\">");
    for(t = 1; t < 5; t++){
      Ausgabe_der_Mondphasen(Text_mondphase[t], JDE_mondphase[t]);
    }
    document.write("<\/table>");
    document.write("<\/td><\/tr><\/table>");

    document.write("<h2 align=\"center\">Die nächsten Finsternisse<\/h2>");
    document.write("<table summary=\"Rahmen\" align=\"center\" border=\"1\" bgcolor=\"#ffffff\"><tr><td>");
    document.write("<table summary=\"Finsternisse\" border=\"0\">");
    for(t = 1; t < 6; t++){
      Ausgabe_der_Mondphasen(Text_finsternis[t], JDE_finsternis[t]);
    }
    document.write("<\/table>");
    document.write("<\/td><\/tr><\/table>");
  }
  function Mondtag(){
    //Bezug ist der Neumond am 6.1.2001
    var Bild;
    var Bildmenge = 32; // Die Menge der einzelnen Mondbilder
    var bk = 29.53059 / Bildmenge / 5 // Ein Fünftel der Bilder-Schrittweite, benötigt zur rechtzeitigen Anzeige der Viertel
    var k = Var_k(0);
    var Heute = new Date();
    var JD = Java_JD(Heute.getTime());

    var neumond = (Neumond(k) - JD);
    var erstesviertel = (Viertel(k, .25) - JD);
    var letztesviertel = (Viertel(k, .75) - JD);
    var vollmond = (Vollmond(k) - JD);

    BeleuchtungZeile(JD);
    EntfernungZeile(JD);

    if (Math.abs(neumond) < Math.abs(erstesviertel) && Math.abs(neumond) < Math.abs(letztesviertel) && Math.abs(neumond) < Math.abs(vollmond)){
      Bild = 1 - Math.round(neumond * Bildmenge / 29.53059);
      if (neumond < bk && Bild > Math.round(Bildmenge / 4 * 3 + 1)) Bild = 1; // Damit das Bild auf jeden Fall rechtzeitg gezeigt wird.
      if (Bild < 1) Bild += Bildmenge;
      (neumond > 0) ? document.mond.text.value = "Nächster Neumond ist in:" : document.mond.text.value = "Letzter Neumond war vor:";
      ZeitZeile(Math.abs(neumond));
    }
    if (Math.abs(erstesviertel) < Math.abs(neumond) && Math.abs(erstesviertel) < Math.abs(letztesviertel) && Math.abs(erstesviertel) < Math.abs(vollmond)){
      Bild = Math.round(Bildmenge / 4 + 1 - erstesviertel * Bildmenge / 29.53059);
      if (erstesviertel < bk && Bild < Math.round(Bildmenge / 4 + 1)) Bild =  Math.round(Bildmenge / 4 + 1);
      (erstesviertel > 0) ? document.mond.text.value = "Das nächste Erste Viertel ist in:" : document.mond.text.value = "Das letzte Erste Viertel war vor:";
      ZeitZeile(Math.abs(erstesviertel));
    }
    if (Math.abs(vollmond) < Math.abs(neumond) && Math.abs(vollmond) < Math.abs(letztesviertel) && Math.abs(vollmond) < Math.abs(erstesviertel)){
      Bild = Math.round(Bildmenge / 2 + 1 - vollmond * Bildmenge / 29.53059);
      if (vollmond < bk && Bild < Math.round(Bildmenge / 2 + 1)) Bild =  Math.round(Bildmenge / 2 + 1);
      (vollmond > 0) ? document.mond.text.value = "Nächster Vollmond ist in:" : document.mond.text.value = "Letzter Vollmond war vor:";
      ZeitZeile(Math.abs(vollmond));
    }
    if (Math.abs(letztesviertel) < Math.abs(neumond) && Math.abs(letztesviertel) < Math.abs(vollmond) && Math.abs(letztesviertel) < Math.abs(erstesviertel)){
      Bild = Bildmenge - Math.round(neumond * Bildmenge / 29.53059);
      if (Bild > Bildmenge) Bild += - Bildmenge;
      if (letztesviertel < bk && Bild < Math.round(Bildmenge / 4 * 3 + 1)) Bild =  Math.round(Bildmenge / 4 * 3 + 1);
      (letztesviertel > 0) ? document.mond.text.value = "Das nächste Letzte Viertel ist in:" : document.mond.text.value =  "Das letzte Letzte Viertel war vor:";
      ZeitZeile(Math.abs(letztesviertel));
    }

    window.setTimeout('Mondtag()',1000);
    return Bild
  }
  function MondAusgabe(){
     document.write("<p align=\"center\">");
     document.write("<img src=\"../grafik/mond/" + Mondtag() + ".gif \" width=\"580\" height=\"470\" alt=\"Die aktuelle Mondphase berechnet mit JavaScript\" border=\"2\">");
     document.write("<\/p>");
  }
  function JD_Stunde(JDE){
    return Math.floor((24 * (JDE - Math.floor(JDE))));
  }
  function JD_Minute(JDE){
    return Math.floor((JDE - Math.floor(JDE)) * 1440 - JD_Stunde(JDE) * 60);
  }
  function JD_Sekunde(JDE){
    return Math.floor((JDE - Math.floor(JDE)) * 86400 - JD_Stunde(JDE) * 3600 - JD_Minute(JDE) * 60);
  }
  function ZeitZeile(JDE){
    document.mond.tag.value = Math.floor(JDE);
    document.mond.std.value = JD_Stunde(JDE);
    document.mond.min.value = JD_Minute(JDE);
    document.mond.sek.value = JD_Sekunde(JDE);
  }
  function BeleuchtungZeile(zeit){
    document.mond.beleuchtung.value = "Beleuchteter Teil der Mondscheibe:";
    document.mond.sch.value = Math.round(Beleuchtung(zeit) * 10000) / 10000;
  }
  function EntfernungZeile(zeit){
    document.mond.entfernung.value = "Entfernung zwischen Erd- und Mondmittelpunkt:";
    document.mond.ent.value = Math.round(Entfernung(zeit) * 10) / 10;
  }
  function CS(x){
    return Math.cos(x * .0174532925199433);
  }
  function SN(x){
    return Math.sin(x * .0174532925199433);
  }
