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:
Question
thebigj
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