var Tage_pro_Monat = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
var globalday, globalmonth, globalyear;

//
function current_month(month) {
	if (month < 10)
		month = "0" + month
	return month;
}

//
function current_year(year, dat) {
  var nowYear = String(dat.getYear()+10);
  if (year.length==2) {
	if ( year < nowYear.slice(2,4) )
      year="20"+year;
	else
      year="19"+year;
  }
  return year;
}

//
function changeDD(wert,day1,year1) {

  var TgAnno = 365;
  var l_ddd  = day1;
  var l_jahr = year1;

  if (l_jahr == 1582)
     TgAnno = 355;

  l_ddd = l_ddd + wert;

  if (l_ddd < 1) {
     l_jahr = l_jahr - 1;
     if (l_jahr == 1582)
        TgAnno = 355;
     l_ddd = TgAnno + ist_Schaltjahr(l_jahr);
  }

  if (l_ddd > (TgAnno + ist_Schaltjahr(l_jahr))) {
     l_jahr = l_jahr + 1;
     l_ddd = l_ddd - TgAnno;
  }

  if (l_jahr > 0) {
     day1 = l_ddd;
     year1 = l_jahr;
     days2date(day1,year1);
  } 
}

//
function ist_Schaltjahr(jahr) {
   if (jahr % 4 == 0)
      if (jahr < 1582)
         return 1;
      else if (!(jahr % 100 == 0))
              return 1;
           else if (jahr % 400 == 0)
                   return 1;
   return 0;
}

//
function Tag_des_Jahres(tag,monat,jahr) {
   var Tage = 0;

   /* Februar hat im Schaltjahr 29 Tage      */
   Tage_pro_Monat[1] = 28 + ist_Schaltjahr(jahr);
   if (tag <= Tage_pro_Monat[monat-1]) {
      for (var i=0; i<monat-1; i++)
          Tage = Tage + Tage_pro_Monat[i];
      Tage = Tage + tag;
   }

   /* Bei Kalenderreform 10 Tage weggefallen */
   if ((jahr==1582) && (monat >= 10) && (tag>=15))
      Tage = Tage - 10;
   return Tage;
}

//
function days2date(day2,year2) {
  var i      = 0;
  var l_dd   = 0;
  var jul_dd = 0;
  var l_mm   = 0;
  var l_ddd  = day2;
  var l_jahr = year2;

  if (l_jahr > 0) {
     Tage_pro_Monat[1] = 28 + ist_Schaltjahr(l_jahr);

     /* In 1582 die fehlenden 10 Tage unterdruecken. */
     if (l_jahr == 1582)
        if (l_ddd > 277)
           l_ddd = l_ddd + 10;

     if (l_ddd < (366+ist_Schaltjahr(l_jahr))) {
       self.status = "";
       while (l_ddd > 0) {
             l_ddd = l_ddd - Tage_pro_Monat[i];
             i++;
       }
       l_mm = i;
       l_dd = Tage_pro_Monat[i-1] + l_ddd;
       if (l_ddd > 0)
          l_dd = l_dd + 1;

       jul_dd = JulianDayNumber(l_dd,l_mm,l_jahr);

	  globalday   = l_dd ;
	  globalmonth = l_mm ;
	  globalyear  = l_jahr ;	  
     } 
  } 
}

//
function JulianDayNumber(tag,monat,jahr) {
   var MJDN = 0; /* Modified Julian Day Number */
   var B    = 0;

   if (is_greg_Date(tag,monat,jahr))
      B = Math.floor(jahr/400) - Math.floor(jahr/100) + Math.floor(jahr/4);
   else
      B = Math.floor((jahr+4716)/4) - 1181;

   if (monat <= 2) {
      B = B - ist_Schaltjahr(jahr);
      jahr  = jahr - 1;
      monat = monat + 13;
   }
   else monat = monat + 1;

   MJDN = (365*jahr) - 679004 + B + Math.floor(30.6*monat) + tag;

   return (MJDN + 2400001);
}


//
function is_greg_Date(dd,mm,jjjj) {
   if (jjjj > 1582)
      return 1;
   else if (jjjj == 1582)
           if (mm > 10)
              return 1;
           else if (mm == 10)
                   if (dd >= 15)
                      return 1;
                   else return 0;
                else return 0;
         else return 0;
}

