<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

	<head>

		<title>[Mond Auf- und Untergang]</title>
		
		<!-- Browser speichert keine Seite im Cache -->
		<!-- Browser does not store a page in the cache -->
		<meta http-equiv='cache-control' content='no-cache'>
		<meta http-equiv='expires' content='0'>
		<meta http-equiv='pragma' content='no-cache'>
		
		<style>
		
			/* ******************************
			 * ID des Body Tag Schriftfarbe
			 * und Hintergrundfarbe.
			* ID of the body tag font color
			* and background color.
			 *******************************/
			#b {
				background-color: #293133;
				color: #eadebd;
				border: 0px solid red;
			}
			
			/* ******************************
			 * Tabellenspalten Beschreibung.
			 * Table Columns Description.
			 *******************************/
			#label {
				width: 120px;
				text-align: right;
				font-family: Tahoma,Arial,Helvetica;
				font-size: 14 px;
				font-weight: 500;
			}
			
			/* ******************************
			 * Tabellenspalten Werte.
			 * Table column values.
			 *******************************/
			#value {
				width: 100px;
				text-align: right;
				font-family: Tahoma,Arial,Helvetica;
				font-size: 14 px;
				font-weight: 500;
			}
			
			/* ******************************
			 * Wichtige Werte markieren.
			 * Mark important values.
			 *******************************/
			.color {
				color: red;
			}

			/* ******************************
			 * HTML input-Tag.
			 * HTML-Eingabe-Tag.
			 *******************************/
			input {
				font-family: Tahoma,Arial,Helvetica;
				font-size: 14 px;
				font-weight: 500;
			}
			
		</style>
		<!-- Muss demarkiert werden, wenn jQuery verwendet werden soll -->
		<!-- Must be demarcated if jQuery is to be used -->
		<script type="text/javascript" src="https://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
		<script>
		
			// Mit der Ausführung warten bis DOM geladen ist.
			// With the execution wait until DOM is loaded.
			document.addEventListener("DOMContentLoaded", function(event) {

					/* **************************** Externe Quelldateien Laden *********************************************** */	

					// Funktion zum Einfügen der einzelnen Javascript Dateien.
					// Function to insert the individual Javascript files.
					function include(file) { 
					  
					  var script  = document.createElement('script'); 
					  script.src  = file; 
					  script.type = 'text/javascript'; 
					  script.defer = true; 
					  
					  document.getElementsByTagName('head').item(0).appendChild(script); 
					  
					}
					
					// Variablendefinitionen und Deklarationen ...
					// definitions of variables and declarations ...
					include('./Globale-This.js');
					
					// Keyboard Event Funktionen, die von den Listenern benutzt werden
					// Datei muss hier lokal liegen, da andere Kontrollelemente verwendet werden
					include('./Keyboard.js');
					
					// Keyboard Eventlistener
					// Datei muss hier lokal liegen, da andere Kontrollelemente verwendet werden
					include('./Keyboard-Listener.js');
					
					// Nützliche Funktionen wie Sommerzeit/Winterzeit, Popup Öffnen ...
					// Useful functions like Daylight Savings Time, open popups ...
					include('../../Bibliotheken/Utilities.js');

					// Funktionen zur Berechnungen/Konvertierung des Julianischen Datum
					// Functions for calculations/conversion of the Julian date
					include('../../Bibliotheken/calculateJD.js');

					// Konvertierung von Uhrzeiten
					// Conversion of times
					include('../../Bibliotheken/decTime.js');
					
					// Funktionen für die Mondpositionen
					// Functions for the moon positions
					include('../../Bibliotheken/Moonpositions.js');
					
					// Funktionen für die Sonnenpositionen
					// Functions for the sun positions
					include('../../Bibliotheken/Sunpositions.js');
					
					// Funktionen für die Sternzeit/Lokale Zeit
					// Functions for the siderial/local time
					include('../../Bibliotheken/SiderialTime.js');
					
					// Funktionen für Mond Auf- und Untergang
					// Functions for the moonrise and moonset
					include('../../Bibliotheken/MoonRiseSet.js');
					
					// Funktionen für die Berechnung der Objekthöhe über dem Horizont
					// Functions for calculating the object height above the horizon
					include('../../Bibliotheken/ObjectHeight.js');
					
					
				// Alles geladen inklusive Bilder.
				// Funktioniert nicht alleine: DOM muss vorher geleden sein und danach erst
				// der Windows Event Load.
				// All loaded including pictures. // Does not work alone: DOM must be leden before and after
				// the Windows Event Load.
				window.addEventListener("load", function(){
				
					
				/* ***************************************************Füllen der Eingabefelder******************************************************* */
					/* ******************************************************Fill the input fields************************************************************ */
					
					//Füllen der Datumsfelder mit dem aktuellen Datum.
					//Fill the date fields with the current date.
					objDay.value = d.getDate();				// Tag - Day
					objMonth.value = d.getMonth() + 1;	// Monat - Month
					objYear.value = d.getFullYear();		// Jahr - Year

					/* ********************** Funktionen die beim Laden ausgeführt werden ************************ */
					/* ******************************** Functions performed at loading ******************************** */
					
						// Teste, ob der Rechner auf Sommer- o. Winterzeit steht ...
						// Test whether the computer is set to summer or winter time . . .
						ISDST = isDST(new Date(objYear.value, objMonth.value, objDay.value, 0, 0, 0, 0));

						// ... und stelle das Ausgabefeld so ein. Sommerzeit = 1, Winterzeit = 0
						// . . . and set the output field like this. DST = 1, winter time = 0
						if (ISDST)objDST.value = 1;	else	objDST.value = 0;
						
						// Ermittle die Zeitzone aus dem Datum des Rechners ...
						// Identify the time zone from the date of the computer.
						TZ = getTZ();
						// ... ist er negativ geht's nach Osten, ansonsten nach Westen und
						// im entsprechenden Ausgabefeld eintragen.
						//
						//. . . is he negative’s going east, otherwise to the west and Enter 
						// in the corresponding output field.
						if (TZ < 0)objTZ.value = Math.abs(TZ);else  objTZ.value = TZ;
						
					/* ***************************************************GeoPosition******************************************************* */
					
						// Hole Dir die Positionsdaten des Rechners und übergebe dabei die
						// Ergebnisfelder für Längengrad, Breitengrad und Genauigkeit.
						// Get the position data of the computer and hand over the
						// Result fields for longitude, latitude.
						// In Utilities.js
						startGeoPosition(objLongitude, objLatitude, 0);
					
					
					/* ********************** Verwendete/Used Event Listener ************************ */
	
					// Erstellt einen neuen Kommuikationskanal an dem alle Hören und damit
					// Senden können.
					// Creates a new communication channel where all listening and thus
					// Can send.
					var objChannel = new BroadcastChannel("com");
					
					// Wenn das SiderialTime Program beendet wird, dann Sende auf dem Kanal
					// diese Info, damit in Wordpress die Fenstervariable wieder zurückgesetzt
					// wird und das Programm wieder starten kann.
					// If the SiderialTime Program is terminated, then send on the channel
					// this info, so that in Wordpress the window variable is reset
					// and the program can start again.
					window.addEventListener("beforeunload", function(event){
						objChannel.postMessage("moonriseset is closed");
					});
	
					// Klick auf den Button "Berechnen" ... Programm startet hier ...
					// Click on the button "Calculate" . . . Program starts here . . .
					objCalc.addEventListener("click", function () {
						// Startet die Berechnung
						// Starts the calculation
						start();
					});

					/* ********************************* Programm / Program ******************************* */
					
					// Berechnungsstart - Start the calculation
					function start(){
					
						// Prüfe vor dem Berechnungsbeginn noch einmal, ob nicht eine falsche Eingabe des Tages,
						// in Hinblick auf ein Schaltjahr und den Monat Februar, vorgenommen wurde. Dazu kann man
						// die Callback Funktion des Eventlisteners des Tages für die Änderung benutzen.
						// Check again before the calculation starts, if there is a wrong entry of the day, 
						// with regard to a leap year and the month February. To do this, you can use
						// the callback function of the event listener of the day for the change.
						keydownChangeDay(objDay, objMonth, objLeapYear);
						keydownChangeMonth(objMonth);
						keydownChangeYear(objYear, objLeapYear);
						keydownChangeDST(objDST);
						keydownChangeTZ(objTZ);
						keydownChangeLongitude(objLongitude);
						keydownChangeLatitude(objLatitude);
						// Mit der Funktion isLeapYear() und dem Parameter des
						// Berechnungsjahres (objYear.value) , wird festgestellt ob
						// es sich um ein Schaltjahr handelt und dies Ausgegeben.
						//
						// With the function isLeapYear () and the parameter of the
						// Calculation year (objYear. value), is determined whether
						// it is a leap year and this is output.
						if (isLeapYear(objYear.value))objLeapYear.value = "Ja";	else objLeapYear.value = "Nein";
						
						// Mit der Funktion wird die Plausibilität von Zeitzone und Längengrad überprüft. Beide
						// müssen korrespondieren. Z.B. muss die TZ = 1 mit einem Längengrad von 0° - 15° Ost
						// übereinstimmen. TZ = -1 mit 0° bis -15° .... usw. Wir haben von 0° = Grennwich Meridian
						// bis +180° und -180° in der Länge und Zeitzone von 0 = Grennwich bis +12 und -12.
						if (testTimezoneAndLongitude(objTZ.value , objLongitude.value)== false ){
							// Gebe Meldung über fehlerhalte Zeitzone + Längengrad ...
							// Error message for a mistake in time zone and longitude ...
							alert("Fehler bei Zeitzone und Längengrad des Standortes!\nKeine Berechnung");
							// ... und beende das Programm.
							// ... exit of the program
							return(false);
						}

						// ********************************* Moonrise/Set / Mond Auf- und Untergang *******************************
						//
						// Wenn der aktuelle Berechnungstag verschieden vom schon berechneten Tag ist,
						// dann berechne die Daten neu ...
						// If the current calculation day is different from the already calculated day,
						// then recalculate the data ...
						if ((saveMoonRiseSetDay != objDay.value) || (saveMoonRiseSetMonth != objMonth.value) ||
								(saveMoonRiseSetYear != objYear.value)||  (saveMoonRiseSetDST != objDST.value)||
								(saveMoonRiseSetTZ != objTZ.value)||  (saveMoonRiseSetLong != objLongitude.value)||  
								(saveMoonRiseSetLat != objLatitude.value)){
							//
							// **********************************  Mondaufgang / Moon rise  ********************************************
							//
							// ... und speichere zuerst den neu berechneten Tag/Monat/Jahr/DST/TZ/Längengrad/Breitengrad ...
							// . . . and first save the newly calculated day/month/year/DST/TZ/Longitude/Latitude . . .
							saveMoonRiseSetDay = objDay.value;
							saveMoonRiseSetMonth= objMonth.value;
							saveMoonRiseSetYear = objYear.value;
							saveMoonRiseSetDST = objDST.value;
							saveMoonRiseSetTZ= objTZ.value;
							saveMoonRiseSetLong = objLongitude.value;
							saveMoonRiseSetLat = objLatitude.value;
							// ... und berechne dann den neuen Mond Aufgang ...
							// . . . and then work out the new moon up . . .
							LCT = moonriseLocalTime(objDay.value, objMonth.value, objYear.value, 
																	  objDST.value, objTZ.value, objLongitude.value, objLatitude.value);
							// ... in Index 1 ist der Status der Konvertierung von GST nach UT. Werte sind "Warnung" + "OK ...
							// --- in Index 2 ist der Status des Mondaufgangs und -Untergangs enthalten. Werte sind "OK",
							// "Nie Sichtbar" und "Immer Sichtbar" ...
							// . . . in Index 1 is the conversion status from GST to UT. Values are “Warning” + “OK . . .
							// --- Index 2 includes the status of the moon’s rise and set. Values are “OK”,
							// “Never Visible” and “Always Visible” . . .
							var statGSTandUT_LCT = LCT[1].toLowerCase();
							var statRise_LCT = LCT[2].toLowerCase();
							//console.log("Konvertierung=" + statGSTandUT_LCT + " - Sichtbar=" + statRise_LCT);
							// ... und den Monduntergang, bevor die Sonderfälle berechnet werden ...
							// . . . and the moonset before the special cases are calculated . . .
							LCTS = moonsetLocalTime(objDay.value, objMonth.value, objYear.value, 
																		objDST.value, objTZ.value, objLongitude.value, objLatitude.value);
							// ... in Index 1 ist der Status der Konvertierung von GST nach UT. Werte sind "Warnung" + "OK ...
							// --- in Index 2 ist der Status des Mondaufgangs und -Untergangs enthalten. Werte sind "OK",
							// "Nie Sichtbar" und "Immer Sichtbar" ...
							// . . . in Index 1 is the conversion status from GST to UT. Values are “Warning” + “OK . . .
							// --- Index 2 includes the status of the moon’s rise and set. Values are “OK”,
							// “Never Visible” and “Always Visible” . . .
							var statGSTandUT_LCTS = LCTS[1].toLowerCase();
							var statSet_LCTS = LCTS[2].toLowerCase();
							//console.log("Konvertierung=" + statGSTandUT_LCTS + " - Sichtbar=" + statSet_LCTS);
							// ... nun das Julianisches Datum des Mondaufgangs ermitteln ...
							// . . . now determine the Julian date of moonrise . . .
							var jdMoonRise = calcJD(LCT[3], LCT[4], LCT[5], LCT[0], 0, 0, 0, 0, 0);
							// ... nun das Julianisches Datum des Monduntergangs in Greenwich ermitteln ...
							// . . . now determine the Julian date of the moonset in Greenwich . . .
							var jdMoonSet = calcJD(LCTS[3], LCTS[4], LCTS[5], LCTS[0], 0, 0, 0, 0, 0);
							// Teste das Auf- und Untergangsdatum auf Plausibilität.
							// 
							// Wenn die Untergangszeit kleiner ist als die Aufgangszeit und der Tag und Monat derselbe ist,
							// dann muss der Untergang am nachsten Tag liegen.
							// Dies geschieht nur in bestimmten Fällen. Dann das julian. Datum des Untergangs um 1 Tag erhöhen,
							// damit auch der Höchstand richtig berechnet werden kann und den Tag des Untergangs um 1 erhöhen ...
							//
							// If the time of sinking is less than the time of rising and the day and month are the same,
							// then the sinking must be the next day.
							// This only happens in certain cases. Then the Julian. increase the date of sowing by 1 day,
							// so that the height can be calculated correctly and increase the day of the sinking by 1 . .
							if  ((jdMoonRise > jdMoonSet ) ){
									// ... JD des Untergangs + 1 Tag - Add 1 day to JD
									jdMoonSet  += 1;
									// ... und wieder in datum konvertieren und richtig Speichern in Datumsfeldern des Untergangs ...
									// . . . and convert back to datum and save correctly in date fields of the loss . . .
									var arrNewMoonSet = julianDate2Date(jdMoonSet);
									// Tag - Day
									LCTS[3] = Math.floor(arrNewMoonSet[0]);
									// Monat - Month
									LCTS[4] = arrNewMoonSet[1];
									// Jahr - Year
									LCTS[5] = arrNewMoonSet[2];
							}
							// ... im Array LCT[0] steht der Zeitpunkt des Mondaufgangs als String Dezimalwert, diesen
							// in einen String mit dem Format hh:mm:ss.ms konvertieren und Ausgeben, wenn die Konvertierung
							// von GST nach UT OK ist ...
							// ... im Array LCT[ 3 - 5] steht Tag, Monat und Jahr des Mondaufgangs ...
							//
							// . . . the array LCT[0] contains the time of moonrise as a string decimal value, convert this 
							// into a string with the format hh:mm:ss. ms and output . . . 
							// . . . the array LCT[ 3 - 5] contains day, month and year of moonrise
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									 ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statRise_LCT == "ok")
									objTimeMoonRise.value = LCT[3] + "." + LCT[4] + "." + LCT[5] + "  "  +  dectime2Time(Number(LCT[0]), "string");
								else if  ( statRise_LCT == "nie sichtbar")
									objTimeMoonRise.value = "Nie Sichtbar";
								else if (statRise_LCT == "immer sichtbar")
									objTimeMoonRise.value = "Immer Sichtbar";
							}
							// ... im Array LCT[1] = Sternzeitkonvertierung GST2UT + LCT[2] = Sichtbarkeit steht der 
							// Status der Berechnung des Mondaufgangs ...
							// . . . in the array LCT[1] = sidereal time conversion GST2UT + LCT[2] = visibility stands the 
							// status of the calculation of the moonrise . . .
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statRise_LCT == "ok")
									objStateMoonRise.value =  LCT[1] + " : " + LCT[2];
								else if  ( statRise_LCT == "nie sichtbar")
									objStateMoonRise.value = "Nie Sichtbar";
								else if (statRise_LCT == "immer sichtbar")
									objStateMoonRise.value = "Immer Sichtbar";
							}

							// Berechnung des Azimuts in dezimalen Grad für den Aufgang ...
							// Calculation of the azimuth in decimal degrees for the rise . . .
							var moonRiseAzDec = moonRiseAz(objDay.value, objMonth.value, objYear.value, 
																					  objDST.value, objTZ.value, objLongitude.value, objLatitude.value);
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")  ||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statRise_LCT == "ok"){
									objMoonRiseAz.value = moonRiseAzDec[0];
									objMoonRiseH.value = moonRiseAzDec[1];
								}
								else if  ( statRise_LCT == "nie sichtbar"){
									objMoonRiseH.value  = "Nie Sichtbar";
									objMoonRiseAz.value = "Nie Sichtbar";
								}else if (statRise_LCT == "immer sichtbar"){
									objMoonRiseH.value  = "Immer Sichtbar";
									objMoonRiseAz.value = "Immer Sichtbar";
								}
							}
							//
							// **********************************  Monduntergang / Moon set  ********************************************
							//
							// ... im Array LCT[0] steht der Zeitpunkt des Monduntergangs als String Dezimalwert, diesen
							// in einen String mit dem Format hh:mm:ss.ms konvertieren und Ausgeben, wenn die Konvertierung
							// von GST nach UT OK ist ...
							// ... im Array LCT[ 3 - 5] steht Tag, Monat und Jahr des Monduntergangs ...
							//
							// . . . in the array LCT[0] the time of the moonset is set as a string decimal value,
							// convert to a string with the format hh:mm:ss. ms and output . . .
							// . . . in the array LCT[ 3 – 5] there is day, month and year of the moonset . . .
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statSet_LCTS == "ok"){
									objTimeMoonSet.value = LCTS[3] + "." + LCTS[4] + "." + LCTS[5] + "  "  +  dectime2Time(Number(LCTS[0]), "string");
								}else if  ( statSet_LCTS == "nie sichtbar"){
									objTimeMoonSet.value = "Nie Sichtbar";
								}else if (statSet_LCTS == "immer sichtbar"){
									objTimeMoonSet.value = "Immer Sichtbar";
								}
							}
							//console.log(objTimeMoonSet.value);
							// ... im Array LCT[1] = Sternzeitkonvertierung GST2UT + LCT[2] = Sichtbarkeit steht der 
							// Status der Berechnung des Monduntergangs ...
							// . . . in the array LCT[1] = sidereal time conversion GST2UT + LCT[2] = visibility stands the 
							// status of the calculation of the moonset . . .
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statSet_LCTS == "ok"){
									objStateMoonSet.value =  LCTS[1] + " : " + LCTS[2];
								}else if  ( statSet_LCTS == "nie sichtbar" ){
									objStateMoonSet.value = "Nie Sichtbar";
								}else if (statSet_LCTS == "immer sichtbar" ){
									objStateMoonSet.value = "Immer Sichtbar";
								}
							}
							// Berechnung des Azimuts in dezimalen Grad für den Untergang ...
							// Calculation of the azimuth in decimal degrees for the set . . .
							var moonSetAzDec = moonSetAz(objDay.value, objMonth.value, objYear.value, 
																					  objDST.value, objTZ.value, objLongitude.value, objLatitude.value);
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statSet_LCTS == "ok"){
									objMoonSetAz.value = moonSetAzDec[0];
									objMoonSetH.value =  moonSetAzDec[1];
								}
								else if  ( statSet_LCTS == "nie sichtbar"){
									objMoonSetH.value  = "Nie Sichtbar";
									objMoonSetAz.value = "Nie Sichtbar";
								}else if (statSet_LCTS == "immer sichtbar"){
									objMoonSetH.value  = "Immer Sichtbar";
									objMoonSetAz.value = "Immer Sichtbar";
								}
							}

							//
							// **********************************  Mondhöchststand / Moon highest point  ********************************************
							//
							// ... danach die Differenz zwischen dem JD von Set und Rise ...
							// . . . then the difference between the JD of Set and Rise . . .
							var jdMoonRiseSetDiff = (jdMoonSet - jdMoonRise);
							// ... die Differnez / 2 ergibt das JD des Mondstandes am höchsten Punkt, genau
							// in der Mitte der Sichtbarkeit ...
							// . . . the Differnez / 2 gives the JD of the moon's position at the highest point, exactly 
							// in the middle of the visibility . . .
							var jdMoonRiseSetHalf = jdMoonRiseSetDiff / 2 ;
							// ... und das JD des Mondaufgangs + die Hälfte ergibt das JD der Mitte der Sichtbarkeit
							// am höchsten Punkt des Mondes am Himmel ...
							// . . . and the JD of moonrise + half gives the JD of the center of visibility 
							// at the highest point of the moon in the sky . . .
							var jdMoonRiseSetHalfDate = jdMoonRise + jdMoonRiseSetHalf ;
							// ... dann aus dem JD des höchsten Punkts am Himmel wieder ein Datum berechnen ...
							// . . . then calculate a date again from the JD of the highest point in the sky . . .
							var arrjdMoonRiseSetHalfDate = julianDate2Date(jdMoonRiseSetHalfDate);
							// Ausgabe des Datums und Uhrzeit im Zenith, wenn der Status der Konvertierung von
							// GST zu UT beim Auf- und Untergang OK ist ... 
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statSet_LCTS == "ok"){
									objMoonHighDate.value = Math.floor(arrjdMoonRiseSetHalfDate[0]) + "." + arrjdMoonRiseSetHalfDate[1] + "." + arrjdMoonRiseSetHalfDate[2] +
																									" " +  percentageOfDecimal2Time((arrjdMoonRiseSetHalfDate[0] - Math.floor(arrjdMoonRiseSetHalfDate[0])), "string");
								}else if  ( statSet_LCTS == "nie sichtbar" ){
									objMoonHighDate.value  = "Nie Sichtbar";
								}else if (statSet_LCTS == "immer sichtbar" ){
									objMoonHighDate.value  = "Immer Sichtbar";
								}
							}
							// Berechnung des Azimuths beim Höchststand (Apogee) in der Mitte des sichtbaren Bogens.
							// Calculation of the azimuth at the peak (apogee) in the middle of the visible arc.
							if ( (statGSTandUT_LCT == "ok") &&  (statGSTandUT_LCTS == "ok")||
									  ((statGSTandUT_LCT == "warnung")||  (statGSTandUT_LCTS == "warnung")  )){
								if ( statSet_LCTS == "ok"){
									objMoonHighAz.value = (Number(objMoonRiseAz.value ) + ((Number(objMoonSetAz.value) -  Number(objMoonRiseAz.value)) / 2 ));
								}else if  ( statSet_LCTS == "nie sichtbar" ){
									objMoonHighAz.value  = "Nie Sichtbar";
								}else if (statSet_LCTS == "immer sichtbar" ){
									objMoonHighAz.value  = "Immer Sichtbar";
								}
							}	
							// Das Datum des Mondhöchststandes als Array, um die neue äquatoriale Mondposition berechnen zu können ...
							// The date of the moon,s highest position as an array to calculate the new equatorial position of the moon . . .
							var arrMoonHighDate = percentageOfDecimal2Time((arrjdMoonRiseSetHalfDate[0] - Math.floor(arrjdMoonRiseSetHalfDate[0])), "array");							
							// Berechne die äquatoriale Position des Mondhöchststandes
							// calculate the equatorial position of the moons highest position
							var newPos = precMoonPos(arrMoonHighDate[0], arrMoonHighDate[1], arrMoonHighDate[2],	arrMoonHighDate[3],
																				arrjdMoonRiseSetHalfDate[0], arrjdMoonRiseSetHalfDate[1], arrjdMoonRiseSetHalfDate[2], 
																				objDST.value, objTZ.value);
							// Grösste Höhe des Mondes über dem Horizont ausgeben ...
							// Output of the highest altitude of the Moon above the horizon . . .
							objMoonHighDeg.value = convertEquatorial2Horizontal(newPos[0],  newPos[1], objLatitude.value)[1];
							
							// Berechnung des Abstands des Mondes von der Erde hier um 00:00:00.000 Uhr des Tages
							// Calculation of the distance of the moon from earth here at 00:00:00. 000 o'clock of the day
							objMoonDistance.value = moonDistance(0, 0, 0, objDST.value, objTZ.value, objDay.value, objMonth.value, objYear.value);
							
							// Berechnung des Abstands des Mondes von der Erde hier um 00:00:00.000 Uhr des Tages
							// Calculation of the distance of the moon from earth here at 00:00:00. 000 o'clock of the day
							objMoonDiameter.value = moonDiameter(0, 0, 0, objDST.value, objTZ.value, objDay.value, objMonth.value, objYear.value);
							
						// ... und wenn schon berechnet gebe Meldung aus, dass es nicht nötig ist.
						// . . . and if already calculated, give a message that it is not necessary.
						}else
						alert("Die Daten für den Tag: " + objDay.value + "." + objMonth.value + "." + objYear.value + " wurden schon berechnet.\nEine Neuberechnung ist nicht nötig!");

					}// End of start()

				}); // Ende alles geladen - End of all things loaded
				
			}); // Ende DOM geladen - End of DOM loaded
			

		</script>
		
	</head>
	
	<body id="b">
	
		<table border="0">
		
			<tr>
				<th id="label" colspan="8">
					<center>Mond Auf- und Untergang</center>
				</th>
			</tr>
			<tr>
				<td colspan="8">
					 
				</td>
			</tr>
			<tr>
				<td id="label">
						Tag:
				</td>
				
				<td id="value">
					<input id="day" type="text" maxlength="2" value="1"></input>
				</td>

				<td id="label">
					Monat:
				</td>
				
				<td id="value">
						<input id="month" type="text" maxlength="2" value="9"></input>
				</td>

				<td id="label">
					Jahr:
				</td>
				
				<td id="value">
					<input id="year" type="text" maxlength="4" value="2003"></input>
				</td>

				<td id="label" title="Ernittelt automatisch, ob das Jahr ein Schaltjahr ist">
					Schaltjahr:
				</td>
				
				<td id="value">
					<input id="leapyear" title="Ernittelt automatisch, ob das Jahr ein Schaltjahr ist" type="text" value="" disabled="disabled"></input>
				</td>

			</tr>
			
			<tr>
			
				<td id="label">
					<label title="Daylight Saving Time (Sommerzeit = 1 / Winterzeit = 0)">DST:</label>
				</td>
				
				<td  id="value">
					<input title="Daylight Saving Time (Sommerzeit = 1 / Winterzeit = 0)" id="dst" type="text" maxlength="1" value="0" ></input>
				</td>
				
				<td id="label">
					<label title="Timezone (Westlich -, Östlich +)">TZ:</label>
				</td>
				
				<td  id="value">
					<input title="Timezone (Westlich -, Östlich +)" id="tz" type="text" maxlength="3" value="0" ></input>
				</td>
			
				<td id="label">
					<label title="Der aktuelle Längengrad (Östlich +, Westlich -), an dem man gerade steht">λ<sub>[°]</sub>:</label>
				</td>
				
				<td id="value">
					<input title="Der aktuelle Längengrad (Östlich +, Westlich -), an dem man gerade steht" id="longitude" type="text" value="7.2225" ></input>
				</td>
				
				<td id="label">
					<label title="Der aktuelle Breitengrad (Nördlich +, Südlich -), an dem man gerade steht">β<sub>[°]</sub>:</label>
				</td>
				
				<td id="value">
					<input  title="Der aktuelle Breitengrad (Nördlich +, Südlich -), an dem man gerade steht" id="latitude" type="text" value="51.45" ></input>
				</td>

			</tr>
			
			<tr>
				<td colspan="8">
					 
				</td>
			</tr>
			<tr>
				<td colspan="8">
					<center><input id="calc" class="calc" type="button" value="Berechnen"></input></center>
				</td>
			</tr>
			
			<tr>
				<td colspan="8">
					 
				</td>
			</tr>
			
			<tr>
				<td id="label" colspan="8">
					<center>Mond Auf- und Untergang nach Peter Duffett-Smith und Jonathan Zwart - Practical Astronomy with your Calculator and Spreadsheet</center>
				</td>
			</tr>
			
			<tr>
				<td colspan="8">
					 
				</td>
			</tr>

			<tr>
			
				<td id="label">
					<label title="Datum und lokale Uhrzeit des Mondaufgangs am Längengrad des Standorts">Rise:<sub>[Datum]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Datum und lokale Uhrzeit des Mondaufgangs am Längengrad des Standorts" id="timemoonrise" type="text" value="0.0" disabled="disabled" ></input>
				</td>
			
				<td id="label">
					<label title="Status des Mondaufgangs: OK:OK besagt das Sternzeitkonvertierung und Mondaufgang OK sind.">Status:</label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Status des Mondaufgangs: 'OK:OK' besagt das Greenwich Sternzeitkonvertierung zu UT OK : Mondaufgang OK sind." id="statemoonrise" type="text" value="X : Y" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Datum und lokale Uhrzeit des Monduntergangs am Längengrad des Standorts">Set:<sub>[Datum]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Datum und lokale Uhrzeit des Monduntergangs am Längengrad des Standorts" id="timemoonset" type="text" value="0.0" disabled="disabled" ></input>
				</td>
			
				<td id="label">
					<label title="Status des Monduntergangs: OK:OK besagt das Sternzeitkonvertierung und Monduntergang OK sind.">Status:</label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Status des Monduntergangs: 'OK:OK' besagt das Greenwich Sternzeitkonvertierung zu UT OK : Monduntergang OK sind." id="statemoonset" type="text" value="X : Y" disabled="disabled" ></input>
				</td>
				
			</tr>
		
			<tr>
			
				<td id="label">
					<label title="Azimuth des Mondaufgangs">Azimuth:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Azimuth des Mondaufgangs" id="moonriseaz" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Höhe des Mondes über dem Horizont beim Aufgang">Höhe:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Höhe des Mondes über dem Horizont beim Aufgang" id="moonriseh" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Azimuth des Monduntergangs">Azimuth:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Azimuth des Monduntergangs" id="moonsetaz" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Höhe des Mondes über dem Horizont beim Untergang">Höhe:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Höhe des Mondes über dem Horizont beim Untergang" id="moonseth" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
			</tr>
			
			<tr>
			
				<td id="label">
					<label title="Azimuth Mond Höchststand">Azimuth:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Azimuth Mond Höchststand" id="moonhighaz" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Datum und lokale Uhrzeit des Mond Höchstands am Längengrad des Standorts">Höchst:<sub>[Datum]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Datum und lokale Uhrzeit des Mond Höchstands am Längengrad des Standorts" id="moonhighdate" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Die Höhe des Mondes über dem Horizont">Höhe:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Die Höhe des Mondes über dem Horizont" id="moonhighdeg" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
			</tr>
			
			<tr>
			
				<td id="label">
					<label title="Abstand des Mondes von der Erde um 00:00:00.000 Uhr des Tages">Abstand:<sub>[Km]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Abstand des Mondes von der Erde um 00:00:00.000 Uhr des Tages" id="moondistance" type="text" value="0.0" disabled="disabled" ></input>
				</td>
				
				<td id="label">
					<label title="Winkeldurchmesser des Mondes in Grad">Durchm.:<sub>[Grad]</sub></label>
				</td>
				
				<td  id="value">
					<input class="color"  title="Winkeldurchmesser des Mondes in Grad" id="moondiameter" type="text" value="0.0" disabled="disabled" ></input>
				</td>
			
			</tr>
		
		</table>

	</body>

</html>