var haabArr = ["Pop","Uo","Zip","Zotz'","Zek","Xul","Yaxkin","Mol","Ch'en","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumcu","Uayeb"];
var tzolArr =
["Imix","Ik'","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etz'nab","Cauac","Ahau"]

function nrDays(j,m,t) {
  return Date.UTC(j,m,t,0,0,0,0)/(24*60*60*1000);
};

function maya2jd() {
var t0 = 2456283; // der 21.12.2012 in JD (Thompson-Berechnung als Standard)
if (document.maya.mayaMeth.selectedIndex == 1) {t0 = 2456285}; // der 23.12.2012 in JD  (nach Lounsbury)

  var t = 1*document.maya.kin.value + 20*document.maya.uinal.value + 20*18* document.maya.tun.value + 20*18*20* document.maya.katun.value + 20*18*20*20* document.maya.baktun.value + 20*20*18*20*20* document.maya.pictun.value ;
document.julius.nummer.value = t0 - 20*18*20*20*13 + t;
}

function calcMaya(){
// ben&ouml;tigt julianische Tagesz&auml;hlung

var t0 = 2456283; // der 21.12.2012 in JD (Thompson-Berechnung als Standard)
if (document.maya.mayaMeth.selectedIndex == 1) {t0 = 2456285}; // der 23.12.2012 in JD  (nach Lounsbury)

var t1 = document.julius.nummer.value;
var dt = t1-t0;

  // Tzolkin
  var tn = ((dt+4) % 13);
  if (tn<=0) {tn=13+tn};
  var t = ((dt+19) % 20);
  if (t<0) {t=20+t};
  var tz = tn + " " + tzolArr[t];
  t++;
  document.imagetzolkinNr.src="z"+tn+".gif";
  document.imagetzolkin.src="k"+t+".gif";
  document.maya.tzolkinNr.value = tz;


  // Haab
  var t = (dt+263) % 365;
  if (t<0) {t = 365 + t};
  var tn = t%20;
  t = Math.floor(t/20)
  var ha = tn + " " + haabArr[t];
  t++;
  document.imagehaabNr.src="z"+tn+".gif";
  document.imagehaab.src="h"+t+".gif";
  document.maya.haabNr.value = ha;

  // Long Count
  t = 13*20*20*18*20 + dt;
  tt = Math.floor (t /(20*20*20*18*20));
  t = t - (tt*20*20*20*18*20);

  var pictun = tt;
  document.maya.pictun.value = tt;

  tt = Math.floor (t /(20*20*18*20));
  t = t - (tt*20*20*18*20);
  document.maya.baktun.value = tt;
  tt = Math.floor (t /(20*18*20));
  t = t - (tt*20*18*20);
  document.maya.katun.value = tt;
  tt = Math.floor (t /(18*20));
  t = t - (tt*18*20);
  document.maya.tun.value = tt;
  tt = Math.floor (t /20);
  t = t - (tt*20);
  document.maya.uinal.value = tt;
  document.maya.kin.value = t;
}

function setWochentag(){
var s;
var t = document.julius.nummer.value % 7;
switch (t) {
  case 6 : s = "Sonntag"; break;
  case 0 : s = "Montag"; break;
  case 1 : s = "Dienstag"; break;
  case 2 : s = "Mittwoch"; break;
  case 3 : s = "Donnerstag"; break;
  case 4 : s = "Freitag"; break;
  case 5 : s = "Samstag"; break;
  }
document.wochentag.wochentag.value = s;
}

function getOstern() {
// verwendet gregor. Jahr
//Algorithmus von Oudin - funktioniert aber nicht richtig
var y = document.gregor.jahr.value;
var c = Math.floor(y/100);
var n = y % 19;
var k = Math.floor((c-17)/25);
var i = (c - Math.floor(c/4) - Math.floor((c-k)/3) + 19*n + 15) % 30;
i = i - Math.floor(i/28)*(1-Math.floor(i/28)*Math.floor(29/(i+1)) * Math.floor((21-n)/11));
var j = (y + Math.floor(y/4) + i + 2 - c + Math.floor(c/4)) % 7;
var l = i - j;
var m = 3 + Math.floor((l+40)/44);
var d = l + 28 - 31*Math.floor(m/4);
alert(d+"--"+m);
}

function gregor2jd(){
var j = 0; var k= 1;
if (document.gregor.ad[0].checked) {j=1; k=-1};
j = j + document.gregor.jahr.value*k + 6000;
document.julius.nummer.value = 2451545 - nrDays(8000,0,1) + nrDays(j , document.gregor.monat.selectedIndex, document.gregor.tag.value);
}

function jd2gregor(){
var tt = document.julius.nummer.value - 2451545 + nrDays(8000,0,1);
var d = new Date(tt*24*60*60*1000);
document.gregor.monat.selectedIndex = d.getMonth();
document.gregor.tag.value = d.getDate();
var j = d.getFullYear();
j = j - 6000;
if (j<=0) {
  document.gregor.jahr.value = -1*(j-1);
  document.gregor.ad[0].checked = true;
  }
else {
  document.gregor.jahr.value = j;
  document.gregor.ad[1].checked = true;
}
}


function jd2julius ()
{
var o = 32083;
var t5m = 153;
var d4j= 1461;

var year, month, day, ttt, dayOfYear;
var sdn = 1*document.julius.nummer.value;
    ttt = (sdn + o) * 4 - 1;
    year = Math.floor(ttt / d4j);
    dayOfYear = Math.floor((ttt % d4j) / 4) + 1;

    ttt = dayOfYear * 5 - 3;
    month = Math.floor(ttt/ t5m );
    day = Math.floor((ttt% t5m ) / 5 + 1);

    if (month < 10) {month += 3}
    else {year += 1; month -= 9}

    year = year - 4800;
    if (year <= 0) {
      year--;
      year = year * -1;
      document.julkal.ad[0].checked=true;
    }
    else document.julkal.ad[1].checked=true;

    document.julkal.jahr.value  = year;
    document.julkal.monat.selectedIndex = month-1;
    document.julkal.tag.value  = day;
}

function julius2jd () {
    var o = 32083;
    var t5m = 153;
    var t4j= 1461;
    var j = 1*document.julkal.jahr.value;
    if (document.julkal.ad[0].checked) {j=j*-1};
    var m = 1*document.julkal.monat.selectedIndex+1;
    var t = 1*document.julkal.tag.value;
    var year, month;

//    if (j == 0 || j < -4713 || m <= 0 || m > 12 || t <= 0 || t > 31)
//    {alert("Keine korrekte Eingabe!");};

//    if (j == -4713) {
//	if (m == 1 && t == 1) {alert("1.1.4713 v.Chr gilt nicht")}}

    if (j < 0) {year = j + 4801}
    else {year = j + 4800}

    if (m > 2) {month = m - 3;}
    else {month = m + 9; year--}

    document.julius.nummer.value = Math.floor((year * t4j) / 4)
	    + Math.floor((month * t5m + 2) / 5) + t - o;
}





function calcAll(n) {
switch (n) {
  case 0 : jd2gregor(); break;
  case 1 : gregor2jd(); break;
  case 2 : julius2jd(); break;
  case 5 : maya2jd(); break;
}
if ((document.julius.nummer.value<0)||(document.julius.nummer.value>5373484)){alert("Ung&uuml;ltiges Datum eingegeben! Der Kalenderrechner wird auf den heutigen Tag zur&uuml;ckgesetzt.");
   iniDate()}
else
  {
  jd2gregor();
  setWochentag();
  jd2julius();
  calcMaya();
  }
}

function iniDate() {
var heute = new Date();
var j = heute.getFullYear();
var m = heute.getMonth();
var t = heute.getDate();
document.gregor.tag.value=t;
document.gregor.monat[m].selected=true;
document.gregor.jahr.value=j;
document.gregor.ad[0].checked=false;
document.gregor.ad[1].checked=true;
calcAll(1);
};
