function frac(x)
	{
	var a = x - Math.floor(x);
	return a;
	}

function Mod(a, b)
	{ 
 	return(a-Math.floor(a/b)*b); 
	}

function Mod2Pi(x)
	{
	x = Mod(x, 2*pi);
	return(x);
	}

function Int(x)
{
  if (x<0) { return(Math.ceil(x)); } else return(Math.floor(x));
}

function sqr(x)
{
	return x*x;
}


// Koordinaten

	var lon = 8.6681;
	var lat = 50.1300;

// Konstanten

	var pi = Math.PI;
	var DEG = pi/180;
	var RAD = 180/pi;
	var eg = 279.403303;
	var wg = 282.768422;
	var eps = 0.016713*DEG;
  	var eps2  = 0.016713;

// Julianisches Datum

	var now = new Date();
	var JDyear = now.getFullYear();
	var JDmonth = now.getMonth()+1;
	var JDday = now.getDate();
	var JDhour = now.getHours();
	var JDminute = now.getMinutes();
	var JDUThour = now.getUTCHours();
	var JDUTminute = now.getUTCMinutes();
	var JDsecond = now.getSeconds();
	var timezone = -now.getTimezoneOffset()/60;

  	var jd = 2415020.5 - 64;
  	if (JDmonth <= 2) { JDyear--; JDmonth += 12; }
  	jd += Int( (JDyear-1900)*365.25 );
  	jd += Int( 30.6001*(1+JDmonth) );
  	var JDfinal = jd + JDday + (JDhour - timezone + JDminute/60 + JDsecond/3600)/24;

	var TDT = JDfinal + (65/24/3600);
  	var days1990 = TDT-2447891.5;

// UT2GST converter
	
	var gstT = (JDfinal - 2451545)/36525;
	var T0 = Mod(6.697374558 + gstT*(2400.051336 + gstT*0.000025862), 24);
  	var UT = (JDUThour + (JDUTminute/60)) * 1.002737909;
  	var GST = Mod(UT + T0, 24);
  	var eps3 = (23.+(26+21.45/60)/60 + gstT*(-46.815 +gstT*(-0.0006 + gstT*0.00181) )/3600 )*DEG;
	var coseps = Math.cos(eps3);
	var sineps = Math.sin(eps3);


// Berechne Lambda der Sonne

  	var eg2 = 279.403303*DEG;
  	var wg2 = 282.768422*DEG;
	var beta = 0;	
 	var MSun = 360*DEG/365.242191*days1990+eg2-wg2;
 	var nu = MSun + 360.*DEG/pi*eps2*Math.sin(MSun);
	var lambda = Mod2Pi(nu+wg2)*RAD;

// Mond

	var l0 = 318.351648*DEG;
	var P0 = 36.340410*DEG;
	var N0 = 318.510107*DEG;
	var imoon = 5.145396*DEG;
	var emoon = 0.054900;
	var amoon = 384401;
	var teta0moon = 0.5181;
	var pi0moon = 0.9507;
	var sinmeps = Math.sin(emoon);

	var l = 13.1763966*DEG*days1990+l0;
	var Mmoon = l-0.1114041*DEG*days1990-P0;
	var N = N0-0.0529539*DEG*days1990;
  	var C = l-lambda*DEG;
  	var Ev = 1.2739*DEG*Math.sin(2*C-Mmoon);
  	var Ae = 0.1858*DEG*Math.sin(MSun);
  	var A3 = 0.37*DEG*Math.sin(MSun);
  	var Mmoon2 = Mmoon+Ev-Ae-A3;
  	var Ec = 6.2886*DEG*Math.sin(Mmoon2);
  	var A4 = 0.214*DEG*Math.sin(2*Mmoon2);
  	var l2 = l+Ev+Ec-Ae+A4;
  	var V = 0.6583*DEG*Math.sin(2*(l2-lambda*DEG));
  	var l3 = l2+V;
  	var N2 = N-0.16*DEG*Math.sin(MSun);

  	var moonlon = Mod2Pi( N2 + Math.atan2( Math.sin(l3-N2)*Math.cos(imoon), Math.cos(l3-N2) ) )*RAD;
  	var moonlon2 = Mod2Pi( N2 + Math.atan2( Math.sin(l3-N2)*Math.cos(imoon), Math.cos(l3-N2) ) );
  	var moonlat = Math.asin( Math.sin(l3-N2)*Math.sin(imoon) )*RAD;
  	var moonlat2 = Math.asin( Math.sin(l3-N2)*Math.sin(imoon) );
  	var moondistance = (1-sqr(emoon)) / (1+emoon*Math.cos(Mmoon2+Ec) );
  	var tetamoon = parseInt(teta0moon*6000/moondistance)/100;
  	var pimoon = parseInt(pi0moon*100/moondistance)/100;

// Deklination des Mondes

	var moonlon1  = moonlon*DEG;
   
   	var moondek2  = (Math.sin(moonlat2)*coseps+Math.cos(moonlat2)*sineps*Math.sin(moonlon2))*RAD;
   
	var moondek  = Math.asin(Math.sin(moonlon1) * sineps)*RAD;

		
// Rektaszension des Mondes	
	
	var moonra =  Mod2Pi(Math.atan2( (Math.sin(moonlon1)*coseps-Math.tan(moonlat2)*sineps), Math.cos(moonlon1) ) )*RAD/15 ;
	
	var moonra2 = Math.round((moonra-parseInt(moonra))*60);

// GST2LST converter

function GST2LST(x)
	{
	var LSTC = Mod(x+lon/15, 24.);
	return(LSTC);
	}

	var LST = GST2LST(GST);

// Mondzeichen

function MoonSign(x)
{ 
  var signs= new Array("Widder", "Stier", "Zwillinge", "Krebs", "Löwe", "Jungfrau", "Waage", "Skorpion", "Schütze", "Steinbock", "Wassermann", "Fische");
  var y = Math.floor(x*RAD/30)-1;
  if (y<0)
  {
  y = 11
  }
  return( signs[y] );
}

	var mondz = MoonSign(moonlon2);

// Mondalter

	var moonAge = 29.5305985*(Mod2Pi(l3-lambda*DEG)*RAD)/360;
	var moonAge2 = parseInt(moonAge*100)/100;
	
// Stundenwinkel

	var Hw = Mod(LST - moonra, 24);

// Horizontale Koordinaten der Sonne
	
	// ALT
	var horA = Hw * 15;
	var sinAl = Math.sin(moondek*DEG)*Math.sin(lat*DEG)+ Math.cos(moondek*DEG)*Math.cos(lat*DEG)*Math.cos(horA*DEG);
	var Alb = Math.asin(sinAl)*RAD;
	var fiAl = parseInt(Alb*100)/100;
	
	// AZIMUT
	var cosAz = (Math.sin(moondek*DEG)-Math.sin(lat*DEG)*sinAl)/Math.cos(lat*DEG)*Math.cos(Math.asin(sinAl)*DEG);
	var AZb = Math.acos(cosAz)*RAD;
	var sinH = Math.sin(horA*DEG);
	
	if(sinH>=0)
	{
		var Azc = (360 - AZb);
	}
	else
	{
		var Azc = AZb;
	}
	
	var finAz = parseInt(Azc*100)/100;


	document.write('<tr><td class="erg1c">(Ortsspezifische Daten sind für Frankfurt am Main gerechnet)</td></tr>');

	document.write('<tr><td class="erg1">Rektaszension</td></tr>');
	document.write('<tr><td class="erg1c">&alpha; = ',parseInt(moonra),' h &nbsp;',moonra2,' m</td></tr>');
	document.write('<tr><td class="erg1">Deklination</td></tr>');
	document.write('<tr><td class="erg1c">&delta; = ',parseInt(moondek2*100)/100,' °</td></tr>');

	document.write('<tr><td class="erg1">Azimut</td></tr>');
	document.write('<tr><td class="erg1c">A = ',finAz,' °</td></tr>');
	document.write('<tr><td class="erg1">Höhe</td></tr>');
	document.write('<tr><td class="erg1c">h = ',fiAl,' °</td></tr>');

	document.write('<tr><td class="erg1">Ekliptikale Länge</td></tr>');
	document.write('<tr><td class="erg1c">&lambda; = ',parseInt(moonlon*100)/100,' °</td></tr>');
	document.write('<tr><td class="erg1">Ekliptikale Breite</td></tr>');
	document.write('<tr><td class="erg1c">&beta; = ',parseInt(moonlat*100)/100,' °</td></tr>');
	document.write('<tr><td class="erg1">Mondalter</td></tr>');
	document.write('<tr><td class="erg1c">L = ',moonAge2,' Tage</td></tr>');
	document.write('<tr><td class="erg1">Mondentfernung</td></tr>');
	document.write('<tr><td class="erg1c">',parseInt(moondistance*amoon),' km</td></tr>');
	document.write('<tr><td class="erg1">Monddurchmesser</td></tr>');
	document.write('<tr><td class="erg1c">&theta; = ',tetamoon,' \'</td></tr>');
	document.write('<tr><td class="erg1">Mondparallaxe</td></tr>');
	document.write('<tr><td class="erg1d">&pi;<sub>0</sub> = ',pimoon,' °</td></tr>');
	document.write('<tr><td><br></td></tr>');
