• 0

[JAVA] Online test script


Question

I think this is the right section...

Anyways im trying to figure out this online student test script thing i found for my comp sci teacher, but i dont get it.

<script language='JavaScript1.1'>
<!--
	var listMap = '11111111111111111111111111111111111';
	var qtypeMap = '00000000002222222222222222222222222';
	var ansMap = new Array(35);
	ansMap[0] = '47';
	ansMap[1] = '56';
	ansMap[2] = '57';
	ansMap[3] = '42';
	ansMap[4] = '51';
	ansMap[5] = '40';
	ansMap[6] = '41';
	ansMap[7] = '4e';
	ansMap[8] = '5d';
	ansMap[9] = '5e';
	ansMap[10] = '49';
	ansMap[11] = '4f';
	ansMap[12] = '4c';
	ansMap[13] = '4c';
	ansMap[14] = '4e';
	ansMap[15] = '54';
	ansMap[16] = '50';
	ansMap[17] = '50';
	ansMap[18] = '50';
	ansMap[19] = '50';
	ansMap[20] = '57';
	ansMap[21] = '57';
	ansMap[22] = '56';
	ansMap[23] = '5c';
	ansMap[24] = '5b';
	ansMap[25] = '59';
	ansMap[26] = '5f';
	ansMap[27] = '5d';
	ansMap[28] = '5c';
	ansMap[29] = '5c';
	ansMap[30] = '5d';
	ansMap[31] = '43';
	ansMap[32] = '46';
	ansMap[33] = '42';
	ansMap[34] = '46';
	function HandleSubmit(f, forceSubmit)
	{
  var	numCorrect = 0;
  var	numPossible = 0;
  var	numBlank = 0;
  var	index;
  var	msg;
  var	i;

  f.student_name.value = StripSpaces(f.student_name.value);
  f.student_id.value = StripSpaces(f.student_id.value);
  f.student_email.value = StripSpaces(f.student_email.value);

  FixMTF(f);
  index = 0;
  for (i=0; i < f.length; ++i) {
 	 if (f.elements[i].name.indexOf(":") > 0) {
    if (listMap.charAt(index) == "1") {
   	 listIndex = f.elements[i].selectedIndex;
   	 text = f.elements[i].options[listIndex].value;
    } else {
   	 f.elements[i].value = StripSpaces(f.elements[i].value);
   	 text = f.elements[i].value;
    }

    text = StripSpaces(text);
    if (text.length == 0)
   	 ++numBlank;
    ++index;
 	 }
  }

  if (f.student_name.value == "") {
 	 alert("Student name cannot be blank.");
 	 return(false);
  }

  if (numBlank > 0) {
 	 if (numBlank == 1)
    msg = "1 question";
 	 else
    msg = numBlank + " questions";
 	 if (!confirm("You have not answered " + msg +
    "  Are you sure you want to end the test?"))
    return(false);
  }

  index = 0;
  f.score_details.value = "";
  for (i=0; i < f.length; ++i) {
 	 if (f.elements[i].name.indexOf(":") > 0) {
    if (ansMap[index] == "")
   	 f.score_details.value += "?";
    else {
   	 isCorrect = ScoreAnswer(index, f.elements[i]);
   	 if (isCorrect) {
      ++numCorrect;
      f.score_details.value += " ";
   	 } else
      f.score_details.value += "X";
   	 ++numPossible;
    }
    ++index;
 	 }
  }

  f.score_correct.value = numCorrect;
  f.score_possible.value = numPossible;
  if (numPossible > 0)
 	 f.score_percent.value = Math.round(100.0 * numCorrect / numPossible);
  else
 	 f.score_percent.value = 0;

  if (forceSubmit) {
 	 f.submit();
 	 return(false);
  }
  return(true);
	}

	function ScoreAnswer(answerIndex, answer)
	{
  var	listIndex;
  var	responseText;
  var	answerText;

  if (listMap.charAt(answerIndex) == "1") {
 	 listIndex = answer.selectedIndex;
 	 responseText = answer.options[listIndex].value;
  } else
 	 responseText = answer.value;

  answerText = TranslateAnswer(ansMap[answerIndex], answerIndex);
  if (qtypeMap.charAt(answerIndex) == "5")
 	 return(NumericCompare(responseText, answerText));
  else if (qtypeMap.charAt(answerIndex) == "6")
 	 return(MultiCompare(responseText, answerText));
  else if (responseText.toUpperCase() == answerText.toUpperCase())
 	 return(true);
  else
 	 return(false);
	}

	function TranslateAnswer(s, answerIndex)
	{
  var	value;
  var	newString;
  var	code;
  var	i;

  value = (answerIndex % 31) + 1;
  newString = "";
  for (i=0; i < s.length; i += 2) {
 	 code = parseInt(s.substring(i, i + 2), 16);
 	 newString += String.fromCharCode(code ^ value);
  }

  return(newString);
	}

	function StripSpaces(s)
	{
  var	len;
  var	i;

  len = s.length;
  for (i=len - 1; i >= 0 && s.charAt(i) == " "; --i)
 	 len = i;

  if (len == 0)
 	 s = "";
  else if (len != s.length)
 	 s = s.substring(0, len);

  return(s);
	}

	function NumericCompare(s1, s2)
	{
  var	s1Sign;
  var	s2Sign;
  var	tempString;
  var	decimalCount;
  var	decimalPos;
  var	numToDelete;
  var	len;
  var	ch;
  var	i;

  s1.toUpperCase();
  s2.toUpperCase();
  if (s1 == s2)
 	 return(true);
  else {
 	 s1Sign = 1;
 	 s2Sign = 1;

 	 tempString = "";
 	 for (i=0; i < s1.length; ++i) {
    ch = s1.charAt(i);
    if (ch == "-" && tempString.length == 0)
   	 s1Sign = -1;
    else if ((ch >= "0" && ch <= "9") || ch == ".")
   	 tempString += ch;
 	 }

 	 s1 = tempString;

 	 decimalCount = 0;
 	 decimalPos = -1;
 	 for (i=0; i < s1.length; ++i) {
    if (s1.charAt(i) == '.') {
   	 ++decimalCount;
   	 if (decimalPos < 0)
      decimalPos = i;
    }
 	 }

 	 if (decimalCount == 1 && decimalPos >= 0) {
    len = s1.length;
    for (i=len - 1; i >= decimalPos; --i) {
   	 if (i == decimalPos || s1.charAt(i) == '0')
      len = i;
   	 else
      break;
    }

    if (len < s1.length)
   	 s1 = s1.substring(0, len);
    if (s1.length == 0)
   	 s1 = "0";
 	 }

 	 numToDelete = 0;
 	 for (i=0; i < s1.length; ++i) {
    if (s1.charAt(i) == "0")
   	 ++numToDelete;
    else
   	 break;
 	 }

 	 if (numToDelete > 0) {
    if (numToDelete == s1.length)
   	 --numToDelete;
    if (numToDelete > 0)
   	 s1 = s1.substring(numToDelete);
 	 }

 	 /////////////////////////////////////////////
 	 tempString = "";
 	 for (i=0; i < s2.length; ++i) {
    ch = s2.charAt(i);
    if (ch == "-" && tempString.length == 0)
   	 s2Sign = -1;
    else if ((ch >= "0" && ch <= "9") || ch == ".")
   	 tempString += ch;
 	 }

 	 s2 = tempString;

 	 decimalCount = 0;
 	 decimalPos = -1;
 	 for (i=0; i < s2.length; ++i) {
    if (s2.charAt(i) == '.') {
   	 ++decimalCount;
   	 if (decimalPos < 0)
      decimalPos = i;
    }
 	 }

 	 if (decimalCount == 1 && decimalPos >= 0) {
    len = s2.length;
    for (i=len - 1; i >= decimalPos; --i) {
   	 if (i == decimalPos || s2.charAt(i) == '0')
      len = i;
   	 else
      break;
    }

    if (len < s2.length)
   	 s2 = s2.substring(0, len);
    if (s2.length == 0)
   	 s2 = "0";
 	 }

 	 numToDelete = 0;
 	 for (i=0; i < s2.length; ++i) {
    if (s2.charAt(i) == "0")
   	 ++numToDelete;
    else
   	 break;
 	 }

 	 if (numToDelete > 0) {
    if (numToDelete == s2.length)
   	 --numToDelete;
    if (numToDelete > 0)
   	 s2 = s2.substring(numToDelete);
 	 }

 	 if (s1Sign == s2Sign && s1 == s2)
    return(true);
  }

  return(false);
	}

	function MultiCompare(responseText, answerText)
	{
  var	startIndex;
  var	endIndex;
  var	partialText;

  responseText = responseText.toUpperCase();
  answerText = answerText.toUpperCase();

  startIndex = 0;
  do {
 	 endIndex = answerText.indexOf("\r", startIndex);
 	 if (endIndex < 0)
    partialText = answerText.substring(startIndex);
 	 else
    partialText = answerText.substring(startIndex, endIndex);

 	 if (responseText == partialText)
    return(true);

 	 startIndex = endIndex + 1;
  } while (endIndex > 0);

  return(false);
	}

	function FixMTF(f)
	{
  var	text;
  var	letter;
  var	theList;
  var	listIndex;
  var	number;
  var	i;

  for (i=0; i < f.length; ++i) {
 	 if (f.elements[i].name.indexOf("MTF:") == 0) {
    number = parseInt(f.elements[i].name.substring(4), 10);

    theList = f["MTF-" + number + "-1"];
    if (theList) {
   	 listIndex = theList.selectedIndex;
   	 letter = theList.options[listIndex].value;
    } else
   	 letter = "";

    text = StripSpaces(f["MTF-" + number + "-2"].value);
    if (text == "")
   	 f.elements[i].value = letter;
    else
   	 f.elements[i].value = letter + "," + text;
 	 }
  }
	}

	function AllowReset()
	{
  return(window.confirm("Do you want to clear all of your answers?"));
	}

// -->

Im guessing the ansMap function corresponds to the answer of the question which is on another part of the page, but they are in those random numbers and stuff. Someone want to help? :huh:

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.