function eventsData(evtdoc, y) {   var jd0 = 0.0;   var jd1 = 0.0;   jd0 = getJulianDay(y, 1, 1);   jd1 = getJulianDay(y, 12, getLastDayOfMonth(y, 12));      var atype = getAcceptedTypes(getDataTypes());   var k;   var atypeArr = "";   for (k = 0; k < atype.length; k ++) {      var tf = atype[k]?"true":"false";      atypeArr += "\n"+"atype["+k+"] = "+tf+";";   }      var dstInfo = (parseFloat(dst) == 1.0)?" <b>with</b>":" <b>without</b>";   dstInfo += " Daylight Saving Time (DST) on for part of the year";   var tzInfo = document.getElementById("tzchoice" + std_time_offset).text;      var a = new Array();   a[0] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ';   a[1] = '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';   a[2] = '<html xmlns="http://www.w3.org/1999/xhtml" lang="en-us">';   a[3] = '<head>';   a[4] = '<meta http-equiv="Content-Language" content="en-us" />';   a[5] = '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';   a[6] = '<meta name="author" content="F. Espenak" />';   a[7] = '<meta name="keywords" content="eclipse, solar" />';   a[8] = '<meta name="description" content="This is part of NASA';   a[8] += "'s official eclipse home page. It generates a Sky Events Calendar.\" />";   a[9] = "<title>NASA - SKYCAL - Sky Events Calendar</title>";   a[10] = '<script type="text/javascript">';   a[10] += "\n"+'//<![CDATA[<!--';   a[10] += "\n"+'var data = new Array();';   a[10] += "\n"+'var i = 0;';   a[10] += "\n"+'var atype = new Array();';   a[10] += "\n"+atypeArr;   a[10] += "\n"+'//-->//]]>';   a[10] += "\n"+'</script>';   a[10] += "\n"+'<script type="text/javascript" src="algorithm.js"></script>';   a[10] += "\n"+'<script type="text/javascript" src="eventstable.js"></script>';   a[10] += "\n"+'<script type="text/javascript" src="datatypes.js"></script>';   var files = getDecadeFiles(jd0, jd1);   var i;   for (i = 0; i < files.length; i ++) {      a[10] += "\n"+'<script type="text/javascript" src="'+files[i]+'"></script>';      a[10] += "\n"+'<script type="text/javascript">';      a[10] += "\n"+'//<![CDATA[<!--';      a[10] += "\n"+'var fileData = getData();';      a[10] += "\n"+'var j = 0;';      var endJd = jd1 + 1.0;      a[10] += "\n"+'while (fileData[j] != null && fileData[j][0] <= '+endJd+') {';      a[10] += "\n"+'   if (fileData[j][0] >= '+jd0+') {';      a[10] += "\n"+'      data[i] = fileData[j];';      a[10] += "\n"+'      i ++;';      a[10] += "\n"+'   }';      a[10] += "\n"+'   j ++;';      a[10] += "\n"+'}';      a[10] += "\n"+'//-->//]]>';      a[10] += "\n"+'</script>';   }   a[11] = '</head><body style="direction: ltr;" id="start">';   a[12] = "<h2>NASA - SKYCAL - Sky Events Calendar</h2>";   a[13] = '<div id="header" style="clear: both; width: 717px; text-align: center;">';   a[14] = '<h3>'+y+'</h3></div>';   a[15] = '<div id="container" style="float: left; width: 5px; border-left: 356px solid rgb(237, 243, 254); border-right: 356px solid rgb(255, 245, 223); display:inline;">';   a[16] = '<div id="leftrail" style="float: left; width: 356px; margin-left: -356px; position: relative;">';   a[17] = '<script type="text/javascript">';   a[17] += "\n"+'//<![CDATA[<!--';   /* a[17] += "\n"+'document.getElementById("leftrailp").innerHTML = data[0][0];'; */   a[17] += "\n"+'var std_time_offset = '+std_time_offset+';';   a[17] += "\n"+'var dst = "'+dst+'";';   a[17] += "\n"+'var showWithDstWhenOn = false;';   a[17] += "\n"+'var content = getEventsTableContent(data);';   a[17] += "\n"+'document.getElementById("leftrail").innerHTML = content[0];';   a[17] += "\n"+'//-->//]]>';   a[17] += "\n"+'</script>';   a[17] += "\n"+'</div>';	a[18] = '<div id="center" style="float: left; width: 5px; margin-right: -5px;">';   a[19] = '</div>';   /* #center { float:left;width:100%;margin-right:-100%; } */	a[20] = '<div id="rightrail" style="float: right; width: 356px; margin-right: -356px; position: relative;">';   a[21] = '<script type="text/javascript">';   a[21] += "\n"+'//<![CDATA[<!--';   a[21] += "\n"+'document.getElementById("rightrail").innerHTML = content[1];';   a[21] += "\n"+'//-->//]]>';   a[21] += "\n"+'</script>';   a[21] += "\n"+'</div>';   a[22] = '</div>';   a[23] = '</div>';   a[24] = '<div id="footer" style="clear: both; width: 597px; text-align: center;">';   a[25] = "<p style=\"font-style: italic; padding-top: 12pt;\">All event times are given for " + tzInfo + dstInfo + ".</p></div>";   a[25] += "\n<p>This page may be saved or printed.</p></div>";   a[25] += "\n<p>All SKYCAL astronomical calculations are by Fred Espenak, and he assumes full responsibility for their accuracy. ";   a[25] += "Special thanks to National Space Club summer intern <b>Sumit Dutta</b> ";   a[25] += "for his valuable assistance in developing the Sky Events Calendar (July 2007).</p>";   a[25] += "\n<p>Permission is freely granted to reproduce this data when accompanied by an acknowledgment:</p>";   a[25] += "\n<p style=\"text-align: center;\">\"Sky Events Calendar by Fred Espenak and Sumit Dutta (NASA's GSFC)\"</p>";   a[26] = "</body></html>";      var i;   for (i = 0; i < a.length; i ++) {      evtdoc.writeln(a[i]);   }   evtdoc.close();}var prevevttabmo = 0;function appendTableData(daydata) {   // Daylight Saving Time trigger variable set in function calling this function beforehand   var offset = getOffset(std_time_offset, dst, daydata[0]);      var sjd = daydata[0] + (offset / 24.0);   var date = getCalendarDate(sjd, "jgmonth");   var month = getMonthNames("jgmonth", false);   var mday = padDigits(Math.floor(date[2]), 2);   var weekday = ewk[getWeekday(sjd)].substring(0, 2);   var dayfrac = date[2] - mday;   var h = Math.floor(24.0 * dayfrac);   var m = Math.round(((24.0 * dayfrac) - h) * 60.0);   // var second = (minute - Math.floor(minute)) * 60.0;   if (m == 60) {      m = 0;      h ++;      if (h > 24) {         h -= 24;      }   }   hour = padDigits(h, 2);   minute = padDigits(m, 2);   // second = padDigits(Math.floor(second), 2);   // var p1 = date[0] + " " + month[date[1] - 1] + " " + mday;   var p2 = "";   if (daydata[1] < 131) {      p2 = hour + ":" + minute; // + ":" + second;   }      var rowData = "<tr>";   if (prevevttabmo != date[1]) {      rowData += "<td>" + month[date[1] - 1].substring(0, 3) + "</td><td style=\"text-align: right;\">" + mday + "&nbsp;</td>";   }   else {      rowData += "<td>&nbsp;</td><td style=\"text-align: right;\">" + mday + "&nbsp;</td>";   }   rowData += "<td>" + weekday + "</td>";      var dtype = getDataTypes();   var i;   var type = "";   var extra = "";   for (i = 0; dtype[i] != null && i < dtype.length; i ++) {      if (dtype[i][0] == daydata[1]) {         if (dtype[i][2] != "") {            type += dtype[i][2];         }         else {            type += dtype[i][1];         }      }   }      /* Show Specific Event Calculations */    if (daydata[1] >= 5 && daydata[1] <= 6) {      // Earth Aphelion/Perihelion      var no = daydata[2] / 10000.0; // * 0.0001;      extra = ": " + no + " <abbr title=\"Astronomical Units\">AU</abbr>";   }   else if (daydata[1] >= 15 && daydata[1] <= 16) {      // Moon Apogee/Perigee      var no = daydata[2] * 100;      extra = ": " + no + " km";   }   else if (daydata[1] >= 19 && daydata[1] <= 20) {      // Moon max./min. declination      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " N";      }      else if (no < 0) {         extra +=  " S";      }   }   else if (daydata[1] >= 35 && daydata[1] <= 38) {      // Mercury or Venus greatest elongation      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " E";      }      else if (no < 0) {         extra +=  " W";      }   }   else if (daydata[1] >= 51 && daydata[1] <= 57) {      // Moon-Planet      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " N";      }      else if (no < 0) {         extra +=  " S";      }   }   else if (daydata[1] >= 61 && daydata[1] <= 67) {      // Moon-Star      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " N";      }      else if (no < 0) {         extra +=  " S";      }   }   else if (daydata[1] >= 68 && daydata[1] <= 102) {      // Planet-Star      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " N";      }      else if (no < 0) {         extra +=  " S";      }   }   else if (daydata[1] >= 103 && daydata[1] <= 112) {      // Planet-Planet      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " N";      }      else if (no < 0) {         extra +=  " S";      }   }   else if (daydata[1] >= 120 && daydata[1] <= 130) {      // Meteor showers      var no = daydata[2];      extra = ": <abbr title=\"Zenith Hourly Rate\">ZHR</abbr> = " + no;   }   else if (daydata[1] >= 135 && daydata[1] <= 136) {      // Mercury or Venus elongation      var no = daydata[2] / 10.0; // * 10;      extra = ": " + Math.abs(no) + "&deg;";      if (no > 0) {         extra += " E";      }      else if (no < 0) {         extra +=  " W";      }   }      rowData += "<td style=\"text-align: center;\">" + p2 + "</td><td>" + type + extra + "</td>";   rowData += "</tr>";   prevevttabmo = date[1];      return rowData;}function getEventsTableContent(data) {   var content = new Array(2); /* in HTML */   content[0] = ""; // offset;   content[1] = ""; // offset;      var i, j, k, rows;   rows = 0;   content[0] += '<table><thead style="text-align: center;"><th colspan="3">Date</th><th>Local<br />Time</th><th>Event</th></thead><tbody>';   content[1] += '<table><thead style="text-align: center;"><th colspan="3">Date</th><th>Local<br />Time</th><th>Event</th></thead><tbody>';   for (k = 0; k < data.length; k ++) {      if (atype[data[k][1]])         rows ++;   }   j = 0;   var midrow = Math.round(rows / 2.0);   for (i = 0; i < midrow; j ++) {      if (data[j][1] == 131 || data[j][1] == 133) {         showWithDstWhenOn = true;      }      else if (data[j][1] == 132 || data[j][1] == 134) {         showWithDstWhenOn = false;      }            if (atype[data[j][1]]) {         content[0] += appendTableData(data[j]);         i ++;      }   }   for (i = midrow; i < rows; j ++) {      if (data[j][1] == 131 || data[j][1] == 133) {         showWithDstWhenOn = true;      }      else if (data[j][1] == 132 || data[j][1] == 134) {         showWithDstWhenOn = false;      }            if (atype[data[j][1]]) {         content[1] += appendTableData(data[j]);         i ++;      }   }   content[0] += '</tbody></table>';   content[1] += '</tbody></table>';      return content;}