
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));
}

// 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;
	var T00 = 6.697374558;
	var a0  = 147841870.691;
	var t0 = 0.533128;

// 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;

// Tage seit 1990

	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);

// Carrington Nummer

	CRN = parseInt(1690 + ((JDfinal-2444235.34)/27.2753));

// Berechne Lambda

  	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;
	
	var lambda3 = Math.round(lambda*100)/100;

// Sonnenabstand

	var f0 = (1+eps*Math.cos(nu))/(1-(eps*eps));
	
	var rS = parseInt(a0/f0);
	
	var rSae = parseInt((rS/147900000)*1000)/1000 ;

// Sonnendurchmesser
	
	var tetaS = t0*f0;

	var tetaS1 = (parseInt(tetaS*100)/100)*60;

// Deklination der Sonne

	var L3  = lambda*DEG;
   
	var Dek  = Math.asin(Math.sin(L3) * sineps) / DEG;	
	var Dek2  = parseInt(Dek*100)/100;	
		
// Rektaszension der Sonne	
	
	var ra =  Mod2Pi(Math.atan2( (Math.sin(L3)*coseps-Math.tan(0)*sineps), Math.cos(L3) ) )/DEG/15 ;
	var rah = parseInt(ra);
	var ram = parseInt((ra-rah)*60);

// Sternzeichen

	var Sternzeichen = new Array("Widder", "Stier", "Zwillinge", "Krebs", "Löwe", "Jungfrau", "Waage", "Skorpion", "Schütze", "Steinbock", "Wassermann", "Fische");
	var aktZeichen = Sternzeichen[Math.floor(L3*RAD/30)];

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

	var LST = GST2LST(GST);

// LST2GST converter
function LST2GST(x)
	{
	var GSTC = Mod(x-lon/15, 24.);
	return(GSTC);
	}

// GST2UT converter
function GST2UT(x)
	{	
	var JD2 = Math.floor(JDfinal-0.5)+0.5;
	var T1 = (JD2 - 2451545)/36525;
	var T2 = Mod(6.697374558 + T1*(2400.051336 + T1*T1*0.000025862), 24);
  	var UTC = Mod(x - T2, 24)*0.9972695663;
 	return(UTC);
	}

// Stundenwinkel

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

// Horizontale Koordinaten der Sonne
	
	// ALT
	var horA = Hw * 15;
	var sinAl = Math.sin(Dek*DEG)*Math.sin(lat*DEG)+ Math.cos(Dek*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(Dek*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">Ekliptikale Länge</td></tr>');
	document.write('<tr><td class="erg1c">&lambda; = ',lambda3,' °</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">Rektaszension</td></tr>');
	document.write('<tr><td class="erg1c">&alpha; = ',rah,' h ',ram,' m</td></tr>');
	document.write('<tr><td class="erg1">Deklination</td></tr>');
	document.write('<tr><td class="erg1c">&delta; = ',Dek2,' °</td></tr>');
	document.write('<tr><td class="erg1">Aktuelle Carrington Rotationsnummer</td></tr>');
	document.write('<tr><td class="erg1c">',CRN,'</td></tr>');
	document.write('<tr><td class="erg1">Sonnendistanz [km]</td></tr>');
	document.write('<tr><td class="erg1c">r = ',rS,'</td></tr>');
	document.write('<tr><td class="erg1">Sonnendistanz [AE]</td></tr>');
	document.write('<tr><td class="erg1c">r = ',rSae,'</td></tr>');
	document.write('<tr><td class="erg1">Sonnendurchmesser</td></tr>');
	document.write('<tr><td class="erg1d">&theta; = ',tetaS1,' \'</td></tr>');
	document.write('<tr><td><br></td></tr>');
