// Variable

var GradinRAD = Math.PI/180;
var RADinGrad = 180/Math.PI;
var StundeninRAD = Math.PI/12;
var RADinStunden = 12/Math.PI;
var VK=360;
var HK=180;


var Monatsname=new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");


function ReduktionVK(N,F) {
// Reduktion Vollkreis
// Faktor F: 1 für RAD, 360 für Grad und 24 für Stunden
// Ein- und Ausgabe: Maßeinheit entsprechend F
if (F==1) var x=2*Math.PI
if (F==360) var x=F
if (F==24) var x=F
var Vorz=1; if (N<0) Vorz=-1
var N=Math.abs(N)/x;
N=(N-Math.floor(N)); if (N<0) N=N+1
return (Vorz*N*x);
} 



function ZZMMSSs(N,Basis,E1,E2,E3) { with (Math) {
// ZZMMSSs(n,24,"h","m","s")
// N im Bereich -1 ... +1
var f=60;
var vorz=" "; if (N<0) vorz="-" 
var n=abs(10*N)*Basis*f*f+0.5;
var h=floor(0.1*n/(f*f));
var m=floor(0.1*n/f-h*f);
var x=0.1*n-h*f*f-m*f; 
var s=floor(10*x)/10;
if (m<10) m="0"+m
if (x-floor(x)<0.1)  s=s+".0" 
if (s<10) s="0"+s
if (E1=="h")  { E1="<sup>h</sup>"; E2="<sup>m</sup>";  E3="<sup>s</sup>"; } 
return vorz+h+E1+m+E2+s+E3;
}}


function ZZMMm(N,Basis,E1,E2) { with (Math) {
// ZZMMm(n,24,"h","m")
// N im Bereich -1 ... +1
var f=60;
var vorz=" "; if (N<0) vorz="-" 
var n=abs(N)*Basis*f*f+3.5;
var h=floor(n/(f*f));
var x=n/f-h*f;
var m=floor(10*x)/10;
if (x-floor(x)<0.1) m=m+".0"
if (m<10) m="0"+m
if (E1=="h")  { E1="<sup>h</sup>"; E2="<sup>m</sup>"; } 
return vorz+h+E1+m+E2;
}}



function ZZMM(N,Basis,E1,E2) { with (Math) {
// ZZMM(n,24,"h","m")
// N im Bereich -1 ... +1
var f=60;
var vorz=" "; if (N<0) vorz="-" 
var n=abs(N)*Basis*f*f+30.5;
var h=floor(n/(f*f));
var m=floor(n/f-h*f); if (m<10) m="0"+m
if (E1=="h")  { E1="<sup>h</sup>"; E2="<sup>m</sup>"; } 
return vorz+h+E1+m+E2;
}}


function ZZMMSS(N,Basis,E1,E2,E3) { with (Math) {
// ZZMMSS(n,24,"h","m",'s')
// N im Bereich -1 ... +1
var f=60;
var vorz=" "; if (N<0) vorz="-" 
var n=abs(N)*Basis*f*f+0.5;
var h=floor(n/(f*f));
var m=floor(n/f-h*f); if (m<10) m="0"+m
var s=floor(n%f); if (s<10) s="0"+s
if (E1=="h")  { E1="<sup>h</sup>"; E2="<sup>m</sup>";  E3="<sup>s</sup>"; } 
return vorz+h+E1+m+E2+s+E3;
}}



function JD2000(Jahr,Monat,Tag,Stunde) {
// JD=k[0], d=k[1], T=k[2]
with (Math) {
var k = new Array();
var j=Jahr; var m=Monat; if (m<=2) {j--; m=m+12}
var B=floor(j/400)-floor(j/100); if (Jahr<=1582 && Monat<=10 && Tag<=4) B=-2;
k[0] =floor(365.25*j)+floor(30.6001*(m+1))+B+1720996.5+Tag + Stunde/24;
k[1] = k[0]-2451545;
k[2] = k[1]/36525;
}
return k;
}


function Wochentag(JD) {
// Zähler=w[0] Montag=1, Dienstag=2 ..., Wochentag=w[1], Wochentagkürzel=w[2]
var wk=new Array("Mo","Di","Mi","Do","Fr","Sa","So");
var wl=new Array("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Sonnabend","Sonntag");
w=new Array();
x=Math.floor(JD+0.5);
y=JD-7*Math.floor(JD/7)+1;
w[0]=y;
w[1]=wl[y-1];
w[2]=wk[y-1];
return w;
}


function Monatslaenge(DieserMonat) {
var Start = 1;
var Stop = 31;
if(DieserMonat==4 ||DieserMonat==6 || DieserMonat==9 || DieserMonat==11 ) --Stop;
if(DieserMonat==2)
{
Stop = Stop - 3;
if(DiesesJahr%4==0) Stop++;
if(DiesesJahr%100==0) Stop--;
if(DiesesJahr%400==0) Stop++;
}
return Stop;
}


function mittlereSternzeit(JD,UT,GeografischeLaenge) {
// Sternzeit und UT in Stunden mit Dezimale, GeografischeLaenge in Grad, östlich negativ
// Sternzeit o UT in Greenwich =z[0]; lokal=z[1]
with (Math) {
var z=new Array();
var SZ0=6.656306 + 0.0657098242*(JD-2445700.5);
z[0] = ReduktionVK(SZ0,24);
var SZ = z[0] + 1.0027379093 * UT - GeografischeLaenge/15;
z[1] = ReduktionVK(SZ,24);
}
return z;
}











