function score(ex, noItems, code) {
  if (ex.done.value=="0") {
     ex.done.value="1"}
  else {
     ex.message.value="Exercise cannot be resubmitted."
     ex.message2.value="  "
     return true}

  correctAns = new Array ()
  var noCorrect = 0
  incorrectAns = new Array ()
  var noIncorrect = 0
  var selection = 0
  var noButtons = noItems*3
  var mess = "Test  "
  var codeString = code.value
  var key = "abcdefgxyz"
  var keylen = key.length

  for (var j = 0; j < noItems; j++){
     var l=j*3
     var answerInt = codeString.charCodeAt(j)
     var keyInt = key.charCodeAt(j%keylen)
     var answer = String.fromCharCode(answerInt ^ keyInt)

     for (var i = l; i < l+3; i++){
       if (ex.elements[i].checked) {
                  
          if (ex.elements[i].value==answer)  {
             noCorrect=correctAns.push(j+1)
             }
          else {
             noIncorrect=incorrectAns.push(j+1)
             }
          
          selection++
          break
         }
     }
  }
if (selection < noItems) {
     mess = "Please complete the exercise first."
     ex.done.value="0"
     }
else if (noItems==correctAns.length) {
        mess = "All answers are correct (score = 100%)."
     }
else if (noItems==incorrectAns.length) {
        mess = "All answers are incorrect (score = 0%)."
     }
else {
     if (correctAns.length==1) {
        mess = "Correct answer: "
        }
     else {
        mess = "Correct answers: "
        }
     for (var i=0; i<correctAns.length; i++) {
        mess = mess+correctAns[i]+" "
        }
     var mess2 = "Incorrect "
     if (incorrectAns.length==1) {
        mess2 = mess2+"answer: "
        }
     else {
        mess2 = mess2+"answers: "
        }
     for (var i=0; i<incorrectAns.length; i++) {
        mess2 = mess2+incorrectAns[i]+" "
        }
     var s=100*correctAns.length/noItems 
     mess2 = mess2 + "(score = "+s+"%)."
     ex.message2.value = mess2
}
   
ex.message.value = mess
return true

}










