
function addEmqOption(srcElement, tgtFormField, tgtTable, nOptsField)
{
  var optionText = document.getElementById(srcElement).value;

  if (optionText == "")
  {
    alert("You must enter something in the 'New Option' box first.");
    return;
  }

  document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + optionText + "@@end@@";

  var numOptions = parseInt(document.getElementById(nOptsField).value);

  var tbl = document.getElementById(tgtTable);

  var jsLinks = ' [<span onclick="editEmqOption('+String(numOptions)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqOption('+String(numOptions)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">delete</span>]';

  if (numOptions == 0)
  {
    //tbl.rows[0].cells[0].innerHTML = '<div align="right" class="standardGreenText">1.&nbsp;</div>';
    //tbl.rows[0].cells[1].innerHTML = optionText + jsLinks;
    if (tbl.rows.length > 0)
      tbl.deleteRow(0);
  }

  //else
  //{
    var newRow = tbl.insertRow(tbl.rows.length);

    var newCell = newRow.insertCell(0);
    newCell.width = "21";
    newCell.innerHTML = '<div align="right" class="standardGreenText">'+String(numOptions + 1)+'.&nbsp;</div>';

    var newCell = newRow.insertCell(1);
    newCell.width = "664";
    newCell.className = "standardGreenText"
    newCell.innerHTML = optionText + jsLinks;
  //}

  document.getElementById(nOptsField).value = String(numOptions + 1);
  document.getElementById(srcElement).value = "";
}

function addEmqQuestion(srcElement, tgtFormField, tgtTable, nQsField)
{
  var questionText = document.getElementById(srcElement).value;

  if (questionText == "")
  {
    alert("You must enter something in the 'New Question' box first.");
    return;
  }

  document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + questionText + "@@end@@";

  var numQuestions = parseInt(document.getElementById(nQsField).value);

  var tbl = document.getElementById(tgtTable);

  var jsLinks = ' [<span onclick="editEmqQuestion('+String(numQuestions)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqQuestion('+String(numQuestions)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">delete</span>]';

  if (numQuestions == 0)
  {
    //tbl.rows[0].cells[0].innerHTML = '<div align="right" class="standardGreenText">a.&nbsp;</div>';
    //tbl.rows[0].cells[1].innerHTML = questionText + jsLinks;
    //tbl.rows[0].cells[2].innerHTML = '<input type="text" name="answer1" size="3" maxlength="3" />';

    if (tbl.rows.length > 0)
      tbl.deleteRow(0);
  }

  //else
  //{
    var newRow = tbl.insertRow(tbl.rows.length);

    var newCell = null;

    newCell = newRow.insertCell(0);
    newCell.width = "21";
    newCell.vAlign = "top";
    newCell.innerHTML = '<div align="right" class="standardGreenText">'+intToAlphabet(numQuestions, false)+'.&nbsp;</div>';

    newCell = newRow.insertCell(1);
    newCell.width = "554";
    newCell.vAlign = "top";
    newCell.className = "standardGreenText"
    newCell.innerHTML = questionText + jsLinks;

    newCell = newRow.insertCell(2);
    newCell.width = "110";
    newCell.vAlign = "top";
    newCell.innerHTML = '<input type="text" name="answer'+String(numQuestions + 1)+'" size="3" maxlength="3" />';
  //}

  document.getElementById(nQsField).value = String(numQuestions + 1);
  document.getElementById(srcElement).value = "";
}


function deleteEmqOption(optNum, tgtFormField, tgtTable, nOptsField)
{
  var optionsStr = document.getElementById(tgtFormField).value;
  var optionsArray = optionsStr.split("@@end@@");
  optionsArray.pop();

  var numOptionsBefore = parseInt(document.getElementById(nOptsField).value);
  var i=0;

  var tbl = document.getElementById(tgtTable);

  // DEBUG
  if ((numOptionsBefore != optionsArray.length) || (numOptionsBefore != tbl.rows.length))
  {
    alert("Option Count mismatch");
    return;
  }


  // delete all the rows of the table
  for (i=0; i<numOptionsBefore; i++)
  {
    tbl.deleteRow(0);
  }

  // clear the hidden form field
  document.getElementById(tgtFormField).value = "";

  var newOptNum = 0;
  // Re-create all the rows of the table excluding the option the user chose to delete.
  // Also rebuild the hidden form field
  for (i=0; i<numOptionsBefore; i++)
  {
    if (i != optNum)
    {
      var jsLinks = ' [<span onclick="editEmqOption('+String(newOptNum)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqOption('+String(newOptNum)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">delete</span>]';

      var newRow = tbl.insertRow(tbl.rows.length);

      var newCell = newRow.insertCell(0);
      newCell.width = "21";
      newCell.innerHTML = '<div align="right" class="standardGreenText">'+String(newOptNum + 1)+'.&nbsp;</div>';

      var newCell = newRow.insertCell(1);
      newCell.width = "664";
      newCell.className = "standardGreenText"
      newCell.innerHTML = optionsArray[i]+jsLinks;

      // add this option to the hidden form field
      document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + optionsArray[i] + "@@end@@";

      // increment the counter of how many options we have
      newOptNum++;
    }
  }

  document.getElementById(nOptsField).value = String(numOptionsBefore - 1);

  // DEBUG
  //alert ("hiddenformfield="+document.getElementById(tgtFormField).value);
  //alert ("numOptions="+document.getElementById(nOptsField).value);
}

function editEmqOption(optNum, tgtFormField, tgtTable, nOptsField)
{
  var newOptionStr = prompt("Please enter the new option:", "");
  if (newOptionStr == "")
  {
    alert ("Error: Option cannot be empty");
    return;
  }

  if (newOptionStr == null)
    return;


  var optionsStr = document.getElementById(tgtFormField).value;
  var optionsArray = optionsStr.split("@@end@@");
  optionsArray.pop();

  var numOptionsBefore = parseInt(document.getElementById(nOptsField).value);
  var i=0;

  var tbl = document.getElementById(tgtTable);

  // DEBUG
  if ((numOptionsBefore != optionsArray.length) || (numOptionsBefore != tbl.rows.length))
  {
    alert("Option Count mismatch");
    return;
  }


  // delete all the rows of the table
  for (i=0; i<numOptionsBefore; i++)
  {
    tbl.deleteRow(0);
  }

  // clear the hidden form field
  document.getElementById(tgtFormField).value = "";

  var newOptNum = 0;
  // Re-create all the rows of the table
  // Also rebuild the hidden form field
  for (i=0; i<numOptionsBefore; i++)
  {
    var s = "";
    if (i == optNum)
      s = newOptionStr;
    else
      s = optionsArray[i]

    var jsLinks = ' [<span onclick="editEmqOption('+String(newOptNum)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqOption('+String(newOptNum)+', \'options\', \'optionsDisplay\', \'numOptions\');" class="javascriptLinkSmall">delete</span>]';

    var newRow = tbl.insertRow(tbl.rows.length);

    var newCell = newRow.insertCell(0);
    newCell.width = "21";
    newCell.innerHTML = '<div align="right" class="standardGreenText">'+String(newOptNum + 1)+'.&nbsp;</div>';

    var newCell = newRow.insertCell(1);
    newCell.width = "664";
    newCell.className = "standardGreenText"
    newCell.innerHTML = s + jsLinks;

    // add this option to the hidden form field
    document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + s + "@@end@@";

    // increment the counter of how many options we have
    newOptNum++;

  }

  // DEBUG
  //alert ("hiddenformfield="+document.getElementById(tgtFormField).value);
  //alert ("numOptions="+document.getElementById(nOptsField).value);
}


function deleteEmqQuestion(qNum, tgtFormField, tgtTable, nQsField)
{
  var questionsStr = document.getElementById(tgtFormField).value;
  var questionsArray = questionsStr.split("@@end@@");
  questionsArray.pop();

  var numQuestionsBefore = parseInt(document.getElementById(nQsField).value);
  var i=0;

  var tbl = document.getElementById(tgtTable);

  // DEBUG
  if ((numQuestionsBefore != questionsArray.length) || (numQuestionsBefore != tbl.rows.length))
  {
    alert("Question Count mismatch");
    return;
  }


  // delete all the rows of the table
  for (i=0; i<numQuestionsBefore; i++)
  {
    tbl.deleteRow(0);
  }

  // clear the hidden form field
  document.getElementById(tgtFormField).value = "";

  var newQNum = 0;

  for (i=0; i<numQuestionsBefore; i++)
  {
    if (i != qNum)
    {
      var jsLinks = ' [<span onclick="editEmqQuestion('+String(newQNum)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqQuestion('+String(newQNum)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">delete</span>]';

      var newRow = tbl.insertRow(tbl.rows.length);

      var newCell = null;

      newCell = newRow.insertCell(0);
      newCell.width = "21";
      newCell.vAlign = "top";
      newCell.innerHTML = '<div align="right" class="standardGreenText">'+intToAlphabet(newQNum, false)+'.&nbsp;</div>';

      newCell = newRow.insertCell(1);
      newCell.width = "554";
      newCell.vAlign = "top";
      newCell.className = "standardGreenText"
      newCell.innerHTML = questionsArray[i] + jsLinks;

      newCell = newRow.insertCell(2);
      newCell.width = "110";
      newCell.vAlign = "top";
      newCell.innerHTML = '<input type="text" name="answer'+String(newQNum+1)+'" size="3" maxlength="3" />';

      // add this question to the hidden form field
      document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + questionsArray[i] + "@@end@@";

      newQNum++;
    }
  }

  document.getElementById(nQsField).value = String(numQuestionsBefore - 1);

  // DEBUG
  //alert ("hiddenformfield="+document.getElementById(tgtFormField).value);
  //alert ("numQuestions="+document.getElementById(nQsField).value);
}

function editEmqQuestion(qNum, tgtFormField, tgtTable, nQsField)
{
  var newQuestionStr = prompt("Please enter the new question:","");
  if (newQuestionStr == "")
  {
    alert ("Error: Question cannot be empty");
    return;
  }

  if (newQuestionStr == null)
    return;

  var questionsStr = document.getElementById(tgtFormField).value;
  var questionsArray = questionsStr.split("@@end@@");
  questionsArray.pop();

  var numQuestionsBefore = parseInt(document.getElementById(nQsField).value);
  var i=0;

  var tbl = document.getElementById(tgtTable);

  // DEBUG
  if ((numQuestionsBefore != questionsArray.length) || (numQuestionsBefore != tbl.rows.length))
  {
    alert("Question Count mismatch");
    return;
  }


  // delete all the rows of the table
  for (i=0; i<numQuestionsBefore; i++)
  {
    tbl.deleteRow(0);
  }

  // clear the hidden form field
  document.getElementById(tgtFormField).value = "";

  var newQNum = 0;

  for (i=0; i<numQuestionsBefore; i++)
  {
    var s = "";
    if (i == qNum)
      s = newQuestionStr;
    else
      s = questionsArray[i];

      var jsLinks = ' [<span onclick="editEmqQuestion('+String(newQNum)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">edit</span>] [<span onclick="deleteEmqQuestion('+String(newQNum)+', \'questions\', \'questionsDisplay\', \'numQuestions\');" class="javascriptLinkSmall">delete</span>]';

      var newRow = tbl.insertRow(tbl.rows.length);

      var newCell = null;

      newCell = newRow.insertCell(0);
      newCell.width = "21";
      newCell.vAlign = "top";
      newCell.innerHTML = '<div align="right" class="standardGreenText">'+intToAlphabet(newQNum, false)+'.&nbsp;</div>';

      newCell = newRow.insertCell(1);
      newCell.width = "554";
      newCell.vAlign = "top";
      newCell.className = "standardGreenText"
      newCell.innerHTML = s + jsLinks;

      newCell = newRow.insertCell(2);
      newCell.width = "110";
      newCell.vAlign = "top";
      newCell.innerHTML = '<input type="text" name="answer'+String(newQNum+1)+'" size="3" maxlength="3" />';

      // add this question to the hidden form field
      document.getElementById(tgtFormField).value = document.getElementById(tgtFormField).value + s + "@@end@@";

      newQNum++;

  }

  // DEBUG
  //alert ("hiddenformfield="+document.getElementById(tgtFormField).value);
  //alert ("numQuestions="+document.getElementById(nQsField).value);
}


function intToAlphabet(i, upperCase)
{
  var base = 0;

  if (upperCase == true)
    base = 65;
  else
    base = 97;

  return String.fromCharCode(base + i);
}

function breakout()
{
  if (window.top != window.self)
  {
    window.top.location = document.URL;
  }
}
