// Global variables
var objDate = new Date();
var curMonth = objDate.getMonth();
var curYear = objDate.getFullYear();
curYear += (curMonth == 11) ? 1 : 0;
var months = [0];
var years = [curYear];
// Verifies data
function verify(f)
{
  if (!checkFile(f))
  {
    return false;
  }
  assembleData(f);
  var istart = f.upfile.value.lastIndexOf("/");
  if (istart == -1)
  {
    istart = f.upfile.value.lastIndexOf("\\");
  }
  if (istart == -1)
  {
    istart = f.upfile.value.lastIndexOf(":");
  }
  var iend = f.upfile.value.lastIndexOf(".");
  var fname;
  if (istart != -1)
  {
    fname = f.upfile.value.slice(istart + 1, iend);
  }
  else
  {
    fname = f.upfile.value.slice(0, iend);
  }
  f.action = "/cgi-bin/design.cgi/" + encodeURIComponent(fname) + "-" + f.cals.value + ".pdf";
  f.getcal.value = sWait;
  f.upfilename.value = f.upfile.value;
  document.getElementById('returl').href = f.action;
  return true;
}
// End of function verify
// Check if file name is valid
function checkFile(f)
{
  if (f.upfile.value.length == 0)
  {
    alert(sImgBlank);
    f.upfile.focus();
    return false;
  }
  return true;
}
// End of function checkFile
// Assembles data
function assembleData(f)
{
  var n = months.length;
  var calData = "";
  var i, u, v;
  for (i = 0; i < n; i++)
  {
    v = years[i];
    u = months[i];
    if (u != 0)
    {
      calData += u + "-";
    }
    if (i < n - 1)
    {
      calData += v + "_";
    }
    else
    {
      calData += v;
    }
  }
  f.cals.value = calData;
}
// End of function assembleData
// Sets default year
function setYear(y)
{
  y.value = curYear;
}
// End of function setYear
// Reset Button Text
function resetText(f)
{
  f.getcal.value = sGetCal;
  months = [0];
  years = [curYear];
  var t = document.getElementById('monthyear');
  var n = t.rows.length;
  var i;
  for (i = 0; i < n - 2; i++)
  {
    t.deleteRow(2);
  }
  displayTable();
  return true;
}
// End of function resetText
// display a row
function displayRow(i)
{
  var t = document.getElementById('monthyear');
  var r = t.rows[i + 1];
  r.vAlign = "center";
  r.align = "left";
  var m = r.cells[0];
  m.innerHTML = '<select name="month' + i + '" ' + 
                'id="month' + i + '" onBlur="copyMonth(this)">' + 
                '<option value="0" selected>' + sWholeYear +
                '<option value="1">' + sJan + '<option value="2">' + sFeb +
                '<option value="3">' + sMar + '<option value="4">' + sApr +
                '<option value="5">' + sMay + '<option value="6">' + sJune +
                '<option value="7">' + sJuly + '<option value="8">' + sAug +
                '<option value="9">' + sSep + '<option value="10">' + sOct +
                '<option value="11">' + sNov + '<option value="12">' + sDec +
                '</select>';
  document.getElementById('month' + i).options.selectedIndex = months[i];
  var y = r.cells[1];
  y.innerHTML = '<input type="text" name="year' + i + '" ' +
                'id="year' + i + '" size="6" ' +
                'maxlength="4" value="' + years[i] + '" ' +
                'onBlur="copyYear(this)" onFocus="this.select()">';
  var p = r.cells[2];
  p.innerHTML = '&nbsp;&nbsp;&nbsp;';
  var a = r.cells[3];
  a.innerHTML = '<img src="add.gif" ' +
                'onClick="addRow(this.parentNode.parentNode.rowIndex)">';
  if (i > 0) {
    var d = r.cells[4];
    d.innerHTML = '<img src="delete.gif" ' +
                  'onClick="delRow(this.parentNode.parentNode.rowIndex)">';
  }
}
// End of displayRow
// Function displayTable
function displayTable()
{
  var n = months.length;
  var i;
  for (i = 0; i < n; i++)
  {
    displayRow(i);
  }
}
// End of displayTable
// Add a new row
function addRow(i)
{
  var t = document.getElementById('monthyear');
  if (t.rows.length >= 14) {
    alert(sRowMax);
    return false;
  }
  months.splice(i, 0, 0);
  years.splice(i, 0, curYear);
  var r = t.insertRow(i + 1);
  r.insertCell(0);
  r.insertCell(1);
  r.insertCell(2);
  r.insertCell(3);
  r.insertCell(4);
  displayTable();
}
// End of addRow
// Delete a row
function delRow(i)
{
  months.splice(i - 1, 1);
  years.splice(i - 1, 1);
  document.getElementById('monthyear').deleteRow(i);
  displayTable();
}
// End of delRow
// Function copyMonth
function copyMonth(s)
{
  var i = s.parentNode.parentNode.rowIndex - 1;
  months[i] = s.value;
}
// End of copyMonth
// Function copyYear
function copyYear(s)
{
  var v = s.value;
  if (isNaN(v) || v < 1645 || v > 7000)
  {
    alert(sYearInv);
    s.focus();
    return false;
  }
  var i = s.parentNode.parentNode.rowIndex - 1;
  years[i] = s.value;
}
// End of copyYear
