// declare arrays and variables
Span = new Array();
display = new Array();
randomArray = new Array()
blnk = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
br = '<br />'
prgh = "<p style='margin-bottom:4px'>"
startSpan='<span>'
endSpan='</span>'
blnCheck=false

// logic for maximum 15 questions 
MAX_QUESTION=15
if (numQuestion>Question.length) {numQuestion=Question.length}
if (numQuestion>MAX_QUESTION) {numQuestion=MAX_QUESTION}

// generate random permutation
for (i=0; i<numQuestion; i++) {
    blnRandom = false
    while (!blnRandom) {
        randomNum = Math.round(Math.random() * (Question.length-1))
        if (randomArray[randomNum] == null) {
            randomArray[randomNum] = randomNum
            display[i] = randomNum
            blnRandom = true
        }
    }
}
function displayQuestion() {
counter=0

for (i=0; i<numQuestion; i++) {
    temp=convert(Answer[display[i]])
    // initiate innerCounter = 2 because there will be at least 2 choices
    innerCounter=2
    Span[i]=counter+temp

    varhtmlA=blnk + '<input type="radio" value="A" name="q' + i + '" /><span class="answr">A. '
    varhtmlB=blnk + '<input type="radio" value="B" name="q' + i + '" /><span class="answr">B. '

    document.write(prgh + (i+1) + '. ' + Question[display[i]] + '</p>')
    document.writeln(varhtmlA + ChoiceA[display[i]] + endSpan + br)
    document.writeln(varhtmlB + ChoiceB[display[i]] + endSpan + br)

    if (ChoiceC[display[i]] != null) {
        varhtmlC=blnk + '<input type="radio" value="C" name="q' + i + '" /><span class="answr">C. '
        document.writeln(varhtmlC + ChoiceC[display[i]] + endSpan + br)
        innerCounter++

        if (ChoiceD[display[i]] != null) {
            varhtmlD=blnk + '<input type="radio" value="D" name="q' + i + '" /><span class="answr">D. '
            document.writeln(varhtmlD + ChoiceD[display[i]] + endSpan + br)
            innerCounter++

            if (ChoiceE[display[i]] != null) {
                varhtmlE=blnk + '<input type="radio" value="E" name="q' + i + '" /><span class="answr">E. '
                document.writeln(varhtmlE + ChoiceE[display[i]] + endSpan + br)
                innerCounter++
            }
        }
    }
    counter+=innerCounter
}
}
function checkAnswer() {
// store student answer in an array
studentAnswer = new Array()
//x is a variable to keep the count
x=0
if (x++<numQuestion) for (i=0; i<q0.length; i++) { if (q0[i].checked) {studentAnswer[0]=q0[i].value}}
if (x++<numQuestion) for (i=0; i<q1.length; i++) { if (q1[i].checked) {studentAnswer[1]=q1[i].value}}
if (x++<numQuestion) for (i=0; i<q2.length; i++) { if (q2[i].checked) {studentAnswer[2]=q2[i].value}}
if (x++<numQuestion) for (i=0; i<q3.length; i++) { if (q3[i].checked) {studentAnswer[3]=q3[i].value}}
if (x++<numQuestion) for (i=0; i<q4.length; i++) { if (q4[i].checked) {studentAnswer[4]=q4[i].value}}
if (x++<numQuestion) for (i=0; i<q5.length; i++) { if (q5[i].checked) {studentAnswer[5]=q5[i].value}}
if (x++<numQuestion) for (i=0; i<q6.length; i++) { if (q6[i].checked) {studentAnswer[6]=q6[i].value}}
if (x++<numQuestion) for (i=0; i<q7.length; i++) { if (q7[i].checked) {studentAnswer[7]=q7[i].value}}
if (x++<numQuestion) for (i=0; i<q8.length; i++) { if (q8[i].checked) {studentAnswer[8]=q8[i].value}}
if (x++<numQuestion) for (i=0; i<q9.length; i++) { if (q9[i].checked) {studentAnswer[9]=q9[i].value}}
if (x++<numQuestion) for (i=0; i<q10.length; i++) { if (q10[i].checked) {studentAnswer[10]=q10[i].value}}
if (x++<numQuestion) for (i=0; i<q11.length; i++) { if (q11[i].checked) {studentAnswer[11]=q11[i].value}}
if (x++<numQuestion) for (i=0; i<q12.length; i++) { if (q12[i].checked) {studentAnswer[12]=q12[i].value}}
if (x++<numQuestion) for (i=0; i<q13.length; i++) { if (q13[i].checked) {studentAnswer[13]=q13[i].value}}
if (x++<numQuestion) for (i=0; i<q14.length; i++) { if (q14[i].checked) {studentAnswer[14]=q14[i].value}}
// determine the correct answer array
if (!blnCheck) {
    for (i=0; i<document.all.tags('span').length; i++) {    
        if (document.all.tags('span')(i).className=='answr') {
            for (j=0; j<Span.length; j++) {
                Span[j]=Span[j]+i
            }
        i=document.all.tags('span').length
        blnCheck=true
        }
    }
}
numCorrect=0
testscore.innerHTML=''
for (i=0; i<numQuestion; i++) {
    document.all.tags('span')(Span[i]).style.color='maroon'
    document.all.tags('span')(Span[i]).style.fontWeight='bold'
    strTemp='Incorrect'
    if (studentAnswer[i]==Answer[display[i]]) {
        numCorrect++
        document.all.tags('span')(Span[i]).style.color='darkolivegreen'
        strTemp='Correct'
    }
    //show.innerHTML=show.innerHTML + 'Question '+ (i+1) + ': ' + strTemp + br
}
testscore.innerHTML='Your score is ' + Math.round(numCorrect * 100/numQuestion) + '/100';
}
// general function
function convert(string) {
// pre condition string must be A,B,C,D, or E
if (string=='A') { return 0 }
else if (string=='B') { return 1 }
else if (string=='C') { return 2 }
else if (string=='D') { return 3 }
else if (string=='E') { return 4 }
}
function displayButtonWithScore(){
document.write("<div><br /><input class='tryout' type='button' onclick='checkAnswer()' value='Score your test' />&nbsp;&nbsp;&nbsp;<span id='testscore' style='position:relative;top:-5px'></span></div>")
}
