function Ortsdaten(x)
{
   x = x.split('&');        // Zerlegen des Ortseigenschaftsstrings
   var f=document.Sonne ;   // Aktivieren des Formulars
   f.Zeitzone.selectedIndex = 1*x[0]+12; // Eintragen Zeitzone
   f.Breite.value   = x[1]; // Eintragen der geografischen Breite
   f.Laenge.value   = x[2]; // Eintragen der geografischen Laenge
   Zeitberechnung();
}

function PruefenZweistellig(y)
{
  y = '' + y
  if(y.length == 1 ) {y = '0' + y}
  return y
}

function AktDateEintragen() // Eintragen des aktuellen Datums und der Zeit
{
   var              f    = document.Sonne ; // Aktivieren des Formulars
   AktDate               = new Date();      // Anlegen des ZeitObjekts
  //Eintragen Datum
   f.Tag.selectedIndex   = AktDate.getDate()-1;
   f.Monat.selectedIndex = AktDate.getMonth();
   AktTag                = PruefenZweistellig(AktDate.getDate());
   AktMonat              = PruefenZweistellig(AktDate.getMonth()+1);
   f.AktDatum.value      = AktTag + '.' + AktMonat + '.';
   AktTime();
}
function AktTime()
{
   //Eintragen Zeit
   AktStunde             = PruefenZweistellig(AktDate.getHours());
   AktMinute             = PruefenZweistellig(AktDate.getMinutes());
   //AktSekunde            = PruefenZweistellig(AktDate.getSeconds());
   document.Sonne.AktZeit.value = AktStunde + ':' + AktMinute ;
   Zeitberechnung();
   setTimeout("AktTime()",60000);    //jede min. wiederholen
}


//Pruefung der Eingabefelder

  function Eingabepruefung(Feld, Bezeichnung, min, max)
  {
  f = document.Sonne;
  WertFeld  = "f."+Feld+".value";
  FocusFeld = "f."+Feld+".focus()";
  Testwert  = eval(WertFeld);
  if (parseFloat(Testwert) != 1*Testwert)
    {alert("Der Eingabewert für " + Bezeichnung + " ist keine Zahl. \nZahlen folgen dem Schema: Vorkommastellen.Nachkommastellen. \nWeiterrechnen ist nicht möglich");
    eval(FocusFeld);}
    else
    {//Pruefung auf Bereichseinhaltung
    if (Testwert < min || Testwert > max)
       {alert ("Fuer die " + Bezeichnung + " sind nur Werte zwischen " + min + " und " + max + " zugelassen !");
       eval(FocusFeld);}
    else
       Zeitberechnung();}
  }

//Warnung bei Eingabe in Ausgabefeld
  function Ausgabewarnung()
  {
  document.Sonne.Breite.focus();
  alert("Sie haben versucht, eine Eingabe in einem Feld vorzunehmen, dass nur fuer Ausgaben vorgesehen ist ! Die Aenderung wird ueberschrieben.");
  Zeitberechnung();
  }


function Zeitberechnung()
{
   var f=document.Sonne ;   // Aktivieren des Formulars
 //Auswerten der Tagesangabe
   Monatswert       = f.Monat.options[f.Monat.options.selectedIndex].value ;
   Tageswert        = f.Tag.options[f.Tag.options.selectedIndex].value ;
   Tagesnummer      = 1*Monatswert + 1*Tageswert
   //Pruefen auf Schaltjahr
     SchaltWert     = 1 * f.Schaltjahr.checked;
     if (SchaltWert == 1 && Tagesnummer > 59)
           Tagesnummer = Tagesnummer + 1 ;
   //Pruefen auf MESZ
     MESZWert = 1 * f.MESZ.checked ;
     Zeitkorrektor =0;
     if (MESZWert == 1 && Tagesnummer > 85 && Tagesnummer < 303)
                 Zeitkorrektor = 1;
 //Berechnung der Deklination
   omega = 2*3.14159/365 ;
   N = Tagesnummer * omega ;
   Deklination = 0.789 - 23.2559*Math.cos(N+0.1582) - 0.3915*Math.cos(2*N+0.0934) - 0.1764*Math.cos(3*N+0.4539);
 //Berechnung der Zeiten in Wahrer Ortszeit
   Deklination     = Deklination*2*3.14159/360 ;
   Breitewert      = f.Breite.value ;
   Breitewert      = Breitewert*2*3.14159/360 ;
   Zeit            = (Math.sin(Deklination)*Math.sin(Breitewert)+0.010153)/(Math.cos(Deklination)*Math.cos(Breitewert));
   if (Zeit > 1)
     {alert ("Polarsommer !, einige Ausgabegroessen sind nicht definiert");
     Aufgangszeit = 0;}

   if (Zeit < -1)
     {alert ("Polarwinter !, einige Ausgabegroessen sind nicht definiert");
     Aufgangszeit = 12;}

   if (Zeit < 1 && Zeit > -1)
     Aufgangszeit    = Math.acos(Zeit)*24/(2*3.14159);

   Untergangszeit  = 24-Aufgangszeit ;
 //Korrektur des Laengengrades
   Laengewert      = f.Laenge.value ;
   DefLaenge       = 15 - 15 * (f.Zeitzone.selectedIndex -12) ;
   Aufgangszeit    = Aufgangszeit   + (DefLaenge-Laengewert)/15 ;
   Untergangszeit  = Untergangszeit + (DefLaenge-Laengewert)/15 ;
 //Korrektur der Zeitgleichung
   ZGL = 0.0132+7.3523*Math.cos(N+1.4989)+9.9359*Math.cos(2*N+1.9006)+0.3387*Math.cos(3*N+1.836) ;
   f.Aufgang.value   = ZGL ;
   Aufgangszeit      = Aufgangszeit   - ZGL/60 + Zeitkorrektor ;
   Untergangszeit    = Untergangszeit - ZGL/60 + Zeitkorrektor ;
   TagDauer          = Untergangszeit - Aufgangszeit;
   NachtDauer        = 24 - TagDauer;
 //Umformatieren, Pruefung auf Polarzone und Ausgabe
   if (Zeit < 1 && Zeit > -1)
     {f.Aufgang.value  = Zeitformat(Aufgangszeit);
     f.Untergang.value = Zeitformat(Untergangszeit);}
   else
     {f.Aufgang.value  = '';
     f.Untergang.value = '';}

   f.TagDauer.value    = Zeitformat(TagDauer);
   f.NachtDauer.value  = Zeitformat(NachtDauer);

 //Ansteuerung des Statusbildes
   AktDate = new Date();      // Anlegen des ZeitObjekts
   AktZeit = AktDate.getHours() + AktDate.getMinutes()/60;
   Bilname = "Statusbild";
   if (Zeit > 1 || (Zeit > -1 && AktZeit > Aufgangszeit && AktZeit < Untergangszeit))
     {document.images[0].src = "tag.gif"; //Tag
     document.bgColor       = "00C0FF";}
   if (Zeit < -1 || (Zeit < 1 && (AktZeit < Aufgangszeit || AktZeit > Untergangszeit)))
     {document.images[0].src = "nacht.gif"; //Nacht
      document.bgColor       = "9F9F9F";}
}
function Zeitformat(Zeit) //Umwandeln in uebliches Zeitformat
{
   Stunde = Math.floor(Zeit);
   Minute = Math.round(60*(Zeit - Stunde));
   if (Minute == 60)
      {Stunde = Stunde + 1 ; Minute = 0}
   if (Stunde < 10)
      Stunde = '0' + Stunde ;
   if (Minute < 10)
      Minute = '0' + Minute ;
   Zeit   = Stunde + ':' + Minute;
   return Zeit;
}
