
/* ------------------------------------------------------------------------------
(c) Copyright 2001, by M P Docker (http://www.mp-docker.demon.co.uk).

Version 2.0 - last updated 7/4/2001.
------------------------------------------------------------------------------ */

syllabusName = new Array(5)
syllabusName[1]  = "AQA"
syllabusName[2]  = "Edexcel"
syllabusName[3]  = "Nuffield"
syllabusName[4]  = "OCR"
syllabusName[5]  = "Salters"

newLine = "\n"

// getSyllabus()
userName = ""

quizName = new Array()

for (i = 1; i <= 11; i++){	//  N.B. Counting up to 11 is needed by the While loop below.
	quizName[i] = ""
}

key = " 4U5SOew3lCMB.#$%-+(){}[];:,/IY8ad1u*!@^&_=|'><"
key += "TVfWmkEib2t9JDPzF6H7gQnrov0ALZXRpcGxNKyhqjs"

function getSyllabus(){
	validSyllabus = false
	while (validSyllabus == false){	
	
	msg = "Please specify your syllabus" + newLine
	msg += "1 = AQA" + newLine
	msg += "2 = Edexcel" + newLine
	msg += "3 = Nuffield" + newLine
	msg += "4 = OCR" + newLine
	msg += "5 = Salters" + newLine
	
		syllabusIndex = prompt(msg, "")
		validSyllabus = true
		if (syllabusIndex == null){
			alert("You must enter a number between 1 and 5.")
			validSyllabus = false
			continue
		}      
		if (syllabusIndex.length != 1){
			alert("Enter a single digit between 1 and 5.")
			validSyllabus = false
			continue
		}
		if (isValidNumber(syllabusIndex) == false){
			alert("Enter a single digit between 1 and 5.")
			validSyllabus = false
			continue
    		}
	}
}

function generateTitle(){
	xTitle = "<H2 ALIGN=CENTER><HR>" + setTitle + "<HR></H2>"
	document.write(xTitle)
}

function generateTable(){

	//
	//  Work out the number of levels.
	//
	
	numOfQuizzes = 0
	while (quizName[numOfQuizzes + 1] != ""){
		numOfQuizzes++
	}
	//alert("Number of levels = " + numOfQuizzes)
	
	document.clearance.level[0].value = "Quiz titles"
	document.clearance.code[0].value = "1234"
	document.clearance.status[0].value = "Status"
	
	for (i = 1; i <= numOfQuizzes; i++){
		document.clearance.level[i].value = quizName[i]
	}
	
	for (i = numOfQuizzes + 1; i <= 10; i++){
		document.clearance.level[i].value = "---------------------------------------------"
		document.clearance.code[i].value = "----"
		document.clearance.status[i].value = "---------"
	}

	document.clearance.code[1].focus()

}

function checkCodes(){
	getUserName()
	answerString = ""
	score = 0	
	for (var i = 1; i <= numOfQuizzes; i++){
		if (parseInt(document.clearance.code[i].value) == hash(userName + quizName[i])){
			score++
			document.clearance.status[i].value = "correct"
		}
		else{
			document.clearance.status[i].value = "incorrect"
		}
		answerString += '<P><LI>' + document.clearance.code[i].value + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
		answerString +=  quizName[i] + '</LI></P>'
	}
	clearanceCode = hash(userName + setTitle)
	if (score == numOfQuizzes){
		createSummary()
	}
}

function createSummary(){
	TheTimeNow = new Date() 
	astr ='<HTML><HEAD><BR><TITLE>Clearance Certificate</TITLE></HEAD><BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#663399" ALINK="#CC0033">'
	astr +='<CENTER><H2><HR>'
	astr += setTitle + ' - ' + userName + '<HR></H2>'
	astr +='<H3>' + TheTimeNow + ' GMT'
	astr +='<P>Authentication code = ' + clearanceCode 
	astr +='</H3></CENTER><HR><OL>'
	astr +=answerString	 
    astr +='</OL><HR></BODY></HTML>'
        
aPopUp=window.open('','Note','toolbar=yes,location=no,directories=no,menubar=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=no,width=600,height=400')
	ndoc= aPopUp.document    
    ndoc.write(astr)
    ndoc.close()
    self.aNoteWin = aPopUp
}

function hash(x){
	var y = 0
	for (var i = 0; i < x.length; i++){	
		y += 999999*(i+1)*parseInt(key.indexOf(x.charAt(i)))
	}
	return 1000 + (y % 9000)
}

function getUserName(){
	validUserName = false
	while (validUserName == false){	
		userName = prompt("Enter your name, e.g. John Smith.", "")
		validUserName = true
		if (userName == null){
			alert("You must enter a name.")
			validUserName = false
			continue
		}
		if (userName.indexOf(" ") == -1){
			alert("Enter two names with a space between.")
			validUserName = false
			continue
		}       
		if (userName.indexOf(" ") < 2 || userName.lastIndexOf(" ") > userName.length - 3){
			alert("You must enter at least two letters per name.")
			validUserName = false
			continue
		}
		if (isAlphabeticString(userName) == false){
			alert("A name can only contain letters.")
			validUserName = false
			continue
    		}
	}
}

function isAlphabeticString(inString){
	if (inString == null){return false}
	if (inString.length == 0){return false} 
	inString = inString.toLowerCase()
	var refString = " abcdefghijklmnopqrstuvwxyz" 
	for (var i = 0; i < inString.length; i++){
		var tempChar = inString.substring(i, i+1)
    	if (refString.indexOf(tempChar, 0) == -1){return false}
	}
	return true
}

function isValidNumber(inString){
	if (inString == null){return false}
	if (inString.length == 0){return false} 
	var refString = "12345" 
	for (var i = 0; i < inString.length; i++){
		var tempChar = inString.substring(i, i+1)
    	if (refString.indexOf(tempChar, 0) == -1){return false}
	}
	return true
}
