	// globale Variable
	var lyear=0;lday=0;lhour=0;lmin=0;lsec=0;
	var dlyear=0; parsec=0; kmeter=0; mile=0; aunit=0;
	var paral=0;						// Parallaxe
	var reds= 0;					    // Redshift
	var m= 0;							// scheinbare Helligkeit
	var M= 0;							// absolute Helligkeit
	
	//  Konstante
	var MItoKM = 1.609344;				// wikipedia
	var AUtoKM = 149597870.691		   	// wikipedia
	var PCtoAU = 1/ Math.tan((1/3600)*Math.PI/180);	// nach Definition PC
	var PCtoLJ = 3.26156377694566;		// nach Abgleich

	var vlight = 299792.458;			// Lichtgeschwindigkeit in km/s
	var jyears = 31557600;				// Sekunden julian.Jahr
	var LJtoKM = jyears * vlight;		// julian. Lichtjahr
	var stdHUBBLE = 74.20;				// voreingestellte Hubble-Konstante (März 2010)
	var hubble = stdHUBBLE;				// Hubble-Parameter in km/s/MPc

/*	
	window.onerror = pgmfehler;
	window.onError = pgmfehler;
	function pgmfehler(){
		alert("Der eingegebene Ausdruck kann nicht zu einer Zahl\nausgewertet werden."+
		"\n\nGeben Sie die Zahl erneut ein und klicken Sie auf\nden danebenliegenden [Button]\n\n ");
		return true;
	}
*/	
	// --------------------------------------------------------------------------------------------------------------------------------------	
	// Zentrale Menüfunktion des Rechners. diese Funktion wird aus der HTML-Seite heraus mit einer Kennung der zu benutzenden
	// Umrechnung aufgerufen.
	// --------------------------------------------------------------------------------------------------------------------------------------
	function compute(akt) {
		if(akt=='K') {KM();return;}			// Kilometer umrechnen
		if(akt=='M') {MI();return;}			// Meilen umrechnen
		if(akt=='A') {AE();return;}			// Astronomische Einheiten AU umrechnen
		if(akt=='P') {PC();return;}			// Parsec umrechnen
		if(akt=='L') {LJ();return;}			// dezimale Lichtjahre umrechnen
		if(akt=='J') {LAin();return;}		// jj mm dd Lichtjahre umrechnen
		if(akt=='R') {redshift();return;}	// Entfernung aus Rotverschiebung berechnen
		if(akt=='D') {diameter();return;}	// Durchmesser aus Parallaxesekunde berechnen
		if(akt=='H') {mtoM(); return;}		// abs.Helligkeit aus scheinb.Helligkeit berechnen
		clear();							// Rechner löschen
		}
	 
	// Aufruf des Hilfe Bildschirms mit einer Gebrauchsanweisung für den Rechner
	function rhelp() {
		  hilfe = window.open("hilfetext.html", "Hilfe", "width=450,height=350,scrollbars=yes");
		  hilfe.focus();
		}
	// Berechnet aus der Rotverschiebung z eines weit entfernten Objekts dessen Entfernung
	// Die verwendete Hubble-Konstante 74,2 kann vor der Berechnung ebenfalls geändert werden. 
	function redshift(){
		// Benutzt die Hubble Konstante des Fensters
	    document.rechner.hubble.value = document.rechner.hubble.value.replace(/,/g,".");
		hubble = Math.abs(eval(document.rechner.hubble.value));
		// einlesen des Wertes für die Rotverschiebung
		document.rechner.redshift.value = document.rechner.redshift.value.replace(/,/g,".");
		reds = Math.abs(eval(document.rechner.redshift.value));
		// annähernde Berechnung der Entfernung aus der Rotverschiebung
		parsec=(((((reds+1)*(reds+1)-1)/((reds+1)*(reds+1)+1))*vlight)/hubble)*1000000;
		aunit = parsec * PCtoAU;
                kmeter= aunit  * AUtoKM;
		mile  = kmeter / MItoKM;
		dlyear= parsec * PCtoLJ;
		LArc();
		valout();
	}
	// Berechnet aus dem Parallaxewinkel in Sekunden, den Durchmesser eines Himmelsobjekts, wenn zuvor dessen Entfernung berechnet wurde.
	// Die vorliegende Funktion benutzt die Entfernungsangabe in Parsec.
	function diameter(){
		document.rechner.parallaxe.value = document.rechner.parallaxe.value.replace(/,/g,".");
		paral = Math.abs(eval(document.rechner.parallaxe.value));
		aunit = aunit  *  Math.tan((paral/60)*Math.PI/180);
		kmeter= aunit  * AUtoKM;
		mile  = kmeter / MItoKM;
		parsec= aunit  / PCtoAU;
		dlyear= parsec * PCtoLJ;
		LArc();
		valout();
		}
	// Berechnet aus der scheinbaren Helligkeit m eines Objekts dessen absolute Helligkeit M, wenn zuvor dessen Entfernung berechnet wurde
	// Die vorliegende Funktion benutzt die Entfernungsangabe in Parsec.
	function mtoM() {
		document.rechner.sHm.value = document.rechner.sHm.value.replace(/,/g,".");
		m= eval(document.rechner.sHm.value);
		var lvalz= Math.log((parsec/10)*(parsec/10));	// lvalz= ln((Entfernung/10PC)²)
		var lvaln= Math.log(Math.pow(100,0.2));			// lvaln= ln(5.wurzel aus 100)
		M= m-(lvalz/lvaln);
		document.rechner.aHM.value = M.toFixed(2);
	}
	function KM(){
		document.rechner.kilometer.value = document.rechner.kilometer.value.replace(/,/g,".");		
		if(isNaN(document.rechner.kilometer.value)){document.rechner.kilometer.value="keine Zahl"; return;}
		kmeter= Math.abs(document.rechner.kilometer.value);
		mile  = kmeter / MItoKM;
		aunit = kmeter / AUtoKM;
		parsec= aunit  / PCtoAU;
		dlyear= parsec * PCtoLJ;
		LArc();
		valout();
		}
	function MI(){
		document.rechner.miles.value = document.rechner.miles.value.replace(/,/g,".");	
		if(isNaN(document.rechner.miles.value)){document.rechner.miles.value="keine Zahl"; return;}
		mile  = Math.abs(document.rechner.miles.value);
		kmeter= mile   * MItoKM;
		aunit = kmeter / AUtoKM;
		parsec= aunit  / PCtoAU;
		dlyear= parsec * PCtoLJ;
		LArc();		
		valout();	
		}
	function AE(){
		document.rechner.astrounit.value = document.rechner.astrounit.value.replace(/,/g,".");	
		if(isNaN(document.rechner.astrounit.value)){document.rechner.astrounit.value="keine Zahl"; return;}
		aunit = Math.abs(document.rechner.astrounit.value);
		kmeter= aunit  * AUtoKM;
		mile  = kmeter / MItoKM;
		parsec= aunit  / PCtoAU;
		dlyear= parsec * PCtoLJ;
		LArc();
		valout();
		}
	function PC(){
		document.rechner.parsec.value = document.rechner.parsec.value.replace(/,/g,".");	
		if(isNaN(document.rechner.parsec.value)){document.rechner.parsec.value="keine Zahl"; return;}
		parsec= Math.abs(document.rechner.parsec.value);
		aunit = parsec * PCtoAU;
                kmeter= aunit  * AUtoKM;
		mile  = kmeter / MItoKM;
		dlyear= parsec * PCtoLJ;
		LArc();
		valout();
		}

	function LJ(){
		document.rechner.lichtjahr.value = document.rechner.lichtjahr.value.replace(/,/g,".");	
		if(isNaN(document.rechner.lichtjahr.value)){document.rechner.lichtjahr.value="keine Zahl"; return;}
		dlyear= Math.abs(document.rechner.lichtjahr.value);
		parsec= dlyear / PCtoLJ;
		aunit = parsec * PCtoAU;
		kmeter= dlyear * LJtoKM;
		mile  = kmeter / MItoKM;
		LArc();
		valout();
		}

	function LAin(){
		lyear = document.rechner.lj.value.replace(/,/g,".");
		lday  = document.rechner.ld.value.replace(/,/g,".");
		lhour = document.rechner.lh.value.replace(/,/g,".");
		lmin  = document.rechner.lm.value.replace(/,/g,".");
		lsec  = document.rechner.ls.value.replace(/,/g,".");

		if(isNaN(lyear)||isNaN(lday)||isNaN(lhour)||isNaN(lmin)||isNaN(lsec)) {pgmfehler(); return;}
			  

		lyear = parseInt(Math.abs(lyear));
		lday  = parseInt(Math.abs(lday ));
		lhour = parseInt(Math.abs(lhour));
		lmin  = parseInt(Math.abs(lmin ));
		lsec  = Math.abs(lsec);

		if(lday>366)         { lday=0;}
		if(lhour>23)         {lhour=0;}
		if(lmin>59)          { lmin=0;}
		if(parseInt(lsec)>59){ lsec=0;}

		dlyear=lyear+((lday*86400+lhour*3600+lmin*60+lsec)/jyears);
		parsec= dlyear / PCtoLJ;
		aunit = parsec * PCtoAU;
		kmeter= dlyear * LJtoKM;
		mile  = kmeter / MItoKM;
		valout();
		}

	function LArc(){
		var tmp;
		lyear = Math.floor(dlyear);
		tmp   = (dlyear-lyear)*jyears/86400;
		lday  = Math.floor(tmp);
		tmp   = (tmp-lday)*86400/3600;
		lhour = Math.floor(tmp);
		tmp   = (tmp -lhour)*3600/60;
		lmin  = Math.floor(tmp);
		lsec  = (tmp-lmin)*60;
		if(lsec>59){lsec=0; lmin+=1;
		            if(lmin>59){lmin=0; lhour+=1;
                              		if(lhour>23){lhour=0; lday+=1;
				    	             if(lday>365){lday =0; lyear+=1;}}}}
		}

	function clear() {
		dlyear=0; parsec=0; kmeter=0; mile=0; aunit=0;
		lyear=0; lday=0; lhour=0; lmin=0; lsec=0;
		paral=0; reds=0; m=0; M=0;
		hubble = stdHUBBLE;
		valout();
		}

	function valout(){
		document.rechner.lichtjahr.value = dlyear;
		document.rechner.lj.value        = lyear;
		document.rechner.ld.value        = lday
		document.rechner.lh.value        = lhour;
		document.rechner.lm.value        = lmin;
		document.rechner.ls.value        = lsec.toFixed(3);
		document.rechner.parsec.value    = parsec;
		document.rechner.astrounit.value = aunit;
		document.rechner.miles.value     = mile.toFixed(2);
		document.rechner.kilometer.value = kmeter.toFixed(2);
		document.rechner.parallaxe.value = paral;
		document.rechner.hubble.value    = hubble;
		document.rechner.redshift.value  = reds;
		document.rechner.sHm.value  	 = m;
		document.rechner.aHM.value		 = M;		
		}
		
	function openRechner(link) {
		  rechner = window.open(link, "calcwin", "width=590,height=375,scrollbars=no");
		  rechner.focus();
	}
