  <!-- global vars -->
  rw_day = 0;
  rw_layer = 0;
  rw_mode = 0;
  rw_dir = "http://www.20min.ch/2010/img/weather/common/";
  
  function setDay(sD_myday) { //myday=wird doppelt benutzt. 1. als offset für den tag und 2. als relative angabe: 0="heute", 1="morgen", >=2="nächsten"
    var sD_jetzt = new Date();
    var sD_wochentag = sD_jetzt.getDay()+sD_myday;
    if ( sD_wochentag >6 ) { sD_wochentag=(sD_wochentag % 6)-1; } // modulo, wenn ergebnis>6. 7->0, 8->1 ...
    if ( sD_myday > 2 ) { sD_myday = 2; } // auf 2 setzen für "nächsten"
    var sD_img = document.getElementById("weather_title");
    sD_img.src = rw_dir+"titel/"+sD_wochentag+"_"+sD_myday+".jpg";
  }
  
  function setSrc(obj,img) {
	  var myElement = document.getElementById(obj);
	  myElement.src = rw_dir+img;
    }
  
    <!-- Temperaturskala-->
  	function drawTemp(divId,targetDiv) {
	  var zeroString = 58;  // Höhe Null Text
	  var zeroLine = 64;    // Höhe Null Linie
	
	  var myMinMax = document.getElementById(divId);
	  var myTempString = myMinMax.innerHTML;
	  var myMinTemp = myTempString.slice(0,myTempString.indexOf('°'));
	  var myMaxTemp = myTempString.slice(myTempString.indexOf('/')+1,myTempString.lastIndexOf('°'));
      var myDiv = document.getElementById(targetDiv);

	  var myMaxStringDiv = document.createElement("div");
	  myMaxStringDiv.style.cssText = 'position:absolute;left:180px;top:'+(zeroString-(myMaxTemp*1.3))+'px;';
	  myMaxStringDiv.innerHTML = '<strong>'+myMaxTemp+'°<strong />';
	  myDiv.appendChild(myMaxStringDiv);

	  var myMaxLineDiv = document.createElement("div");
	  myMaxLineDiv.style.cssText = 'position:absolute;left:202px;top:'+(zeroLine-(myMaxTemp*1.3))+'px;';
	  myMaxLineDiv.innerHTML = '<img src=\"'+rw_dir+'temperaturlinie.png\">';  
	  myDiv.appendChild(myMaxLineDiv);

	  var myMinStringDiv = document.createElement("div");
	  myMinStringDiv.style.cssText = 'position:absolute;left:242px;top:'+(zeroString-(myMinTemp*1.4))+'px;';
	  myMinStringDiv.innerHTML = myMinTemp+'°';
	  myDiv.appendChild(myMinStringDiv);

	  var myMinLineDiv = document.createElement("div");
	  myMinLineDiv.style.cssText = 'position:absolute;left:202px;top:'+(zeroLine-(myMinTemp*1.4))+'px;';
	  myMinLineDiv.innerHTML = '<img src=\"'+rw_dir+'temperaturlinie.png\">';  
	  myDiv.appendChild(myMinLineDiv);
	}

  <!-- all layer weg ausser aktiviertem -->
	function switchdiv() {
            if (rw_mode == 0) { //wetter
			  //alle layer deaktivieren
              for (i=0;i<8;i++) {  //erste schleife: alle heute-layer
			    for (j=0;j<5;j++) { // zweite schleife: alle weiteren wetter-layer deaktivieren
                  var myoffdivtmp = 'main_'+i+'_'+j+'_wetter';
                  myoffdiv = document.getElementById(myoffdivtmp);
                  myoffdiv.style.display = "none";
				}
				//alle hauptlayer weg
                var myoffdivtmp = 'main_'+i;
                myoffdiv = document.getElementById(myoffdivtmp);
                myoffdiv.style.display = "none";
				//wind weg
                var myoffdivtmp = 'main_'+i+'_wind';
                myoffdiv = document.getElementById(myoffdivtmp);
                myoffdiv.style.display = "none";	
				//aktuellen layer aktivieren
                var myondivtmp = 'main_'+rw_layer+'_'+rw_day+'_wetter';
                myondiv = document.getElementById(myondivtmp);
                myondiv.style.display = "block";
              }
			  setSrc('switchbox_wettericon','rw_switcher_box_s_on.png');
			  setSrc('switchbox_windicon','rw_switcher_box_w_off.png');
            }
            if (rw_mode == 1) { //wind
			  //alle layer weg
              for (i=0;i<8;i++) {
			    for (j=0;j<5;j++) {
				  var myoffdivtmp = 'main_'+i+'_'+j+'_wetter';
                  myoffdiv = document.getElementById(myoffdivtmp);
                  myoffdiv.style.display = "none";
				}
				//hauptlayer weg
                var myoffdivtmp = 'main_'+i;
                myoffdiv = document.getElementById(myoffdivtmp);
                myoffdiv.style.display = "none";
				//aktuellen layer aktivieren
                var myondivtmp = 'main_'+rw_layer+'_wind';
                myondiv = document.getElementById(myondivtmp);
                myondiv.style.display = "block";
              }
			  setSrc('switchbox_wettericon','rw_switcher_box_s_off.png');
			  setSrc('switchbox_windicon','rw_switcher_box_w_on.png');
            }
			//aktuellen hautplayer aktivieren
            var myondivtmp = 'main_'+rw_layer;
            myondiv = document.getElementById(myondivtmp);
            myondiv.style.display = "block";	

	}
	
	<!-- SONNE -->
	<!-- hide

var PI = Math.PI;
var DR = PI/180;
var K1 = 15*DR*1.0027379;

var Sunrise = false;
var Sunset  = false;

var Rise_time = [0, 0];
var Set_time  = [0, 0];
var Rise_az = 0.0;
var Set_az  = 0.0;

var Sky = [0.0, 0.0];
var RAn = [0.0, 0.0, 0.0];
var Dec = [0.0, 0.0, 0.0];
var VHz = [0.0, 0.0, 0.0];

var Now;
var Cookie_name = "script_sun_rise_set";

// initialize date
function initdate()
{
    Now = new Date();
    showdate(Now);
    load_latlon();
}

// display the date
function showdate(d)
{
    var winter = new Date(2001, 11, 30);       // for northern hemisphere
    var summer = new Date(2001,  5, 30);

    var summer_tz = summer.getTimezoneOffset();
    var winter_tz = winter.getTimezoneOffset();
    var local_dst = (summer_tz == winter_tz) ? false : true;

    if (summer_tz > winter_tz)                 // in southern hemisphere
    {
        var tz = summer_tz;                    // swap
        summer_tz = winter_tz;
        winter_tz = tz;
    }

    var thisday = (d.getMonth() + 1) + "/";
    thisday    += d.getDate() + "/";
    thisday    += d.getFullYear();

    if ((local_dst == true)&&(summer_tz == d.getTimezoneOffset()))
        thisday += " [DST]";

    document.calc.thisday.value = thisday;
}

function load_latlon()
{
    var latlon = getCookie(Cookie_name);

    if (!latlon) return;                       // no cookie
       
    s = latlon.substr( 0, 8);
    lat_deg = parseInt(s);

    s = latlon.substr( 8, 8);
    lat_min = parseInt(s);

    s = latlon.substr(16, 8);
    lon_deg = parseInt(s);

    s = latlon.substr(24, 8);
    lon_min = parseInt(s);

    if (lat_deg < 0)                           // south
    {
        document.calc.south.checked = true;
        document.calc.north.checked = false;
        lat_deg = -lat_deg;
    }
    else
    {
        document.calc.south.checked = false;
        document.calc.north.checked = true;
    }
 
    if (lon_deg < 0)                           // west
    {
        document.calc.west.checked = true;
        document.calc.east.checked = false;
        lon_deg = -lon_deg;
    }
    else
    {
        document.calc.west.checked = false;
        document.calc.east.checked = true;
    }
 
    document.calc.lat_degrees.value = lat_deg;
    document.calc.lat_minutes.value = lat_min;
    document.calc.lon_degrees.value = lon_deg;
    document.calc.lon_minutes.value = lon_min;
}

// save to cookie after checking for valid data
function save_latlon()
{
    var lat_deg = parseInt(document.calc.lat_degrees.value, 10);
    var lat_min = parseInt(document.calc.lat_minutes.value, 10);
    var lon_deg = parseInt(document.calc.lon_degrees.value, 10);
    var lon_min = parseInt(document.calc.lon_minutes.value, 10);

    if (isNaN(lat_deg)||(lat_deg < 0)||(lat_deg >=  90)||
        isNaN(lat_min)||(lat_min < 0)||(lat_min >=  60)||
        isNaN(lon_deg)||(lon_deg < 0)||(lon_deg >= 180)||
        isNaN(lon_min)||(lon_min < 0)||(lon_min >=  60))
    {
        return;
    }

    if (document.calc.south.checked == true) lat_deg = -lat_deg;
    if (document.calc.west.checked  == true) lon_deg = -lon_deg;  
    var latlon = cintstr(lat_deg, 8) + cintstr(lat_min, 8) 
               + cintstr(lon_deg, 8) + cintstr(lon_min, 8);

    setCookie(Cookie_name, latlon, 365);
}

// test case
function test()
{
    // Boston, MA US  42°21' N, 71°04' W

    // Latitude        
    document.calc.lat_degrees.value = "42";
    document.calc.lat_minutes.value = "21";

    // Longitude       
    document.calc.lon_degrees.value = "71";
    document.calc.lon_minutes.value = "04";
}

// compute ...
function compute()
{
    var lat_degrees = parseInt(document.calc.lat_degrees.value, 10);
    var lat_minutes = parseInt(document.calc.lat_minutes.value, 10);
    var lon_degrees = parseInt(document.calc.lon_degrees.value, 10);
    var lon_minutes = parseInt(document.calc.lon_minutes.value, 10);

    if (isNaN(lat_degrees)||(lat_degrees < 0)||(lat_degrees >=  90)||
        isNaN(lat_minutes)||(lat_minutes < 0)||(lat_minutes >=  60)||
        isNaN(lon_degrees)||(lon_degrees < 0)||(lon_degrees >= 180)||
        isNaN(lon_minutes)||(lon_minutes < 0)||(lon_minutes >=  60))
    {
        window.alert("Ungültige Eingabewerte");
        return;
    }

    var lat = lat_degrees + lat_minutes/60.0;
    var lon = lon_degrees + lon_minutes/60.0;

    if (document.calc.south.checked == true) lat = -lat;
    if (document.calc.west.checked  == true) lon = -lon;

    showdate(Now);

    document.calc.sunrise.value = "";
    document.calc.sunset.value  = "";
    riseset(lat, lon);
    save_latlon();
}

// do next day
function advance()
{
    var date = Now.getDate();
    Now.setDate(date + 1);
    compute();
}

// do previous day
function backup()
{
    var date = Now.getDate();
    Now.setDate(date - 1);
    compute();
}

// change N/S flags
function north_lat()
{
    if (document.calc.south.checked == true) 
        document.calc.south.checked = false;
}

// change N/S flags
function south_lat()
{
    if (document.calc.north.checked == true) 
        document.calc.north.checked = false;
}

// change E/W flags
function east_lon()
{
    if (document.calc.west.checked == true) 
        document.calc.west.checked = false;
}

// change E/W flags
function west_lon()
{
    if (document.calc.east.checked == true) 
        document.calc.east.checked = false;
}

// calculate sunrise and sunset times
function riseset( lat, lon )
{
    var k;
    var zone = Math.round(Now.getTimezoneOffset()/60);
    var jd = julian_day() - 2451545;           // Julian day relative to Jan 1.5, 2000
    
    if ((sgn(zone) == sgn(lon))&&(zone != 0))
        window.alert("ACHTUNG: Zeitzone und Längengrad passen nicht zueinander!");
    
    lon = lon/360;
    var tz  = zone/24;
    var ct  = jd/36525 + 1;                    // centuries since 1900.0
    var t0 = lst(lon, jd, tz);                 // local sidereal time

    jd = jd + tz;                              // get sun position at start of day
    sun(jd, ct);
    var ra0  = Sky[0];
    var dec0 = Sky[1];

    jd = jd + 1;                               // get sun position at end of day
    sun(jd, ct);
    var ra1  = Sky[0];
    var dec1 = Sky[1];

    if (ra1 < ra0)                             // make continuous 
        ra1 = ra1 + 2*PI;

    Sunrise = false;                           // initialize
    Sunset  = false;
    RAn[0]   = ra0;
    Dec[0]  = dec0;
    
    for (k = 0; k < 24; k++)                   // check each hour of this day
    {
        ph = (k + 1)/24;
        
        RAn[2] = ra0  + (k + 1)*(ra1  - ra0)/24;
        Dec[2] = dec0 + (k + 1)*(dec1 - dec0)/24;
        VHz[2] = test_hour(k, zone, t0, lat);
        
        RAn[0] = RAn[2];                       // advance to next hour
        Dec[0] = Dec[2];
        VHz[0] = VHz[2];
    }

    // display results
    //document.calc.sunrise.value = zintstr(Rise_time[0], 2) + ":" + zintstr(Rise_time[1], 2); // + ", az = " + frealstr(Rise_az, 5, 1) + "°"
    //document.calc.sunset.value  = zintstr( Set_time[0], 2) + ":" + zintstr( Set_time[1], 2); // + ", az = " + frealstr(Set_az, 5, 1) + "°"
	document.getElementById('sunrise').innerHTML = "Sonnenaufgang: "+zintstr(Rise_time[0], 2) + ":" + zintstr(Rise_time[1], 2);
	document.getElementById('sunset').innerHTML  = "Sonnenuntergang: "+zintstr( Set_time[0], 2) + ":" + zintstr( Set_time[1], 2);
    special_message();
}

// Local Sidereal Time for zone
function lst( lon, jd, z )
{
    var s = 24110.5 + 8640184.812999999*jd/36525 + 86636.6*z + 86400*lon;
    s = s/86400;
    s = s - Math.floor(s);
    return s*360*DR;
}

// test an hour for an event
function test_hour( k, zone, t0, lat )
{
    var ha = new Array(3);
    var a, b, c, d, e, s, z;
    var hr, min, time;
    var az, dz, hz, nz;
    
    ha[0] = t0 - RAn[0] + k*K1; 
    ha[2] = t0 - RAn[2] + k*K1 + K1; 

    ha[1]  = (ha[2]  + ha[0])/2;               // hour angle at half hour
    Dec[1] = (Dec[2] + Dec[0])/2 ;             // declination at half hour
    
    s = Math.sin(lat*DR);
    c = Math.cos(lat*DR);
    z = Math.cos(90.833*DR);                   // refraction + sun semidiameter at horizon

    if (k <= 0)
        VHz[0] = s*Math.sin(Dec[0]) + c*Math.cos(Dec[0])*Math.cos(ha[0]) - z;

    VHz[2] = s*Math.sin(Dec[2]) + c*Math.cos(Dec[2])*Math.cos(ha[2]) - z;
    
    if (sgn(VHz[0]) == sgn(VHz[2])) 
        return VHz[2];                         // no event this hour
    
    VHz[1] = s*Math.sin(Dec[1]) + c*Math.cos(Dec[1])*Math.cos(ha[1]) - z;
    
    a =  2* VHz[0] - 4*VHz[1] + 2*VHz[2]; 
    b = -3* VHz[0] + 4*VHz[1] - VHz[2];   
    d = b*b - 4*a*VHz[0];

    if (d < 0) 
        return VHz[2];                         // no event this hour
    
    d = Math.sqrt(d);    
    e = (-b + d)/(2 * a);
    
    if ((e > 1)||(e < 0))
        e = (-b - d)/(2*a);

    time = k + e + 1/120;                      // time of an event
    
    hr = Math.floor(time);
    min = Math.floor((time - hr)*60);

    hz = ha[0] + e*(ha[2] - ha[0]);            // azimuth of the sun at the event
    nz = -Math.cos(Dec[1])*Math.sin(hz);
    dz = c*Math.sin(Dec[1]) - s*Math.cos(Dec[1])*Math.cos(hz);
    az = Math.atan2(nz, dz)/DR;
    if (az < 0) az = az + 360;
    
    if ((VHz[0] < 0)&&(VHz[2] > 0))
    {
        Rise_time[0] = hr;
        Rise_time[1] = min;
        Rise_az = az;
        Sunrise = true;
    }
    
    if ((VHz[0] > 0)&&(VHz[2] < 0))
    {
        Set_time[0] = hr;
        Set_time[1] = min;
        Set_az = az;
        Sunset = true;
    }

    return VHz[2];
}

// check for no sunrise and/or no sunset
function special_message()
{
    if ((!Sunrise)&&(!Sunset))                 // neither sunrise nor sunset
    {
        if (VHz[2] < 0)
            document.calc.sunrise.value = "Sonne ganztätig unter dem Horizont";
        else
            document.calc.sunrise.value = "Sonne ganztägig über dem Horizont";

        document.calc.sunset.value = "";
    }
    else                                       // sunrise or sunset
    {
        if (!Sunrise)
            document.calc.sunrise.value = "Kein Sonnenaufgang heute";
        else if (!Sunset)
            document.calc.sunset.value  = "Kein Sonnenuntergang heute";
    }
}

// sun's position using fundamental arguments 
// (Van Flandern & Pulkkinen, 1979)
function sun( jd, ct )
{
    var g, lo, s, u, v, w;
    
    lo = 0.779072 + 0.00273790931*jd;
    lo = lo - Math.floor(lo);
    lo = lo*2*PI;

    g = 0.993126 + 0.0027377785*jd;
    g = g - Math.floor(g);
    g = g*2*PI;
    
    v = 0.39785*Math.sin(lo);
    v = v - 0.01*Math.sin(lo - g);
    v = v + 0.00333*Math.sin(lo + g);
    v = v - 0.00021*ct * Math.sin(lo);
    
    u = 1 - 0.03349*Math.cos(g);
    u = u - 0.00014*Math.cos(2*lo);
    u = u + 0.00008*Math.cos(lo);
    
    w = -0.0001 - 0.04129*Math.sin(2*lo);
    w = w + 0.03211*Math.sin(g );
    w = w + 0.00104*Math.sin(2*lo - g);
    w = w - 0.00035*Math.sin(2*lo + g);
    w = w - 0.00008*ct*Math.sin(g);
    
    s = w/Math.sqrt(u - v*v);                  // compute sun's right ascension  
    Sky[0] = lo + Math.atan(s/Math.sqrt(1 - s*s));

    s = v/Math.sqrt(u);                        // ...and declination 
    Sky[1] = Math.atan(s/Math.sqrt(1 - s*s));
}

// determine Julian day from calendar date
// (Jean Meeus, "Astronomical Algorithms", Willmann-Bell, 1991)
function julian_day()
{
    var a, b, jd;
    var gregorian;

    var month = Now.getMonth() + 1;
    var day   = Now.getDate();
    var year  = Now.getFullYear();

    gregorian = (year < 1583) ? false : true;
    
    if ((month == 1)||(month == 2))
    {
        year  = year  - 1;
        month = month + 12;
    }

    a = Math.floor(year/100);
    if (gregorian) b = 2 - a + Math.floor(a/4);
    else           b = 0.0;

    jd = Math.floor(365.25*(year + 4716)) 
       + Math.floor(30.6001*(month + 1)) 
       + day + b - 1524.5;
    
    return jd;
}

// returns value for sign of argument
function sgn( x )
{
    var rv;
    if (x > 0.0)      rv =  1;
    else if (x < 0.0) rv = -1;
    else              rv =  0;
    return rv;
}

// format a positive integer with leading zeroes
function zintstr( num, width )
{
    var str = num.toString(10);
    var len = str.length;
    var intgr = "";
    var i;

    for (i = 0; i < width - len; i++)          // append leading zeroes
        intgr += '0';

    for (i = 0; i < len; i++)                  // append digits
        intgr += str.charAt(i);

    return intgr;
}

// format an integer
function cintstr( num, width )
{
    var str = num.toString(10);
    var len = str.length;
    var intgr = "";
    var i;

    for (i = 0; i < width - len; i++)          // append leading spaces
        intgr += ' ';

    for (i = 0; i < len; i++)                  // append digits
        intgr += str.charAt(i);

    return intgr;
}

// format a real number
function frealstr( num, width, fract )
{
    var str = num.toFixed(fract);
    var len = str.length;
    var real = "";
    var i;

    for (i = 0; i < width - len; i++)          // append leading spaces
        real += ' ';

    for (i = 0; i < len; i++)                  // append digits
        real += str.charAt(i);

    return real;
}

// read data from cookie
function getCookie( name )
{
    if (document.cookie.length > 0) 
    { 
        begin = document.cookie.indexOf(name+"="); 
        if (begin != -1)
        { 
            begin += name.length + 1; 
            end = document.cookie.indexOf(";", begin);
            if (end == -1) end = document.cookie.length;

            return unescape(document.cookie.substring(begin, end)); 
        } 
    }
    return null; 
}

// write data to cookie
function setCookie( name, value, expiredays ) 
{
    var ExpireDate = new Date();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays*24*3600*1000));

    document.cookie = name 
                    + "=" + escape(value) 
                    + ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

// unhide -->


<!-- Mond - Script mit freundlicher Genehmigung von Herbert Metz http://www.computus.de -->
<!--
  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 JD_Java(JD){
    return (JD - 2440587.5) * 86400000;
  }
  function Java_JD(Zeit){
    return Zeit / 86400000 + 2440587.5;
  }
  function Gradumrechnung(Grad){
    var n1 = "", n2 = "";
    var G = Math.floor(Grad);
    var M = Math.floor((Grad - G) * 60);
    var S = Math.round(((Grad - G) * 60 - M) * 60);
    if(M < 10) n1 = "0";
    if(S < 10) n2 = "0";
    return G + "°" + n1 + M + "'" + n2 + S + "&quot;";
  }

  function Ausgabe_der_Mondentfernung(){
  }
  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 In_Tagen(JDE){
    var Text;
    var Diff = Tagesdifferenz(JDE);
    if (Diff == 1)
      Text = " morgen<br />";
    if (Diff == 0)
      Text = " heute<br />";
    if (Diff > 1)
      Text = " in " + Diff + " Tagen<br />";
    if (Diff < 1)
      Text = " vor " + Diff + " Tagen<br />";
    return Text
  }
  function Tagesdifferenz(JDE){
    var Monatstage = new Array(31,28,31,30,31,30,31,31,30,31,30,30);
    // aktuelles Datum
    var heute = new Date();
    var Jahr = heute.getFullYear();
    var Monat = heute.getMonth();
    var Tag = heute.getDate();
    // JDE Datum
    var dheute = new Date();
    dheute.setTime(JD_Java(JDE));
    var dJahr = dheute.getFullYear();
    var dMonat = dheute.getMonth();
    var dTag = dheute.getDate();
    if (dJahr % 4 == 0){
      Monatstage[1] = 29;
    }
    // Berechnung
    var Differenz = (dJahr - Jahr) * 365 + Math.floor(dJahr / 4) - Math.floor(Jahr / 4);
    for(; Monat < dMonat; Monat++) Differenz += Monatstage[Monat];
    return Differenz += dTag - Tag;

  }
  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 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(Text + In_Tagen(JDE));
  }

  function NaechsteMondphasen(){
    var JDE_mondphase = new Array(2);
    var JDE_finsternis = new Array(5);
    var Text_mondphase = new Array(" ","Nächster Vollmond","Nächstes Letztes Viertel","Nächster Neumond","Nächstes Erstes Viertel");
    var Text_finsternis = new Array(" ","Partielle Mondfinsternis","Totale Mondfinsternis","Partielle Sonnenfinsternis","Totale Sonnenfinsternis","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 < 2; 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);
    Ausgabe_der_Mondphasen(Text_mondphase[1], JDE_mondphase[1]);
	Ausgabe_der_Mondphasen(Text_mondphase[3], JDE_mondphase[3]);
    document.write("<div class='separator' style='margin-top:25px;'></div><h5>Die nächsten Finsternisse<\/h5>");
    for(t = 1; t < 6; t++){
      Ausgabe_der_Mondphasen(Text_finsternis[t], JDE_finsternis[t]);
    }
  }
  function Mondtag(){
    //Bezug ist der Neumond am 6.1.2001
    var Bild;
    var Bildmenge = 99; // 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 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);
	
    if (Math.abs(neumond) < Math.abs(erstesviertel) && Math.abs(neumond) < Math.abs(letztesviertel) && Math.abs(neumond) < Math.abs(vollmond)){
      //alert("Neumond");
      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.write ("Nächster Neumond ist in:") : document.write ("Letzter Neumond war vor:");
    }
    if (Math.abs(erstesviertel) < Math.abs(neumond) && Math.abs(erstesviertel) < Math.abs(letztesviertel) && Math.abs(erstesviertel) < Math.abs(vollmond)){
      //alert("erstes Viertel");
      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);
    }
    if (Math.abs(vollmond) < Math.abs(neumond) && Math.abs(vollmond) < Math.abs(letztesviertel) && Math.abs(vollmond) < Math.abs(erstesviertel)){
      //alert("Vollmond");
      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.write ("Nächster Vollmond ist in:") : document.write ("Letzter Vollmond war vor:");
    }
    if (Math.abs(letztesviertel) < Math.abs(neumond) && Math.abs(letztesviertel) < Math.abs(vollmond) && Math.abs(letztesviertel) < Math.abs(erstesviertel)){
      //alert("Letztes Viertel");
      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);
    }

    //window.setTimeout('Mondtag()',60000); //jede Minute updaten <= sven: NOPE NICHT UPDATEN
    document.getElementById('mond').src = '/2010/img/weather/moon/m'+Bild+'.png';
    document.getElementById('mond').alt = Math.round(Beleuchtung(JD) * 10000) / 10000+"% der Mondfläche beleuchtet";
  }
  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 CS(x){
    return Math.cos(x * .0174532925199433);
  }
  function SN(x){
    return Math.sin(x * .0174532925199433);
  }

//-->

