var XMLHttpRequestObject = getHTTPObject();

function getHTTPObject() {

  if (typeof XMLHttpRequest != 'undefined') {
    return new XMLHttpRequest();
  }
  try {
    return new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
    }
  }

  return false;

}

function getMAC(dataSource, divID) {

  dataSource += "?secret=" + escape(document.forms[0].elements[0].value);
  dataSource += "&data=" + escape(document.forms[0].elements[1].value);

  if (XMLHttpRequestObject) {
    var obj = document.getElementById(divID);
    obj.innerHTML = "Calculating...";
    XMLHttpRequestObject.open("GET", dataSource);

    XMLHttpRequestObject.onreadystatechange = function() {
      if (XMLHttpRequestObject.readyState == 4) {
        if (XMLHttpRequestObject.status == 200) {
          obj.innerHTML = XMLHttpRequestObject.responseText;
        } else {
          obj.innerHTML = "Sorry, an error occurred.  Please try again.";
        }
      }
    }
    XMLHttpRequestObject.send(null);
  }

  return false;

}

function doClear() {

  document.forms[0].elements[0].value = "";
  document.forms[0].elements[1].value = "";
  doClearMAC();

}

function doClearMAC() {

  document.getElementById("result").innerHTML = "";

}

function getMAC2(dataSource, divID) {

  dataSource += "?secret=" + escape(document.forms[1].elements[0].value);
  dataSource += "&data2=" + escape(document.forms[1].elements[1].value);

  if (XMLHttpRequestObject) {
    var obj = document.getElementById(divID);
    obj.innerHTML = "Calculating...";
    XMLHttpRequestObject.open("GET", dataSource);

    XMLHttpRequestObject.onreadystatechange = function() {
      if (XMLHttpRequestObject.readyState == 4) {
        if (XMLHttpRequestObject.status == 200) {
          obj.innerHTML = XMLHttpRequestObject.responseText;
        } else {
          obj.innerHTML = "Sorry, an error occurred.  Please try again.";
        }
      }
    }
    XMLHttpRequestObject.send(null);
  }

  return false;

}

function doClear2() {

  document.forms[1].elements[0].value = "";
  document.forms[1].elements[1].value = "";
  doClearMAC2();

}

function doClearMAC2() {

  document.getElementById("result2").innerHTML = "";

}

function doOnLoad() {

  var href = window.location.href;
  var p = href.lastIndexOf("/");
  if (p>=0) {
    href = href.substring(0, p+1) + 'mac.php';
  }
  var html = "<p>\n<em>You can use the form below to check MAC calculations; the default values are from the above example:</em>\n</p>\n";
  html += "<form onsubmit=\"return getMAC('" + href + "', 'result');\">\n";
  html += "<table style=\"border-style: outset; padding: 5px;\">\n";
  html += "<tr>\n";
  html += "  <td>Secret:</td>\n";
  html += "  <td><input type=\"text\" name=\"secret\" value=\"This is a secret!\" size=\"50\" onkeypress=\"doClearMAC();\" /></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td>Data:</td>\n";
  html += "  <td><input type=\"text\" name=\"data\" value=\"Biology1Astudent58George SmithS1191196800\" size=\"75\" onkeypress=\"doClearMAC();\" /></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td>MAC:</td>\n";
  html += "  <td><span class=\"monotext\" id=\"result\"></span></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td colspan=\"2\" class=\"aligncentre\"><input type=\"submit\" value=\"Calculate MAC\" />&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"Clear form\" onclick=\"doClear();\" />&nbsp;&nbsp;&nbsp;<input type=\"reset\" value=\"Reset form\" /></td>\n";
  html += "</tr>\n";
  html += "</table>\n";
  html += "</form>\n";
  document.getElementById("calcMAC").innerHTML = html;

  var html = "<p>\nThe form below allows you to check both MAC and MAC2 calculations; the default values are from the above example:\n</p>\n";
  html += "<form onsubmit=\"return getMAC2('" + href + "', 'result2');\">\n";
  html += "<table style=\"border-style: outset; padding: 5px;\">\n";
  html += "<tr>\n";
  html += "  <td>Secret:</td>\n";
  html += "  <td><input type=\"text\" name=\"secret2\" value=\"This is a secret!\" size=\"50\" onkeypress=\"doClearMAC2();\" /></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td style=\"vertical-align: top;\">Data:</td>\n";
  html += "  <td><textarea name=\"data2\" cols=\"50\" rows=\"7\" onkeypress=\"doClearMAC2();\">";
  html += "sectionid=Biology1A\n";
  html += "userid=student58\n";
  html += "name=George Smith\n";
  html += "status=S\n";
  html += "time=1191196800\n";
  html += "</textarea></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td>MAC:</td>\n";
  html += "  <td><span class=\"monotext\" id=\"result2\"></span></td>\n";
  html += "</tr>\n";
  html += "<tr>\n";
  html += "  <td colspan=\"2\" class=\"aligncentre\"><input type=\"submit\" value=\"Calculate MAC\" onclick=\"return getMAC('" + href + "', 'result2');\" />&nbsp;&nbsp;&nbsp;<input type=\"submit\" value=\"Calculate MAC2\" />&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\"Clear form\" onclick=\"doClear2();\" />&nbsp;&nbsp;&nbsp;<input type=\"reset\" value=\"Reset form\" /></td>\n";
  html += "</tr>\n";
  html += "</table>\n";
  html += "</form>\n";
  document.getElementById("calcMAC2").innerHTML = html;
}

window.onload=doOnLoad;

