function padDigits(n, totalDigits) {   n = n.toString();   var pd = '';   if (totalDigits > n.length) {      for (i = 0; i < (totalDigits - n.length); i ++) {         pd += '0';      }   }   return pd + n.toString();}function getHMSFromHr(hour) {   var minute = Math.round((hour - Math.floor(hour)) * 60.0);   // var second = (minute - Math.floor(minute)) * 60.0;   hour = Math.floor(hour);   if (minute == 60) {      minute = 0;      hour ++;      if (hour > 24) {         // should not happen         alert("Invalid date");         hour -= 24;      }   }   var h = padDigits(hour, 2);   var m = padDigits(minute, 2);   return new Array(h, m); // return new Array(h, m, s);}function getDecadeFiles(jd0, jd1) {   var date0 = getCalendarDate(jd0, "jgmonth");   var neg0 = false;   if (date0[0] <= 0) {      neg0 = true;   }   decade0 = neg0?((-1 * ((Math.floor(Math.abs(date0[0]) / 10) * 10) - 10)) + 1):((Math.floor(Math.abs(date0[0] - 1) / 10) * 10) + 1);      var date1 = getCalendarDate(jd1, "jgmonth");   var neg1 = false;   if (date1[0] <= 0) {      neg1 = true;   }   decade1 = neg1?((-1 * ((Math.floor(Math.abs(date1[0]) / 10) * 10) - 10)) + 1):((Math.floor(Math.abs(date1[0] - 1) / 10) * 10) + 1);      var i = 0;   var files = new Array();   var neg = neg0;   var cstart;      var cpref = "";   if (neg) {      cstart = -1 * decade0;      cpref="m";   }   else {      cstart = decade0;   }      files[i] = "jc" + cpref + padDigits(cstart, 4) + ".js";   // alert(files[i]);   i++;      for (decade = decade0; decade < decade1; i++) {      decade += 10;            if (decade == 1) {         neg = false;      }            cpref = "";      if (neg) {         cstart = -1 * decade;         cpref="m";      }      else {         cstart = decade;      }            files[i] = "jc" + cpref + padDigits(cstart, 4) + ".js";      // alert(files[i] + " + " + decade);   }      return files;}function getEventNumbers(more, h, m, datatype, evtNo) {   if (datatype < 131) {      more = more + " " + h + ":" + m;   }   if (datatype >= 135 && datatype <= 136) {      // Mercury or Venus elongation      var no = evtNo / 10.0; // * 10;      var extra = Math.abs(no) + "&deg;";      if (no > 0) {         extra += " E";      }      else if (no < 0) {         extra +=  " W";      }      more = more + " " + extra;   }   more = more + "</span>";   return more;}function addData(fn, p, jd0, jd1) {   dscript = document.createElement("script");   dscript.setAttribute("src", fn);   dscript.setAttribute("id", "dscript");   dscript.type = "text/javascript";   dscript.defer = true; // or false (IE is weird)   document.getElementsByTagName("head").item(0).appendChild(dscript);      function updateCalendar() {      var cdata = getData();      calendarbody = document.getElementById("calendarbody" + p);      var i;      td = document.getElementsByTagName("td");      var cdataIndex = 0;      var currentJd = jd0 + 0.0;      for (i = 0; i < td.length; i ++) {         if (td[i].parentNode.parentNode == calendarbody) {            while (cdata[cdataIndex] != null && cdata[cdataIndex][0] <= currentJd + 1.0) {               var more = "";               var icon = "";                              if (cdata[cdataIndex][1] == 131 || cdata[cdataIndex][1] == 133) {                  showWithDstWhenOn = true;               }               else if (cdata[cdataIndex][1] == 132 || cdata[cdataIndex][1] == 134) {                  showWithDstWhenOn = false;               }                              if (cdata[cdataIndex][0] >= currentJd && cdata[cdataIndex][0] < currentJd + 1.0) {                  var dtype = getDataTypes();                  var dtypeIndex;                  var atype = getAcceptedTypes(dtype);                                    switch (cdata[cdataIndex][1]) {                  case 11:                     icon = atype[11]?'<img src="../image/moonnew.png" style="width: 18px; height: 18px;" alt="New Moon" />':"";                     break;                  case 12:                     icon = atype[12]?'<img src="../image/moonfirst.png" style="width: 18px; height: 18px;" alt="First Quarter" />':"";                     break;                  case 13:                     icon = atype[13]?'<img src="../image/moonfull.png" style="width: 18px; height: 18px;" alt="Full Moon" />':"";                     break;                  case 14:                     icon = atype[14]?'<img src="../image/moonlast.png" style="width: 18px; height: 18px;" alt="Last Quarter" />':"";                     break;                  default:                     break;                  }                                    for (dtypeIndex = 0; dtypeIndex < dtype.length; dtypeIndex ++) {                     if (dtype[dtypeIndex] != null && dtype[dtypeIndex][0] == cdata[cdataIndex][1]) {                        more = more + '<br /><span style="font-size: 9px;">' + '<abbr title="' + dtype[dtypeIndex][2] + '">' + dtype[dtypeIndex][1] + "</abbr>";                     }                  }                                    /* Show Event Time */                  var boxdate;                  var dayfrac = cdata[cdataIndex][0] - currentJd;                  var hour = 24.0 * dayfrac;                  var offset = getOffset(std_time_offset, dst, currentJd);                  hour = hour + offset;                  if (hour < 0.0) {                     if (td[i-1].parentNode.parentNode == calendarbody) {                        hour += 24.0;                        var hms = getHMSFromHr(hour);                        var h = hms[0];                        var m = hms[1];                        // var s = hms[2];                        more = getEventNumbers(more, h, m, cdata[cdataIndex][1], cdata[cdataIndex][2]);                        boxdate = "";                        if (icon != "") {                           boxdate = '<span style="float: left;">' + icon + '</span>';                        }                        if (atype[cdata[cdataIndex][1]] && td[i-1].innerHTML.length <= 3) {                           boxdate = boxdate + '<span style="font-weight: bold;">' + td[i-1].innerHTML + "</span>" + '<br />';                        }                        else {                           boxdate = boxdate + td[i-1].innerHTML;                        }                        more = atype[cdata[cdataIndex][1]]?more:"";                        td[i-1].innerHTML = boxdate + more;                     }                  }                  else if (hour >= 24.0) {                     if (td[i+1].parentNode.parentNode == calendarbody) {                        hour -= 24.0;                        var hms = getHMSFromHr(hour);                        var h = hms[0];                        var m = hms[1];                        // var s = hms[2];                        more = getEventNumbers(more, h, m, cdata[cdataIndex][1], cdata[cdataIndex][2]);                        boxdate = "";                        if (icon != "") {                           boxdate = '<span style="float: left;">' + icon + '</span>';                        }                        if (atype[cdata[cdataIndex][1]] && td[i+1].innerHTML.length <= 3) {                           boxdate = boxdate + '<span style="font-weight: bold;">' + td[i+1].innerHTML + "</span>" + '<br />';                        }                        else {                           boxdate = boxdate + td[i+1].innerHTML;                        }                        more = atype[cdata[cdataIndex][1]]?more:"";                        td[i+1].innerHTML = boxdate + more;                     }                  }                  else {                     var hms = getHMSFromHr(hour);                     var h = hms[0];                     var m = hms[1];                     // var s = hms[2];                     more = getEventNumbers(more, h, m, cdata[cdataIndex][1], cdata[cdataIndex][2]);                     boxdate = "";                     if (icon != "") {                        boxdate = '<span style="float: left;">' + icon + '</span>';                     }                     if (atype[cdata[cdataIndex][1]] && td[i].innerHTML.length <= 3) {                        boxdate = boxdate + '<span style="font-weight: bold;">' + td[i].innerHTML + "</span>" + '<br />';                     }                     else {                        boxdate = boxdate + td[i].innerHTML;                     }                     more = atype[cdata[cdataIndex][1]]?more:"";                     td[i].innerHTML = boxdate + more;                  }               }               cdataIndex ++;            }                        // td[i].appendChild(document.createTextNode(jd1));            currentJd = currentJd + 1.0;            td[i].setAttribute("style","height: 110px; vertical-align: top; text-align: right;");         }      }      document.getElementsByTagName("head").item(0).removeChild(document.getElementById("dscript"));   }      dscript.onreadystatechange = function() {      if (dscript.readyState == "complete"){ updateCalendar(); }   };   dscript.onload = updateCalendar;      return;}function getOffset(std_time_offset, dst, jd) {   if (showWithDstWhenOn) {      return std_time_offset + parseFloat(dst);   }      /*   // Given JD is in UT -- convert to standard time zone   var sjd = jd + (std_time_offset / 24.0);   var date = getCalendarDate(sjd, "jgmonth");   var i;      // Daylight Saving Time (DST) rules for the USA effective 2007 and ineffective ???      // Daylight Saving Time begins at 2 a.m. on the second Sunday of March   var usDstBegin = getJulianDay(date[0], 3, 1.0 + (2.0 / 24.0));   var usDstBeginDay = getWeekday(usDstBegin);   var usDstBeginCt = 0;   i = 0;   while (usDstBeginCt < 2) {      if (i != 0) {         usDstBegin = usDstBegin + 1.0;         usDstBeginDay = getWeekday(usDstBegin);      }      if (usDstBeginDay == 0) {         usDstBeginCt ++;      }      i ++;   }   // Daylight Saving Time ends at 2 a.m. on the first Sunday of November   var usDstEnd = getJulianDay(date[0], 11, 1.0 + (1.0 / 24.0));   var usDstEndDay = getWeekday(usDstEnd);   var usDstEndCt = 0;   i = 0;   while (usDstEndCt < 1) {      if (i != 0) {         usDstEnd = usDstEnd + 1.0;         usDstEndDay = getWeekday(usDstEnd);      }      if (usDstEndDay == 0) {         usDstEndCt ++;      }      i ++;   }      // document.getElementById("dstp").innerHTML = usDstBegin+' to '+usDstEnd;      if (usDstBegin <= sjd && sjd < usDstEnd) {      return std_time_offset + parseFloat(dst);   }   */      return std_time_offset;}function allClear() {   var k;   for (k = 0; k < 12; k ++) {      document.getElementById("calendar"+k).style.display="none";      document.getElementById("tzinfo"+k).style.display="none";   }}function representAsJulianDay(darr) {   var dateformat = darr[0];   if (darr[1]) {      switch (dateformat) {      case "jd":         /* this case should not arise */         break;      case "imonth":         var y = parseInt(document.getElementById("iyear").value);         document.getElementById('jd0').value = getJulianDayFromIndian(y, 1, 1);         document.getElementById('jd1').value = getJulianDayFromIndian(y, 12, getLastDayOfIndianMonth(y, 12));         break;      case "pmonth":         var y = parseInt(document.getElementById("pyear").value);         document.getElementById('jd0').value = getJulianDayFromPersian(y, 1, 1);         document.getElementById('jd1').value = getJulianDayFromPersian(y, 12, getLastDayOfPersianMonth(y, 12));         break;      default:         /* case "jgmonth" */         var y = getJGYear(parseInt(document.getElementById('jgyear').value), (document.getElementById('jgnegative').value == 'CE'));         document.getElementById('jd0').value = getJulianDay(y, 1, 1);         document.getElementById('jd1').value = getJulianDay(y, 12, getLastDayOfMonth(y, 12));         break;      }   }   else {      switch (dateformat) {      case "jd":         /* this case should not arise */         break;      case "imonth":         var y = parseInt(document.getElementById("iyear").value);         var m = parseInt(document.getElementById("imonth").value);         document.getElementById('jd0').value = getJulianDayFromIndian(y, m, 1);         document.getElementById('jd1').value = getJulianDayFromIndian(y, m, getLastDayOfIndianMonth(y, m));         break;      case "pmonth":         var y = parseInt(document.getElementById("pyear").value);         var m = parseInt(document.getElementById("pmonth").value);         document.getElementById('jd0').value = getJulianDayFromPersian(y, m, 1);         document.getElementById('jd1').value = getJulianDayFromPersian(y, m, getLastDayOfPersianMonth(y, m));         break;      default:         /* case "jgmonth" */         var y = getJGYear(parseInt(document.getElementById('jgyear').value), (document.getElementById('jgnegative').value == 'CE'));         var m = parseInt(document.getElementById("jgmonth").value);         document.getElementById('jd0').value = getJulianDay(y, m, 1);         document.getElementById('jd1').value = getJulianDay(y, m, getLastDayOfMonth(y, m));         break;      }   }}function getJGYear(adbc, ce) {   if (ce) {      return adbc;   }   return 1 - adbc; // -1 - adbc;}function getDst() {   if (document.getElementById("dstyes").checked == true) {      return "1";   }   else {      return "0";   }}function getNewZone(soffset) {   document.getElementById("dstno").checked = true;   document.getElementById("dstyes").checked = false;      var os = parseFloat(soffset);      // Time zone offsets to show Daylight Saving Time option for   if (os >= -9.0 && os < -3) {      document.getElementById("dstp").style.display = "block";      document.getElementById("dstl").innerHTML = "Daylight Saving Time (DST)";   }   else if (os >= 0 && os <= 2) {      document.getElementById("dstp").style.display = "block";      document.getElementById("dstl").innerHTML = "Summer Time";   }   else {      document.getElementById("dstp").style.display = "none";   }      // dstButtons();   /* document.write('<input name="dst" id="dstyes" value="yes" type="radio" ' + yesDst + '/> Yes '); document.write('<input name="dst" id="dstno" value="no" type="radio" ' + noDst + '/> No'); */   /* document.write('<input type="text" onclick="this.value=std_time_offset;" />'); */   /* document.write('<input type="text" onclick="this.value=dst;" />'); */      return os;}function getWeekday(jd) {   return Math.floor((jd + 1.5) % 7.0); // can take out Math.floor to include decimal part of day}function getCalendarDate(jd, dateformat) {   if (dateformat == "jd") {      return new Array (0, 0, jd);   }      var y = 0;   var m = 0;   var day = 0.0;   if (jd > 0.0) {      var jdm = jd + 0.5;      var z = Math.floor(jdm);      var f = jdm - z;            switch (dateformat) {      case "imonth":         var jdmp = Math.floor(jd) + 0.5;         var gregorian = getCalendarDate(jd, "jgmonth");         var leapyr = getLastDayOfMonth(gregorian[0], 2) == 29;         y = gregorian[0] - 78;         var yday = jdmp - getJulianDay(gregorian[0], 1, 1);         var chaitra;         chaitra = 30;         if (leapyr == true) {            chaitra = 31;         }                  if (yday < 80) {            y --;            yday = yday + chaitra + (31 * 5) + (30 * 3) + 10 + 80;         }                  yday = yday - 80;         if (yday < chaitra) {            m = 1;            day = yday + 1;         }         else {            var mday = yday - chaitra;            if (mday < (31 * 5)) {               m = Math.floor(mday / 31) + 2;               day = (mday % 31) + 1;            }            else {               mday = mday - (31 * 5);               m = Math.floor(mday / 30) + 7;               day = (mday % 30) + 1;            }         }         break;      case "pmonth":         var jdmp = Math.floor(jd) + 0.5;         var depoch = jdmp - getJulianDayFromPersian(475, 1, 1);         var cycle = Math.floor(depoch / 1029983);         var cyear = depoch % 1029983;         var ycycle;         if (cyear == 1029982) {            ycycle = 2820;         }         else {            var a1 = Math.floor(cyear / 366);            var a2 = cyear % 366;            ycycle = Math.floor(((2134 * a1) + (2816 * a2) + 2815) / 1028522) + a1 + 1;         }         y = ycycle + (2820 * cycle) + 474;         if (y <= 0) {            y --;         }         var yday = (jdmp - getJulianDayFromPersian(y, 1, 1)) + 1;         m = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);         day = (jdmp - getJulianDayFromPersian(y, m, 1)) + 1;         break;      default:         /* cases "jgmonth","gmonth","jmonth" */         var a;                  if (dateformat == "jmonth" || (dateformat == "jgmonth" && z < 2299161)) {            a = z;         }         else if (dateformat == "gmonth" || (dateformat == "jgmonth" && z >= 2299161)) {            var alpha = Math.floor((z - 1867216.25) / 36524.25);            a = z + 1 + alpha - Math.floor(alpha / 4);         }         var b = a + 1524;         var c = Math.floor((b - 122.1) / 365.25);         var d = Math.floor(365.25 * c);         var e = Math.floor((b - d) / 30.6001);         day = b - d - Math.floor(30.6001 * e) + f;         if (e < 14) {            m = e - 1;         }         else if (e == 14 || e == 15) {            m = e - 13;         }         if (m > 2) {            y = c - 4716;         }         else if (m == 1 || m == 2) {            y = c - 4715;         }         break;      }   }   else {      alert("Invalid date");   }   return new Array(y, m, day);}/* function getJulianDay(originalY, originalM, originalD) */function getJulianDay(y0, m0, d0, jgGOrJ) {   /* jgGOrJ: 0 = auto Julian/Gregorian; 1 = Gregorian; 2 = Julian */   var jgGOrJ = (jgGOrJ === undefined)?0:jgGOrJ;   /* Given UT */   var y = y0 + 0;   var m = m0 + 0;   var d = d0 + 0.0;   /* y = -4712;   m = 1;   d = 1.5; */   /* Determine JD */   if (m <= 2) {      y = y - 1;      m = m + 12;   }   var b  = 0;   if (d0 < 1 || ((m0 == 1 || m0 == 3 || m0 == 5 || m0 == 7 || m0 == 8 || m0 == 10 || m0 == 12) && d0 > 31) || ((m0 == 4 || m0 == 6 || m0 == 9 || m0 == 11) && d0 > 30)) {      alert("Invalid date");   }   if (jgGOrJ == 2 || (jgGOrJ == 0 && (y0 < 1582 || (y0 == 1582 && m0 < 10) || (y0 == 1582 && m0 == 10 && d0 <= 4)))) {      /* Julian calendar */      b = 0;      if (y0 / 4.0 == Math.round(y0 / 4.0)) {         /* Leap year */         if (m0 == 2 && d0 > 29) {            alert("Invalid date");         }      }   }   else if (jgGOrJ == 1 || (jgGOrJ == 0 && (y0 > 1582 || (y0 == 1582 && m0 > 10) || (y0 == 1582 && m0 == 10 && d0 >= 15)))) {      /* Gregorian calendar */      var a = Math.floor(y / 100);      b = 2 - a + Math.floor(a / 4);      if (y0 / 4.0 == Math.round(y0 / 4.0)) {         if (y0 / 100.0 == Math.round(y0 / 100.0)) {            if (y0 / 400.0 == Math.round(y0 / 400.0)) {               /* Leap year */               if (m0 == 2 && d0 > 29) {                  alert("Invalid date");               }            }         }         else {            /* Leap year */            if (m0 == 2 && d0 > 29) {               alert("Invalid date");            }         }      }   }   else {      alert("Invalid date");   }   var jd = Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + b - 1524.5;   return jd;}function getJulianDayFromIndian(y0, m0, d0) {   var m;   var jd;      var gregorian = y0 + 78;   var leapyr = getLastDayOfMonth(gregorian, 2) == 29;   var i = getJulianDay(gregorian, 3, leapyr?21:22);   var chaitra = 30;   if (leapyr == true) {      chaitra = 31;   }      if (m0 == 1) {      jd = i + d0 - 1;   }   else {      jd = i + chaitra;      m = m0 - 2;      m = Math.min(m, 5);      jd = jd + (m * 31);      if (m0 >= 8) {         m = m0 - 7;         jd = jd + (m * 30);      }      jd = jd + d0 - 1;   }      return jd;}function getJulianDayFromPersian(y0, m0, d0) {   var epbase = y0 - ((y0 >= 0) ? 474 : 473);   var epyear = 474 + (epbase % 2820);   return d0 + ((m0 <= 7) ? ((m0 - 1) * 31) : (((m0 - 1) * 30) + 6)) + Math.floor(((epyear * 682) - 110) / 2816) + (epyear - 1) * 365 + Math.floor(epbase / 2820) * 1029983 + (1948320.5 - 1);}function getLastDayOfIndianMonth(y, m) {   if (m > 1 && m <= 6) {      return 31;   }   else if (m > 6 && m <= 12) {      return 30;   }   else if (m != 1) {      alert("Invalid date");   }   /* Chaitra */   var gregorian = y + 78;   var leapyr = getLastDayOfMonth(gregorian, 2) == 29;   var i = getJulianDay(gregorian, 3, leapyr?21:22);   if (leapyr == true) {      /* Leap year */      return 31;   }   return 30;}function getLastDayOfPersianMonth(y, m) {   if (m >= 1 && m <= 6) {      return 31;   }   else if (m >= 7 && m < 12) {      return 30;   }   else if (m != 12) {      alert("Invalid date");   }   /* Esfand */   if (((((((y - ((y > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682) {      /* Leap year */      return 30;   }   return 29;}function getLastDayOfMonth(y, m) {   if (m < 1 || m > 12) {      alert("Invalid date");   }   var d; /* d = last day of month; first day of month is always 1 */   if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {      d = 31;   }   else if (m == 4 || m == 6 || m == 9 || m == 11) {      d = 30;   }   else if (m == 2) {      d = 28;      if (y < 1582 || (y == 1582 && m < 10) || (y == 1582 && m == 10 && d <= 4)) {         /* Julian calendar */         if (y / 4.0 == Math.round(y / 4.0)) {            /* Leap year */            d = 29;         }      }      else if (y > 1582 || (y == 1582 && m > 10) || (y == 1582 && m == 10 && d >= 15)) {         /* Gregorian calendar */         if (y / 4.0 == Math.round(y / 4.0)) {            if (y / 100.0 == Math.round(y / 100.0)) {               if (y / 400.0 == Math.round(y / 400.0)) {                  /* Leap year */                  d = 29;               }            }            else {               /* Leap year */               d = 29;            }         }      }   }   return d;}function getAcceptedTypes(dtype) {   var dtypeIndex;   var atype = new Array();   for (dtypeIndex = 0; dtype[dtypeIndex] != null && dtypeIndex < dtype.length; dtypeIndex ++) {      atype[dtypeIndex] = false;   }   if (dst == "1") {      for (dtypeIndex = 121; dtypeIndex <= 124; dtypeIndex ++) {         atype[dtypeIndex] = true;      }   }   showtypes = document.getElementsByName("show");   var j   for (j = 0; j < showtypes.length; j ++) {      if (showtypes[j].checked) {         switch (showtypes[j].value) {         case "lp":            atype[11] = true;            atype[12] = true;            atype[13] = true;            atype[14] = true;            break;         case "ec":            for (dtypeIndex = 21; dtypeIndex <= 28; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            break;         case "es":            atype[1] = true;            atype[2] = true;            atype[3] = true;            atype[4] = true;            atype[5] = true;            atype[6] = true;            break;         case "ap":            atype[15] = true;            atype[16] = true;            atype[17] = true;            atype[18] = true;            atype[19] = true;            atype[20] = true;            break;         case "mc":            for (dtypeIndex = 51; dtypeIndex <= 67; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            break;         case "pe":            for (dtypeIndex = 31; dtypeIndex <= 50; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            for (dtypeIndex = 68; dtypeIndex <= 112; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            for (dtypeIndex = 135; dtypeIndex <= 140; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            break;         case "ms":            for (dtypeIndex = 120; dtypeIndex <= 130; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            break;         default:            /* case "op" */            for (dtypeIndex = 0; dtypeIndex < dtype.length; dtypeIndex ++) {               atype[dtypeIndex] = true;            }            break;         }      }   }   return atype;}function getMonthNames(dateformat,script) {   var monthScript = new Array();   monthScript[0] = new Array(12); /* Indian/Saka */   monthScript[0][0] = "&#2330;&#2376;&#2340;&#2381;&#2352;";   monthScript[0][1] = "&#2357;&#2376;&#2358;&#2366;&#2326;";   monthScript[0][2] = "&#2332;&#2381;&#2351;&#2375;&#2359;&#2381;&#2336;";   monthScript[0][3] = "&#2310;&#2359;&#2366;&#2338;&#2364;";   monthScript[0][4] = "&#2358;&#2381;&#2352;&#2366;&#2357;&#2339;";   monthScript[0][5] = "&#2349;&#2366;&#2342;&#2381;&#2352;&#2346;&#2342;";   monthScript[0][6] = "&#2310;&#2358;&#2381;&#2357;&#2367;&#2344;";   monthScript[0][7] = "&#2325;&#2366;&#2352;&#2381;&#2340;&#2367;&#2325;";   monthScript[0][8] = "&#2310;&#2327;&#2381;&#2352;&#2361;&#2366;&#2351;&#2339; (&#2350;&#2366;&#2352;&#2381;&#2327;&#2358;&#2368;&#2352;&#2381;&#2359;)";   monthScript[0][9] = "&#2346;&#2380;&#2359;";   monthScript[0][10] = "&#2350;&#2366;&#2328;";   monthScript[0][11] = "&#2347;&#2366;&#2354;&#2381;&#2327;&#2369;&#2344;";      monthScript[1] = new Array(12); /* Persian */   monthScript[1][0] = "&#1601;&#1585;&#1608;&#1585;&#1583;&#1740;&#1606;";   monthScript[1][1] = "&#1575;&#1585;&#1583;&#1740;&#1576;&#1607;&#1588;&#1578;";   monthScript[1][2] = "&#1582;&#1585;&#1583;&#1575;&#1583;";   monthScript[1][3] = "&#1578;&#1740;&#1585;";   monthScript[1][4] = "&#1605;&#1585;&#1583;&#1575;&#1583;";   monthScript[1][5] = "&#1588;&#1607;&#1585;&#1740;&#1608;&#1585;";   monthScript[1][6] = "&#1605;&#1607;&#1585;";   monthScript[1][7] = "&#1570;&#1576;&#1575;&#1606;";   monthScript[1][8] = "&#1570;&#1584;&#1585;";   monthScript[1][9] = "&#1583;&#1740;";   monthScript[1][10] = "&#1576;&#1607;&#1605;&#1606;";   monthScript[1][11] = "&#1575;&#1587;&#1601;&#1606;&#1583;";      monthScript[2] = new Array(12); /* Chinese */   monthScript[2][0] = "First Month";   monthScript[2][1] = "Second Month";   monthScript[2][2] = "Third Month";   monthScript[2][3] = "Fourth Month";   monthScript[2][4] = "Fifth Month";   monthScript[2][5] = "Sixth Month";   monthScript[2][6] = "Seventh Month";   monthScript[2][7] = "Eighth Month";   monthScript[2][8] = "Ninth Month";   monthScript[2][9] = "Tenth Month";   monthScript[2][10] = "Eleventh Month";   monthScript[2][11] = "Twelfth Month";      var month = new Array();   month[0] = new Array(12); /* Indian/Saka */   month[0][0] = "Chaitra";   month[0][1] = "Vaisakha";   month[0][2] = "Jaistha";   month[0][3] = "Asadha";   month[0][4] = "Sravana";   month[0][5] = "Bhadra";   month[0][6] = "Asvina";   month[0][7] = "Kartika";   month[0][8] = "Margashirsh (Agrahayana)";   month[0][9] = "Pausa";   month[0][10] = "Magha";   month[0][11] = "Phalguna";      month[1] = new Array(12); /* Persian */   month[1][0] = "Farvadin";   month[1][1] = "Ordibehesht";   month[1][2] = "Khord&#257;d";   month[1][3] = "Tir";   month[1][4] = "Mord&#257;d";   month[1][5] = "Shahrivar";   month[1][6] = "Mehr";   month[1][7] = "&#256;b&#257;n";   month[1][8] = "&#256;zar";   month[1][9] = "Dey";   month[1][10] = "Bahman";   month[1][11] = "Esfand";      month[2] = new Array(12); /* default */   month[2][0] = "January";   month[2][1] = "February";   month[2][2] = "March";   month[2][3] = "April";   month[2][4] = "May";   month[2][5] = "June";   month[2][6] = "July";   month[2][7] = "August";   month[2][8] = "September";   month[2][9] = "October";   month[2][10] = "November";   month[2][11] = "December";      if (script) {      switch (dateformat) {      case "imonth":         return monthScript[0];      case "pmonth":         return monthScript[1];      default:         /* case "jgmonth" for Chinese script */         return monthScript[2];      }   }   else {      switch (dateformat) {      case "imonth":         return month[0];      case "pmonth":         return month[1];      default:         /* case "jgmonth" */         return month[2];      }   }}var ewk = new Array(7);ewk[0] = "Sunday";ewk[1] = "Monday";ewk[2] = "Tuesday";ewk[3] = "Wednesday";ewk[4] = "Thursday";ewk[5] = "Friday";ewk[6] = "Saturday";function showCalendar(darr,systemselected,std_time_offset,dst) {   var dateformat = darr[0];   var range = darr[1];   var scale = darr[2];      var showBeforeAfterMonth = true;      var week = new Array();   week[0] = ewk; /* systemselected = 0 */   week[1] = new Array(7); /* systemselected = 2; Persian */   week[1][0] = "Yekshanbeh";   week[1][1] = "Doshanbeh";   week[1][2] = "Seshhanbeh";   week[1][3] = "Chaharshanbeh";   week[1][4] = "Panjshanbeh";   week[1][5] = "Jomeh";   week[1][6] = "Shanbeh";   week[2] = new Array(7); /* systemselected = 4; Indian */   week[2][0] = "Ravivar";   week[2][1] = "Somvar";   week[2][2] = "Mangalvar";   week[2][3] = "Budhvar";   week[2][4] = "Vrihaspatvar";   week[2][5] = "Sukravar";   week[2][6] = "Sanivar";   week[3] = new Array(7); /* systemselected = 6; Chinese */   week[3][0] = "&#26085;";   week[3][1] = "&#19968;";   week[3][2] = "&#20108;";   week[3][3] = "&#19977;";   week[3][4] = "&#22235;";   week[3][5] = "&#20116;";   week[3][6] = "&#20845;";   week[4] = new Array(7); /* systemselected = 8; Indian */   week[4][0] = "&#2352;&#2357;&#2367;&#2357;&#2366;&#2352;";   week[4][1] = "&#2360;&#2379;&#2350;&#2357;&#2366;&#2352;";   week[4][2] = "&#2350;&#2306;&#2327;&#2354;&#2357;&#2366;&#2352;";   week[4][3] = "&#2348;&#2369;&#2343;&#2357;&#2366;&#2352;";   week[4][4] = "&#2327;&#2369;&#2352;&#2370;&#2357;&#2366;&#2352;";   week[4][5] = "&#2358;&#2369;&#2325;&#2381;&#2352;&#2357;&#2366;&#2352;";   week[4][6] = "&#2358;&#2344;&#2367;&#2357;&#2366;&#2352;";   week[5] = new Array(7); /* systemselected = 10; Persian */   week[5][0] = "&#1740;&#1705;&#1588;&#1606;&#1576;&#1607;";   week[5][1] = "&#1583;&#1608;&#1588;&#1606;&#1576;&#1607;";   week[5][2] = "&#1587;&#1607; &#1588;&#1606;&#1576;&#1607;";   week[5][3] = "&#1670;&#1607;&#1575;&#1585;&#1588;&#1606;&#1576;&#1607;";   week[5][4] = "&#1662;&#1606;&#1580;&#1588;&#1606;&#1576;&#1607;";   week[5][5] = "&#1580;&#1605;&#1593;&#1607;";   week[5][6] = "&#1588;&#1606;&#1576;&#1607;";      allClear();      var p;   for (p = range?0:11; p < 12; p ++) {      var i;      var weekdayRow = document.getElementById("weekday"+p);      while (weekdayRow.childNodes.length >= 1) {         weekdayRow.removeChild(weekdayRow.firstChild);      }      var wk = new Array(7); // week customized for selected system (start Sun./Mon./Sat.)      var n = 0;      if (dateformat == "jgmonth" && !script) {         n = 0;      }      else if (dateformat == "jgmonth" && script) {         n = 3;      }      else if (dateformat == "imonth" && !script) {         n = 2;      }      else if (dateformat == "imonth" && script) {         n = 4;      }      else if (dateformat == "pmonth" && !script) {         n = 1;      }      else if (dateformat == "pmonth" && script) {         n = 5;      }      switch (systemselected) {      case 1:         wk[0] = week[n][1];         wk[1] = week[n][2];         wk[2] = week[n][3];         wk[3] = week[n][4];         wk[4] = week[n][5];         wk[5] = week[n][6];         wk[6] = week[n][0];         break;      case 2:         wk[0] = week[n][6];         wk[1] = week[n][0];         wk[2] = week[n][1];         wk[3] = week[n][2];         wk[4] = week[n][3];         wk[5] = week[n][4];         wk[6] = week[n][5];         break;      default:         /* case 0 */         wk[0] = week[n][0];         wk[1] = week[n][1];         wk[2] = week[n][2];         wk[3] = week[n][3];         wk[4] = week[n][4];         wk[5] = week[n][5];         wk[6] = week[n][6];         break;      }      for (i = 0; i < 7; i ++) {         td = document.createElement("td");         td.setAttribute("style", "width: 87px;");         // td.appendChild(document.createTextNode(wk[i]));         td.innerHTML = wk[i];         weekdayRow.appendChild(td);      }                  var titleRow = document.getElementById("calendartitle"+p);      while (titleRow.childNodes.length >= 1) {         titleRow.removeChild(titleRow.firstChild);      }      titleCol = document.createElement("td");      titleCol.setAttribute("colspan", wk.length);            var calendarbody = document.getElementById("calendarbody"+p);      while (calendarbody.childNodes.length >= 1) {         calendarbody.removeChild(calendarbody.firstChild);      }      row = document.createElement("tr");      var weekBg = false;      var weekBgEmptyCols = false;      var jd0 = 0.0;      var jd1 = 0.0;      var y;      var m;      if (dateformat == "jd") {         jd0 = parseFloat(document.getElementById("jd0").value);         jd1 = parseFloat(document.getElementById("jd1").value);      }      else if (dateformat == "jgmonth") {         y = getJGYear(parseInt(document.getElementById("jgyear").value), (document.getElementById('jgnegative').value == 'CE'));         m = parseInt(document.getElementById("jgmonth").value);         if (range) {            m = p + 1;         }         jd0 = getJulianDay(y, m, 1);         jd1 = getJulianDay(y, m, getLastDayOfMonth(y, m));         document.getElementById("jd0").value = jd0;         document.getElementById("jd1").value = jd1;      }      else if (dateformat == "imonth") {         y = parseInt(document.getElementById("iyear").value);         m = parseInt(document.getElementById("imonth").value);         if (range) {            m = p + 1;         }         jd0 = getJulianDayFromIndian(y, m, 1);         jd1 = getJulianDayFromIndian(y, m, getLastDayOfIndianMonth(y, m));         document.getElementById("jd0").value = jd0;         document.getElementById("jd1").value = jd1;      }      else if (dateformat == "pmonth") {         y = parseInt(document.getElementById("pyear").value);         m = parseInt(document.getElementById("pmonth").value);         if (range) {            m = p + 1;         }         jd0 = getJulianDayFromPersian(y, m, 1);         jd1 = getJulianDayFromPersian(y, m, getLastDayOfPersianMonth(y, m));         document.getElementById("jd0").value = jd0;         document.getElementById("jd1").value = jd1;      }            var weekday = getWeekday(jd0);      var weekdayLast = getWeekday(jd1);            /* defines if first day of week to be Sunday, Monday, or Saturday */      if (systemselected == 1) {         // Monday first         weekday --;         if (weekday < 0) {            weekday = 6;         }         weekdayLast --;         if (weekdayLast < 0) {            weekdayLast = 6;         }      }      else if (systemselected == 2) {         // Saturday first         weekday ++;         if (weekday > 6) {            weekday = 0;         }         weekdayLast ++;         if (weekdayLast > 6) {            weekdayLast = 0;         }      }            /*      var cdataJdIndex = cdata[0][0];      var cdataIndex = 0;      */      var currentJd;      var oJd0 = jd0;      var oJd1 = jd1;      var originalWeekday = weekday + 0;            var j;      var monthday = 1;      for (j = jd0; j <= jd1; j ++) {         if (j == jd0 || weekday == 0) {            row = document.createElement("tr");            if (weekBg == false) {               row.setAttribute("class", "odd");               weekBg = true;            }            else {               weekBg = false;            }            if (j == jd0) {               if (showBeforeAfterMonth == true) {                  oJd0 = j - weekday;                  var k;                  for (k = 0; k < weekday; k ++) {                     td = document.createElement("td");                     td.setAttribute("class", "lighttxt");                     currentJd = j + k - weekday;                     var boxdate = getCalendarDate(currentJd, dateformat);                     /*                     var more = "";                     while (cdata[cdataIndex][0] <= currentJd + 1.0) {                        if (cdata[cdataIndex][0] >= currentJd && cdata[cdataIndex][0] <= currentJd + 1.0) {                           more = "Event " + cdata[cdataIndex][1];                        }                        cdataIndex ++;                     }                     */                     var daytxt = document.createTextNode(boxdate[2]);                     td.appendChild(daytxt);                     row.appendChild(td);                  }               }            }         }         td = document.createElement("td");         var boxdate = getCalendarDate(j, dateformat);         var daytxt = document.createTextNode(boxdate[2]);         td.appendChild(daytxt);         row.appendChild(td);         if (weekday == 6) {            calendarbody.appendChild(row);            weekday = 0;         }         else {            if (j == jd1) {               if (showBeforeAfterMonth) {                  oJd1 = jd1 + 6 - weekday;               }               for (i = weekday; i < 6; i ++) {                  afterCol = document.createElement("td");                  afterCol.setAttribute("class", "lighttxt");                  if (showBeforeAfterMonth == true) {                     var boxdate = getCalendarDate(jd1 + 1.0 + i - weekday, dateformat);                     var boxtxt = document.createTextNode(boxdate[2]);                     afterCol.appendChild(boxtxt);                  }                  row.appendChild(afterCol);               }               calendarbody.appendChild(row);            }            weekday ++;         }      }            /* Add the astronomical data */      var specDecade = getDecadeFiles(oJd0,oJd1);      // var cdata = new Array();      var r;      for (r = 0; r < specDecade.length; r ++) {         var param1 = jd0 - originalWeekday;         var param2 = jd1 + (6 - weekdayLast);         setTimeout("addData(\"" + specDecade[r] + "\"," + p + "," + param1 + "," + param2 + ")", p * 50);         /*         var data = getData(); already retrieved         var q = 0;         while (data[q] != null) {            cdata[q] = data[q];            q ++;         }         */      }            var dstInfo = (parseFloat(dst) == 1.0)?(" with "+document.getElementById("dstl").innerHTML+" on for part of the year"):" for the entire year";      var tzInfo = document.getElementById("tzchoice" + std_time_offset).text;      while (document.getElementById("tzinfo" + p).childNodes.length >= 1) {         document.getElementById("tzinfo" + p).removeChild(document.getElementById("tzinfo" + p).firstChild);      }      document.getElementById("tzinfo" + p).appendChild(document.createTextNode("All event times are given for " + tzInfo + dstInfo + "."));      document.getElementById("tzinfo" + p).style.display = "block";            switch (dateformat) {      case "jd":         titleCol.appendChild(document.createTextNode("Julian Day " + jd0 + " to " + jd1));         break;      case "imonth":         titleCol.appendChild(document.createTextNode(y + " " + document.getElementById("imonth").options[m - 1].text));         break;      case "pmonth":         titleCol.appendChild(document.createTextNode(y + " " + document.getElementById("pmonth").options[m - 1].text));         break;      default:         /* case "jgmonth" */         if (y > 0) {            titleCol.appendChild(document.createTextNode(y + " " + document.getElementById("jgmonth").options[m - 1].text));         }         else {            var bcey = 1 - y;            titleCol.appendChild(document.createTextNode(bcey + " BCE " + document.getElementById("jgmonth").options[m - 1].text));         }         if (getJGYear(parseInt(document.getElementById("jgyear").value), (document.getElementById('jgnegative').value == 'CE')) < yearMin || getJGYear(parseInt(document.getElementById("jgyear").value), (document.getElementById('jgnegative').value == 'CE')) > yearMax) {            var yearMinStr = yearMin + " CE";            var yearMaxStr = yearMax + " CE";            if (yearMin <= 0) {               var yearMinStrNo = 1 - yearMin;               yearMinStr = yearMinStrNo;               yearMinStr += " BCE";            }            if (yearMax <= 0) {               var yearMaxStrNo = 1 - yearMax;               yearMaxStr = yearMaxStrNo;               yearMaxStr += " BCE";            }            document.getElementById("tzinfo" + p).appendChild(document.createTextNode(" Sky events data is only available for years " + yearMinStr + " to " + yearMaxStr + "."));         }         break;      }      titleRow.appendChild(titleCol);            /* document.getElementById('calendar').appendChild(calendarbody); */      document.getElementById("calendar"+p).style.display="block";   }   return;}function showEventsTable() {   var y = getJGYear(parseInt(document.getElementById('jgyear').value), (document.getElementById('jgnegative').value == 'CE'));      /* Add the astronomical data */   evttab = window.open("evttab.html", "evttab");   eventsData(evttab.document, y);      return;}