

//<![CDATA[

<!--


function Client(){
//if not a DOM browser, hopeless
	this.min = false; if (document.getElementById){this.min = true;};

	this.ua = navigator.userAgent;
	this.name = navigator.appName;
	this.ver = navigator.appVersion;  

//Get data about the browser
	this.mac = (this.ver.indexOf('Mac') != -1);
	this.win = (this.ver.indexOf('Windows') != -1);

//Look for Gecko
	this.gecko = (this.ua.indexOf('Gecko') > 1);
	if (this.gecko){
		this.geckoVer = parseInt(this.ua.substring(this.ua.indexOf('Gecko')+6, this.ua.length));
		if (this.geckoVer < 20020000){this.min = false;}
	}
	
//Look for Firebird
	this.firebird = (this.ua.indexOf('Firebird') > 1);
	
//Look for Safari
	this.safari = (this.ua.indexOf('Safari') > 1);
	if (this.safari){
		this.gecko = false;
	}
	
//Look for IE
	this.ie = (this.ua.indexOf('MSIE') > 0);
	if (this.ie){
		this.ieVer = parseFloat(this.ua.substring(this.ua.indexOf('MSIE')+5, this.ua.length));
		if (this.ieVer < 5.5){this.min = false;}
	}
	
//Look for Opera
	this.opera = (this.ua.indexOf('Opera') > 0);
	if (this.opera){
		this.operaVer = parseFloat(this.ua.substring(this.ua.indexOf('Opera')+6, this.ua.length));
		if (this.operaVer < 7.04){this.min = false;}
	}
	if (this.min == false){
		alert('Your browser may not be able to handle this page.');
	}
	
//Special case for the horrible ie5mac
	this.ie5mac = (this.ie&&this.mac&&(this.ieVer<6));
}

var C = new Client();

//for (prop in C){
//	alert(prop + ': ' + C[prop]);
//}



//CODE FOR HANDLING NAV BUTTONS AND FUNCTION BUTTONS

//[strNavBarJS]
function NavBtnOver(Btn){
	if (Btn.className != 'NavButtonDown'){Btn.className = 'NavButtonUp';}
}

function NavBtnOut(Btn){
	Btn.className = 'NavButton';
}

function NavBtnDown(Btn){
	Btn.className = 'NavButtonDown';
}
//[/strNavBarJS]

function FuncBtnOver(Btn){
	if (Btn.className != 'FuncButtonDown'){Btn.className = 'FuncButtonUp';}
}

function FuncBtnOut(Btn){
	Btn.className = 'FuncButton';
}

function FuncBtnDown(Btn){
	Btn.className = 'FuncButtonDown';
}

function FocusAButton(){
	if (document.getElementById('CheckButton1') != null){
		document.getElementById('CheckButton1').focus();
	}
	else{
		if (document.getElementById('CheckButton2') != null){
			document.getElementById('CheckButton2').focus();
		}
		else{
			document.getElementsByTagName('button')[0].focus();
		}
	}
}




//CODE FOR HANDLING DISPLAY OF POPUP FEEDBACK BOX

var topZ = 1000;

function ShowMessage(Feedback){
	var Output = Feedback + '<br /><br />';
	document.getElementById('FeedbackContent').innerHTML = Output;
	var FDiv = document.getElementById('FeedbackDiv');
	topZ++;
	FDiv.style.zIndex = topZ;
	FDiv.style.top = TopSettingWithScrollOffset(30) + 'px';
//IE can't focus a hidden div; Moz needs to focus before display to avoid jumping
	if (C.gecko){
		document.getElementById('FeedbackOKButton').focus();
	}
	FDiv.style.display = 'block';

	ShowElements(false, 'input');
	ShowElements(false, 'select');
	ShowElements(false, 'object');
	if (C.ie){
		document.getElementById('FeedbackOKButton').focus();
	}
	
//
}

function ShowElements(Show, TagName){
//Special for IE bug -- hide all the form elements that will show through the popup
	if (C.ie){
		var Els = document.getElementsByTagName(TagName);
		for (var i=0; i<Els.length; i++){
			if (Show == true){
				Els[i].style.display = 'inline';
			}
			else{
				Els[i].style.display = 'none';
			}
		}
	} 
}

function HideFeedback(){
	document.getElementById('FeedbackDiv').style.display = 'none';
	ShowElements(true, 'input');
	ShowElements(true, 'select');
	ShowElements(true, 'object');
	if (Finished == true){
		Finish();
	}
}


//GENERAL UTILITY FUNCTIONS AND VARIABLES

//PAGE DIMENSION FUNCTIONS
function PageDim(){
//Get the page width and height
	this.W = 600;
	this.H = 400;
	this.W = document.getElementsByTagName('body')[0].clientWidth;
	this.H = document.getElementsByTagName('body')[0].clientHeight;
}

var pg = null;

function GetPageXY(El) {
	var XY = {x: 0, y: 0};
	while(El){
		XY.x += El.offsetLeft;
		XY.y += El.offsetTop;
		El = El.offsetParent;
	}
	return XY;
}

function GetScrollTop(){
	if (document.documentElement && document.documentElement.scrollTop){
		return document.documentElement.scrollTop;
	}
	else{
		if (document.body){
 			return document.body.scrollTop;
		}
		else{
			return window.pageYOffset;
		}
	}
}

function GetViewportHeight(){
	if (window.innerWidth){
		return window.innerWidth;
	}
	else{
		return document.getElementsByTagName('body')[0].clientHeight;
	}
}

function TopSettingWithScrollOffset(TopPercent){
	var T = Math.floor(GetViewportHeight() * (TopPercent/100));
	return GetScrollTop() + T; 
}

//CODE FOR AVOIDING LOSS OF DATA WHEN BACKSPACE KEY INVOKES history.back()
var InTextBox = false;

function SuppressBackspace(e){ 
	if (InTextBox == true){return;}
	if (C.ie) {
		thisKey = window.event.keyCode;
	}
	else {
		thisKey = e.keyCode;
	}

	var Suppress = false;

	if (thisKey == 8) {
		Suppress = true;
	}

	if (Suppress == true){
		if (C.ie){
			window.event.returnValue = false;	
			window.event.cancelBubble = true;
		}
		else{
			e.preventDefault();
		}
	}
}

if (C.ie){
	document.attachEvent('onkeydown',SuppressBackspace);
	window.attachEvent('onkeydown',SuppressBackspace);
}
else{
	window.addEventListener('keypress',SuppressBackspace,false);
}

function ReduceItems(InArray, ReduceToSize){
	var ItemToDump=0;
	var j=0;
	while (InArray.length > ReduceToSize){
		ItemToDump = Math.floor(InArray.length*Math.random());
		InArray.splice(ItemToDump, 1);
	}
}

function Shuffle(InArray){
	Temp = new Array();
	var Len = InArray.length;

	var j = Len;

	for (var i=0; i<Len; i++){
		Temp[i] = InArray[i];
	}

	for (i=0; i<Len; i++){
		Num = Math.floor(j  *  Math.random());
		InArray[i] = Temp[Num];

		for (var k=Num; k < j; k++) {
			Temp[k] = Temp[k+1];
		}
		j--;
	}
	return InArray;
}

function WriteToInstructions(Feedback) {
//	Feedback = '<span class="FeedbackText">' + Feedback + '</span>';
	document.getElementById('InstructionsDiv').innerHTML = Feedback;

}




function EscapeDoubleQuotes(InString){
	return InString.replace(/"/g, '&quot;')
}

function FocusAButton(){
	if (document.getElementById('CheckButton1') != null){
		document.getElementById('CheckButton1').focus();
	}
	else{
		document.getElementsByTagName('button')[0].focus();
	}
}

function TrimString(InString){
        var x = 0;

        if (InString.length != 0) {
                while ((InString.charAt(InString.length - 1) == '\u0020') || (InString.charAt(InString.length - 1) == '\u000A') || (InString.charAt(InString.length - 1) == '\u000D')){
                        InString = InString.substring(0, InString.length - 1)
                }

                while ((InString.charAt(0) == '\u0020') || (InString.charAt(0) == '\u000A') || (InString.charAt(0) == '\u000D')){
                        InString = InString.substring(1, InString.length)
                }

                while (InString.indexOf('  ') != -1) {
                        x = InString.indexOf('  ')
                        InString = InString.substring(0, x) + InString.substring(x+1, InString.length)
                 }

                return InString;
        }

        else {
                return '';
        }
}

function FindLongest(InArray){
	if (InArray.length < 1){return -1;}

	var Longest = 0;
	for (var i=1; i<InArray.length; i++){
		if (InArray[i].length > InArray[Longest].length){
			Longest = i;
		}
	}
	return Longest;
}

//UNICODE CHARACTER FUNCTIONS
function IsCombiningDiacritic(CharNum){
	var Result = (((CharNum >= 0x0300)&&(CharNum <= 0x370))||((CharNum >= 0x20d0)&&(CharNum <= 0x20ff)));
	Result = Result || (((CharNum >= 0x3099)&&(CharNum <= 0x309a))||((CharNum >= 0xfe20)&&(CharNum <= 0xfe23)));
	return Result;
}

function IsCJK(CharNum){
	return ((CharNum >= 0x3000)&&(CharNum < 0xd800));
}

//SETUP FUNCTIONS
//BROWSER WILL REFILL TEXT BOXES FROM CACHE IF NOT PREVENTED
function ClearTextBoxes(){
	var NList = document.getElementsByTagName('input');
	for (var i=0; i<NList.length; i++){
		if (NList[i].id.indexOf('Guess') > -1){
			NList[i].value = '';
		}
		if (NList[i].id.indexOf('Chk') > -1){
			NList[i].checked = '';
		}
	}
}

//EXTENSION TO ARRAY OBJECT
function Array_IndexOf(Input){
	var Result = -1;
	for (var i=0; i<this.length; i++){
		if (this[i] == Input){
			Result = i;
		}
	}
	return Result;
}
Array.prototype.indexOf = Array_IndexOf;

//IE HAS RENDERING BUG WITH BOTTOM NAVBAR
function RemoveBottomNavBarForIE(){
	if ((C.ie)&&(document.getElementById('Reading') != null)){
		if (document.getElementById('BottomNavBar') != null){
			document.getElementById('TheBody').removeChild(document.getElementById('BottomNavBar'));
		}
	}
}




//HOTPOTNET-RELATED CODE

var HPNStartTime = (new Date()).getTime();
var SubmissionTimeout = 30000;
var Detail = ''; //Global that is used to submit tracking data

function Finish(){
//If there's a form, fill it out and submit it
	if (document.store != null){
		Frm = document.store;
		Frm.starttime.value = HPNStartTime;
		Frm.endtime.value = (new Date()).getTime();
		Frm.mark.value = Score;
		Frm.detail.value = Detail;
		Frm.submit();
	}
}



//JQUIZ CORE JAVASCRIPT CODE

var CurrQNum = 0;
var CorrectIndicator = ':-)';
var IncorrectIndicator = 'X';
var YourScoreIs = 'Your score is ';
var ContinuousScoring = true;
var CorrectFirstTime = 'Questions answered correctly first time: ';
var ShowCorrectFirstTime = false;
var ShuffleQs = true;
var ShuffleAs = true;
var DefaultRight = 'Correct!';
var DefaultWrong = 'Sorry! Try again.';
var QsToShow = 10;
var Score = 0;
var Finished = false;
var Qs = null;
var QArray = new Array();
var ShowingAllQuestions = false;
var ShowAllQuestionsCaption = 'Show all questions';
var ShowOneByOneCaption = 'Show questions one by one';
var State = new Array();
var Feedback = '';

//The following variable can be used to add a message explaining
//that the question is finished, so no further marking will take 
//place. 
var strQuestionFinished = '';

function CompleteEmptyFeedback(){
	var QNum, ANum;
	for (QNum=0; QNum<I.length; QNum++){
//Only do this if not multi-select
		if (I[QNum][2] != '3'){
  		for (ANum = 0; ANum<I[QNum][3].length; ANum++){
  			if (I[QNum][3][ANum][1].length < 1){
  				if (I[QNum][3][ANum][2] > 0){
  					I[QNum][3][ANum][1] = DefaultRight;
  				}
  				else{
  					I[QNum][3][ANum][1] = DefaultWrong;
  				}
  			}
  		}
		}
	}
}

function SetUpQuestions(){
	var AList = new Array(); 
	var QList = new Array();
	var i, j;
	Qs = document.getElementById('Questions');
	while (Qs.getElementsByTagName('li').length > 0){
		QList.push(Qs.removeChild(Qs.getElementsByTagName('li')[0]));
	}
	var DumpItem = 0;
	while (QsToShow < QList.length){
		DumpItem = Math.floor(QList.length*Math.random());
		for (j=DumpItem; j<(QList.length-1); j++){
			QList[j] = QList[j+1];
		}
		QList.length = QList.length-1;
	}
	if (ShuffleQs == true){
		QList = Shuffle(QList);
	}
	if (ShuffleAs == true){
		var As;
		for (var i=0; i<QList.length; i++){
			As = QList[i].getElementsByTagName('ol')[0];
			if (As != null){
  			AList.length = 0;
				while (As.getElementsByTagName('li').length > 0){
					AList.push(As.removeChild(As.getElementsByTagName('li')[0]));
				}
				AList = Shuffle(AList);
				for (j=0; j<AList.length; j++){
					As.appendChild(AList[j]);
				}
			}
		}
	}
	
	for (i=0; i<QList.length; i++){
		Qs.appendChild(QList[i]);
		QArray[QArray.length] = QList[i];
	}

//Show the first item
	QArray[0].style.display = '';
	
//Now hide all except the first item
	for (i=1; i<QArray.length; i++){
		QArray[i].style.display = 'none';
	}		
	SetQNumReadout();
}

function ChangeQ(ChangeBy){
	if (((CurrQNum + ChangeBy) < 0)||((CurrQNum + ChangeBy) >= QArray.length)){return;}
	QArray[CurrQNum].style.display = 'none';
	CurrQNum += ChangeBy;
	QArray[CurrQNum].style.display = '';
	SetQNumReadout();
//if there's a textbox, set the focus in it
	if (QArray[CurrQNum].getElementsByTagName('input')[0] != null){
		QArray[CurrQNum].getElementsByTagName('input')[0].focus();
	}
}

function SetQNumReadout(){
	document.getElementById('QNumReadout').innerHTML = (CurrQNum+1) + ' / ' + QArray.length;
}

I=new Array();
I[0]=new Array();I[0][0]=100;
I[0][1]='';
I[0][2]='0';
I[0][3]=new Array();
I[0][3][0]=new Array('The breaking of the Japanese cipher codes.','Right!  The breaking of both the Japanese Naval and Diplomatic codes gave the American Navy the general plans of the Japanese forces.',1,100,1);
I[0][3][1]=new Array('The breaking of the German enigma code.','Sorry.  This was a major triumph for British intelligence during World War II.',0,0,1);
I[0][3][2]=new Array('The breaking of Russian diplomatic codes.','Sorry.  This never happened.',0,0,1);
I[0][3][3]=new Array('The discovery of the Japanese nuclear program.','Nope.  The Japanese did not have a nuclear weapons program.',0,0,1);
I[0][3][4]=new Array('The discovery of the Japanese lines of supply to and from Java.','Nope.  These routes were known not because of intelligence work, but because of geographical restrictions between Japan and Java.  There were only a limited number of sea routes available.',0,0,1);
I[1]=new Array();I[1][0]=100;
I[1][1]='';
I[1][2]='0';
I[1][3]=new Array();
I[1][3][0]=new Array('Raw Information','Correct!  The process of collecting material only nets you information.  Only when it is processed does it become intelligence.',1,100,1);
I[1][3][1]=new Array('Raw Intelligence','Nope.  The term "Raw Intelligence" is not one that is used.',0,0,1);
I[1][3][2]=new Array('Political Intelligence','Sorry.  More than just collection needs to go on before you can call it intelligence.',0,0,1);
I[1][3][3]=new Array('Military Intelligence','Sorry.  More than just collection needs to go on before you can call it intelligence.',0,0,1);
I[1][3][4]=new Array('Espionage','Nope.  Espionage is the attempt to obtain information about a foreign government in secret.',0,0,1);
I[2]=new Array();I[2][0]=100;
I[2][1]='';
I[2][2]='0';
I[2][3]=new Array();
I[2][3][0]=new Array('Counterintelligence','Right.  Also known as Security, it is designed to prevent foreign countries from getting vital diplomatic, economic, and industrial information as well as military information of intelligence value.',1,100,1);
I[2][3][1]=new Array('Intelligence','Sorry.  The term "Intelligence" refers to information of interest to a nation or military force that has been obtained and processed.',0,0,1);
I[2][3][2]=new Array('Espionage','Nope.  Espionage is the attempt to obtain information about a foreign government in secret.',0,0,1);
I[2][3][3]=new Array('Processing','Sorry.  Processing is one of the steps of the Intelligence Cycle.',0,0,1);
I[2][3][4]=new Array('Defensive Intelligence','Nope.  There is no such term as Defensive Intelligence.',0,0,1);
I[3]=new Array();I[3][0]=100;
I[3][1]='';
I[3][2]='0';
I[3][3]=new Array();
I[3][3][0]=new Array('Espionage','Correct.  Espionage is the attempt to obtain information about a foreign government in secret.  It may or may not be a part of the Collection step in the Intelligence Cycle.',1,100,1);
I[3][3][1]=new Array('Processing','Sorry.  This step of the intelligence cycle involves the conversion of the information flowing into the system from all sources into a form more suitable for producing finished intelligence.',0,0,1);
I[3][3][2]=new Array('Analysis and Production','Sorry.  This is the step of the cycle that coverts the basic information into finished intelligence.',0,0,1);
I[3][3][3]=new Array('Dissemination','Nope.  Dissemination is the last step of the cycle, and involves the distribution of the finished intelligence to the consumers whose needs initiated the process.',0,0,1);
I[3][3][4]=new Array('Collection','Nope.  Collection is the step of the cycle that involves the gathering of raw information from which finished intelligence will be produced.',0,0,1);
I[4]=new Array();I[4][0]=100;
I[4][1]='';
I[4][2]='0';
I[4][3]=new Array();
I[4][3][0]=new Array('Processing','Right!  The data converted includes written and verbal communications as well as electronic and photographic information.',1,100,1);
I[4][3][1]=new Array('Analysis and Production','Sorry.  This is the step of the cycle that coverts the basic information into finished intelligence.  Before that can be done, however, it needs to already be in a more suitable form.',0,0,1);
I[4][3][2]=new Array('Dissemination','Sorry.  Dissemination is the last step of the cycle, and involves the distribution of the finished intelligence to the consumers whose needs initiated the process.',0,0,1);
I[4][3][3]=new Array('Planning and Direction','Nope.  This is the first step of the cycle, and involves the management of the entire intelligence effort from identification of the need for data to the final delivery of an intelligence product.',0,0,1);
I[4][3][4]=new Array('Collection','Nope.  Collection is the step of the cycle that involves the gathering of raw information from which finished intelligence will be produced.',0,0,1);
I[5]=new Array();I[5][0]=100;
I[5][1]='';
I[5][2]='0';
I[5][3]=new Array();
I[5][3][0]=new Array('Covert Sources','Correct!  Agents and spies are sent out to gather information "covertly" (in secret) when the required information cannot be obtained otherwise.',1,100,1);
I[5][3][1]=new Array('Open Sources','Sorry.  Open sources include such things as foreign broadcasts, newspapers, periodicals and books.  They aren\'t restricted, so you don\'t need spies or agents.',0,0,1);
I[5][3][2]=new Array('Technical Collection','Sorry.  Technical collection refers to the use of surveillance electronics and satellite photography to gain intelligence.',0,0,1);
I[5][3][3]=new Array('Diplomatic Sources','Nope.  Diplomatic intelligence sources provide information without the need for agents and spies.',0,0,1);
I[5][3][4]=new Array('Counterintelligence Sources','Nope.  Counterintelligence is the protection of our nation\'s secrets and while agents and spies are sometimes involved, they are usually the enemy\'s agents and not ours.',0,0,1);
I[6]=new Array();I[6][0]=100;
I[6][1]='';
I[6][2]='0';
I[6][3]=new Array();
I[6][3][0]=new Array('MILINT','Right1  There is no such term in the intelligence field.',1,100,1);
I[6][3][1]=new Array('COMINT','Sorry.  COMINT stands for communications intelligence, and refers to the intelligence information gathered by intercepting enemy radio, telephone and other electronic communications.',0,0,1);
I[6][3][2]=new Array('HUMINT','Sorry.  HUMINT stands for human intelligence, and it is the type of intelligence gathered from such sources as defectors and captured enemy personnel.',0,0,1);
I[6][3][3]=new Array('ELINT','Nope.  ELINT stands for electronic intelligence, and refers to the gathering of intelligence from the study of the electromagnetic signals that an enemy\'s equipment gives off.',0,0,1);
I[6][3][4]=new Array('PHOTOINT','Nope.  PHOTOINT stands for photo intelligence, and this is the used of intelligence information gathered via photograph from a wide-variety of platforms.',0,0,1);
I[7]=new Array();I[7][0]=100;
I[7][1]='';
I[7][2]='0';
I[7][3]=new Array();
I[7][3][0]=new Array('High-altitude','Correct!  These aircraft were designed to fly at such high altitudes that the antiair missile systems of the country they were flying over could not reach them.',1,100,1);
I[7][3][1]=new Array('High-speed','Sorry.  While some of these spy planes, such as the SR-71 Blackbird, were very fast, the U-2 and many others were not.  They did not rely on their speed to save them.',0,0,1);
I[7][3][2]=new Array('Stealth Technology','Sorry.  The U-2 was built well before the development of stealth technology.',0,0,1);
I[7][3][3]=new Array('The cover of darkness','Nope.  Light or darkness do not matter to enemy air defense systems using radar to acquire, track and shoot down aircraft.',0,0,1);
I[7][3][4]=new Array('Electromagnetic Radar Jamming Systems','Nope.  These type of systems could not have provided adequate protection.',0,0,1);
I[8]=new Array();I[8][0]=100;
I[8][1]='';
I[8][2]='0';
I[8][3]=new Array();
I[8][3][0]=new Array('Intelligence satellites.','Right!  Satellites can either be permanent positioned over critical areas of the Earth or can be moved to critical areas should the need arise.  The remain up and active at all times, and therefore have greatly reduced the need for aircraft overflights to obtain critical intelligence information.',1,100,1);
I[8][3][1]=new Array('Better Communications Intelligence (COMINT)','Sorry.  COMINT methods have indeed improved over the years and this has reduced the needs for spy planes to acquire this type of information, but it is not the major reason for the reduction in spy plane flights.',0,0,1);
I[8][3][2]=new Array('Stealth technology','Nope.  Stealth technology only helps to hide aircraft from enemy detection systems.  It is not something that has reduced the need for the flights.',0,0,1);
I[8][3][3]=new Array('Better forms of stand-off intelligence collection aircraft.','Sorry.  While there have been better and more capable stand-off aircraft and technologies introduced, this isn\'t the major reason for the reduction in spy plane flights.',0,0,1);
I[8][3][4]=new Array('The need for spy plane flights has not been reduced at all.','Nope.  The introduction of one of the other listed items has greatly reduced the need for spy plane flights, but not completely eliminated it.',0,0,1);
I[9]=new Array();I[9][0]=100;
I[9][1]='';
I[9][2]='0';
I[9][3]=new Array();
I[9][3][0]=new Array('Predator','Right!  Predators have been used extensively by all of the branches of the U.S. Military since the mid-1990\'s.',1,100,1);
I[9][3][1]=new Array('U-2','Sorry.  The U-2 is an example of a manned intelligence-gathering aircraft.',0,0,1);
I[9][3][2]=new Array('SR-71 Blackbird','Sorry.  The Blackbird is an example of a manned intelligence-gathering aircraft.',0,0,1);
I[9][3][3]=new Array('F/A-18 Hornet','Nope.  The F/A-18 is the current U.S. Navy short-range fighter/attack aircraft and has both single-seat and dual-seat models.',0,0,1);
I[9][3][4]=new Array('TARPS','Nope.  TARPS stands for Tactical Reconnaissance Pod, and is an intelligence-gathering pod carried by F-14 aircraft.',0,0,1);
I[10]=new Array();I[10][0]=100;
I[10][1]='';
I[10][2]='0';
I[10][3]=new Array();
I[10][3][0]=new Array('The director of the Central Intelligence Agency (CIA)','Right!  This person\'s official title is the Director of Central Intelligence (DCI) and he or she is also the main advisor to the National Security Council (NSC).',1,100,1);
I[10][3][1]=new Array('The director of the National Security Council (NSC)','Sorry.  There is no "director" of the NSC.  The NSC is made up of the President, Vice President, the Secretary of Defense and the Secretary of State.',0,0,1);
I[10][3][2]=new Array('The director of the Federal Bureau of Investigation (FBI)','Sorry.  While the director of the FBI is an important member of the national intelligence community, he or she does not have this responsibility.',0,0,1);
I[10][3][3]=new Array('The director of the Defense Intelligence Agency (DIA)','Nope.  This agency provides all-source intelligence to the U.S. armed services.',0,0,1);
I[10][3][4]=new Array('The director of the National Reconnaissance Office)','Nope.  This agency coordinates spaceborne reconnaissance needs for the U.S. government.',0,0,1);
I[11]=new Array();I[11][0]=100;
I[11][1]='';
I[11][2]='0';
I[11][3]=new Array();
I[11][3][0]=new Array('The Office of Homeland Security','Correct!  Organized just after the events of 911, this agency is the focal point for all anti-terrorism efforts within the United States.',1,100,1);
I[11][3][1]=new Array('The Federal Bureau of Investigation','Sorry.  The FBI is certainly a main player in this arena, but this is not the FBI\'s primary mission.',0,0,1);
I[11][3][2]=new Array('The Central Intelligence Agency','Sorry.  The CIA\'s primary mission is to coordinate the overall intelligence-gathering activities of all of the other members of the intelligence community.',0,0,1);
I[11][3][3]=new Array('The National Security Council','Nope.  The NSC is made up the President, Vice President, the Secretary of Defense and the Secretary of State and has a primary mission of setting the long-term national strategy of the U.S.',0,0,1);
I[11][3][4]=new Array('The Defense Investigative Agency','Nope.  The DIA\'s primary mission is to provide all-source intelligence to the U.S. armed services.',0,0,1);
I[12]=new Array();I[12][0]=100;
I[12][1]='';
I[12][2]='0';
I[12][3]=new Array();
I[12][3][0]=new Array('The National Security Council','Right!  The NSC is made up the President, Vice President, the Secretary of Defense and the Secretary of State and has a primary mission of setting the long-term national strategy of the U.S.',1,100,1);
I[12][3][1]=new Array('The National Imagery and Mapping Agency (NIMA)','Sorry.  This important agency provides the imagery and mapping needs of the U.S. Government and falls under the Department of Defense.',0,0,1);
I[12][3][2]=new Array('The Naval Criminal Investigative Service','Nope.  As the name would imply, this agency works for the U.S. Navy and the Navy, of course, works for the DOD.',0,0,1);
I[12][3][3]=new Array('The National Security Agency','Sorry.  The NSA plans, coordinates, directs, and performs signals intelligence and information security functions in support of both defense and nondefense U.S. government activities.',0,0,1);
I[12][3][4]=new Array('The National Reconnaissance Office','Nope.  The NRO falls under the Department of Defense and has the mission of coordinating the spaceborne reconnaissance needs of the U.S. Government.',0,0,1);
I[13]=new Array();I[13][0]=100;
I[13][1]='';
I[13][2]='0';
I[13][3]=new Array();
I[13][3][0]=new Array('The Defense Intelligence Agency','Right!  The DIA also concentrates on warning of impending crises, support to peacekeeping operations, maintenance of databases on foreign military organizations and their equipment, and, as necessary, support to UN operations and U.S. allies.',1,100,1);
I[13][3][1]=new Array('The National Security Agency','Sorry.  The NSA plans, coordinates, directs, and performs signals intelligence and information security functions in support of both defense and nondefense U.S. government activities.',0,0,1);
I[13][3][2]=new Array('The National Reconnaissance Office','Sorry.  The NRO primary mission is the coordination of spaceborne reconnaissance needs of the U.S. government.',0,0,1);
I[13][3][3]=new Array('The National Imagery and Mapping Agency','Nope.  This important agency provides the imagery and mapping needs of the U.S. Government and falls under the Department of Defense.',0,0,1);
I[13][3][4]=new Array('The Defense Investigative Service','Nope.  The DIS has a main mission of the coordination of counterespionage efforts within the Department of Defense.',0,0,1);
I[14]=new Array();I[14][0]=100;
I[14][1]='';
I[14][2]='0';
I[14][3]=new Array();
I[14][3][0]=new Array('The National Reconnaissance Office','Correct!  It accomplishes this mission through research, development, acquisition, and operation of the nation\'s intelligence satellites.',1,100,1);
I[14][3][1]=new Array('The National Security Agency','The NSA plans, coordinates, directs, and performs signals intelligence and information security functions in support of both defense and nondefense U.S. government activities.',0,0,1);
I[14][3][2]=new Array('The National Imagery and Mapping Agency','This important agency provides the imagery and mapping needs of the U.S. Government and falls under the Department of Defense.',0,0,1);
I[14][3][3]=new Array('The Defense Intelligence Agency','Nope.  This agency provides all-source intelligence to the U.S. armed services.',0,0,1);
I[14][3][4]=new Array('The Office of Naval Intelligence','Sorry.  ONI is responsible for intelligence activities within the U.S. Navy only.',0,0,1);
I[15]=new Array();I[15][0]=100;
I[15][1]='';
I[15][2]='0';
I[15][3]=new Array();
I[15][3][0]=new Array('The defense attach\u00E9.','Right!  He or she is responsible for the supervision and coordination of all attach&#x00E9;s assigned.',1,100,1);
I[15][3][1]=new Array('The military attach\u00E9.','Sorry.  All armed forces attach\u00E9s at a diplomatic post are called military attach\u00E9s.',0,0,1);
I[15][3][2]=new Array('The U.S. attach\u00E9.','Sorry.  There is no such title.',0,0,1);
I[15][3][3]=new Array('The consular attach\u00E9.','Nope.  There is no such title.',0,0,1);
I[15][3][4]=new Array('The ambassador\'s attach\u00E9.','Nope.  There is no such title.',0,0,1);
I[16]=new Array();I[16][0]=100;
I[16][1]='';
I[16][2]='0';
I[16][3]=new Array();
I[16][3][0]=new Array('The Naval Criminal Investigative Service.','Right!  NCIS concentrates its efforts solely on criminal and security investigations.',1,100,1);
I[16][3][1]=new Array('The Office of Naval Intelligence','Sorry.  ONI is responsible for intelligence activities within the U.S. Navy.',0,0,1);
I[16][3][2]=new Array('The Naval Reconnaissance Office','Sorry.  There is no such agency.  You may be thinking of the National Reconnaissance Office.',0,0,1);
I[16][3][3]=new Array('The Naval Intelligence Agency','Nope.  There is no such agency.  You may be thinking of the National Intelligence Agency.',0,0,1);
I[16][3][4]=new Array('The Naval Security Agency','Nope.  There is no such agency.  You may be thinking of the National Security Agency.',0,0,1);
I[17]=new Array();I[17][0]=100;
I[17][1]='';
I[17][2]='0';
I[17][3]=new Array();
I[17][3][0]=new Array('These are all common reasons for someone to become a spy.','Right.  These are the primary four reasons that people become spies.',1,100,1);
I[17][3][1]=new Array('Hatred for another country','Nope.  This is just one of several reasons people become spies.',0,0,1);
I[17][3][2]=new Array('Need for money','Sorry.  This is just one of several reasons people become spies.',0,0,1);
I[17][3][3]=new Array('Fear','Nope.  Fear is often a motivator.  Either fear for personal safety or, more commonly, fear for his or her relatives.',0,0,1);
I[17][3][4]=new Array('Love of their country','Sorry.  This is just one of several reasons people become spies.',0,0,1);
I[18]=new Array();I[18][0]=100;
I[18][1]='';
I[18][2]='0';
I[18][3]=new Array();
I[18][3][0]=new Array('The Security Manual','Correct!  This important document is an important part of the overall naval intelligence effort.',1,100,1);
I[18][3][1]=new Array('The Intelligence Manual','Sorry.  There is no publication by this name.',0,0,1);
I[18][3][2]=new Array('The CNO Counterintelligence Directive','Sorry.  There is no publication by this name.',0,0,1);
I[18][3][3]=new Array('The Office of Naval Intelligence Publication','Nope.  There is no publication by this name.',0,0,1);
I[18][3][4]=new Array('The Classified Materials Manual','Nope.  There is no publication by this name.',0,0,1);
I[19]=new Array();I[19][0]=100;
I[19][1]='';
I[19][2]='0';
I[19][3]=new Array();
I[19][3][0]=new Array('Compromised','Right!  This is another way to say "lost its secrecy".',1,100,1);
I[19][3][1]=new Array('Salvaged','Sorry.  Salvage is just another way for the enemy to get their hands on this intelligence, not the term used to describe it once the enemy has had a chance to get it.',0,0,1);
I[19][3][2]=new Array('Captured','Sorry.  The material may or may not have been captured, but this isn\'t the term used to describe that material after the enemy has had a chance to get their hands on it.',0,0,1);
I[19][3][3]=new Array('Stolen','Nope.  The material may or may not be stolen, but this isn\'t the term used to describe that material after the enemy has had a chance to get their hands on it.',0,0,1);
I[19][3][4]=new Array('Open Source','Nope.  Open Source material is material that is not classified and freely available to everyone.',0,0,1);
I[20]=new Array();I[20][0]=100;
I[20][1]='';
I[20][2]='0';
I[20][3]=new Array();
I[20][3][0]=new Array('Encryption','Correct.  Encryption is intended to be a method to lessen the chances that classified material could be compromised.',1,100,1);
I[20][3][1]=new Array('Salvage','Sorry.  When a ship, submarine or aircraft are lost at sea, oftentimes an enemy will attempt to salvage this equipment to gain access to classified materials.',0,0,1);
I[20][3][2]=new Array('Photography','Nope.  Photography is a time-tested method of an enemy to obtain sensitive information.',0,0,1);
I[20][3][3]=new Array('Cryptanalysis','Sorry.  This means the breaking of codes, and is something that the enemy attempts to do all of the time.',0,0,1);
I[20][3][4]=new Array('Carelessness','Nope.  Carelessness of personnel with the handling and the proper destruction of classified material has led to this material falling into enemy hands in the past.',0,0,1);
I[21]=new Array();I[21][0]=100;
I[21][1]='';
I[21][2]='0';
I[21][3]=new Array();
I[21][3][0]=new Array('The National Counterintelligence Center (NCC)','Right!  The NCC maintains an extensive data base on foreign intelligence activity, especially pertaining to industrial espionage within the U.S.',1,100,1);
I[21][3][1]=new Array('The Central Intelligence Agency (CIA)','Sorry.  Although the CIA is one of the agencies whose counterintelligence activities are coordinated by this agency.',0,0,1);
I[21][3][2]=new Array('The Federal Bureau of Investigation (FBI)','Nope.  Although the FBI is one of the agencies whose counterintelligence activities are coordinated by this agency.',0,0,1);
I[21][3][3]=new Array('The Defense Intelligence Agency (DIA)','Sorry.  Although the DIA is one of the agencies whose counterintelligence activities are coordinated by this agency.',0,0,1);
I[21][3][4]=new Array('The Homeland Security Department (HSD)','Nope.  This is a cabinet-level Department and not an intelligence agency.',0,0,1);
I[22]=new Array();I[22][0]=100;
I[22][1]='';
I[22][2]='0';
I[22][3]=new Array();
I[22][3][0]=new Array('Secret','Right!  Top Secret material would cause "Great" or "Grave" damage and Confidential materials would be considered "Harmful".',1,100,1);
I[22][3][1]=new Array('Top Secret','Sorry.  Top Secret material, if released to a potential or actual enemy, would cause grave or great damage to the nation.',0,0,1);
I[22][3][2]=new Array('Confidential','Sorry.  Confidential material would just be considered "harmful" to the nation if released.',0,0,1);
I[22][3][3]=new Array('Official Use Only','Nope.  While there is such a designation for U.S. material, it is not considered a "classification" and would not result in serious damage if released.',0,0,1);
I[22][3][4]=new Array('Classified','Nope.  Material is classified if it falls into one of three categories of harm to the nation if revealed.  The question asked which one of the three would cause serious damage if revealed.',0,0,1);
I[23]=new Array();I[23][0]=100;
I[23][1]='';
I[23][2]='0';
I[23][3]=new Array();
I[23][3][0]=new Array('Top Secret','Correct!  This is the highest level of classification.',1,100,1);
I[23][3][1]=new Array('Secret','Sorry.  Secret material, if released to a potential or actual enemy, would cause "serious" damage to the nation.',0,0,1);
I[23][3][2]=new Array('Confidential','Sorry.  Confidential material would just be considered "harmful" to the nation if released.',0,0,1);
I[23][3][3]=new Array('Official Use Only','Nope.  While there is such a designation for U.S. material, it is not considered a "classification" and would not result in grave or great damage if released.',0,0,1);
I[23][3][4]=new Array('Classified','Nope.  Material is classified if it falls into one of three categories of harm to the nation if revealed.  The question asked which one of the three would cause grave or great damage if revealed.',0,0,1);
I[24]=new Array();I[24][0]=100;
I[24][1]='';
I[24][2]='0';
I[24][3]=new Array();
I[24][3][0]=new Array('The person or agency that originated the material.','Correct!  There are so many classified documents and other materials produced on a daily basis that it has to be up to the originator of the material to make this call.',1,100,1);
I[24][3][1]=new Array('The National Counterintelligence Center (NCC).','Sorry.  There are far too many documents and other materials produced on a daily basis for this one agency to review and classify.',0,0,1);
I[24][3][2]=new Array('The Central Intelligence Agency (CIA).','Sorry.  There are far too many documents and other materials produced on a daily basis for this one agency to review and classify.',0,0,1);
I[24][3][3]=new Array('The Federal Bureau of Investigation (FBI).','Nope.  There are far too many documents and other materials produced on a daily basis for this one agency to review and classify.',0,0,1);
I[24][3][4]=new Array('The Defense Intelligence Service (DIS).','Nope.  There are far too many documents and other materials produced on a daily basis for this one agency to review and classify.',0,0,1);
I[25]=new Array();I[25][0]=100;
I[25][1]='';
I[25][2]='0';
I[25][3]=new Array();
I[25][3][0]=new Array('Registered publications.','Right!  Every one of these is assigned an account number and delivered either by an officer in the Armed Forces Courier Service or from special registered publications vaults.',1,100,1);
I[25][3][1]=new Array('Restricted publications.','Sorry.  While this sounds like it could be correct, this is not the correct term for publications with limited distributions.',0,0,1);
I[25][3][2]=new Array('Classified publications.','Sorry.  Classified publications are simply publications that contain classified materials.  This term has nothing to do with their distribution.',0,0,1);
I[25][3][3]=new Array('"Eyes-Only" publications','Nope.  There is no such designation in the intelligence community.',0,0,1);
I[25][3][4]=new Array('Official Use Only publications.','Nope.  "Official Use Only" materials are not classified materials.',0,0,1);
I[26]=new Array();I[26][0]=100;
I[26][1]='';
I[26][2]='0';
I[26][3]=new Array();
I[26][3][0]=new Array('Emergency Destruction Bill','Correct!  The Emergency Destruction Bill is simply a list of those classified items which must be destroyed in the event of imminent capture by an enemy.',1,100,1);
I[26][3][1]=new Array('Cipher Books','Nope.  Cipher Books are very sensitive materials and would definitely fall under the Registered Publication Program.',0,0,1);
I[26][3][2]=new Array('Communications Books','Sorry.  Communications Books often can list very sensitive information and need the extra protection provided by being designated as Registered Publications.',0,0,1);
I[26][3][3]=new Array('Tactical Publications','Sorry.  Tactical Publications often can list very sensitive information and need the extra protection provided by being designated as Registered Publications.',0,0,1);
I[26][3][4]=new Array('Code Books','Nope.  Code Books are very sensitive materials and would definitely fall under the Registered Publication Program.',0,0,1);
I[27]=new Array();I[27][0]=100;
I[27][1]='';
I[27][2]='0';
I[27][3]=new Array();
I[27][3][0]=new Array('Throwing materials over the side of the ship.','Right!  It isn\'t enough to just throw them over the side.  You can do this, but first you have to put them in a weighted bag with holes in it.  This way it is sure to go to the bottom of the ocean.',1,100,1);
I[27][3][1]=new Array('Melting by use of chemical bombs ignited by electric batteries.','Nope.  This method is used and is very effective to eliminate a large quantity of material in a short time.',0,0,1);
I[27][3][2]=new Array('Smashing of coding devices with the parts scattered in deep water.','Nope.  This would be the proper way of destroying hardware equipment in the event of imminent enemy capture.',0,0,1);
I[27][3][3]=new Array('Burning of classified documents.','Sorry.  The burning of classified documents is one of the main ways of destroying classified material.',0,0,1);
I[27][3][4]=new Array('Shredding of classified documents.','Sorry.  Shredding of classified documents is an approved method.',0,0,1);
I[28]=new Array();I[28][0]=100;
I[28][1]='';
I[28][2]='0';
I[28][3]=new Array();
I[28][3][0]=new Array('A security clearance for the level of classification and a "need-to-know".','Right!  No person is entitled access to classified matter solely because of his or her rank, office, position , or because he or she has a security of clearance.  Besides the security clearance, there must be a specific need for the individual to know the intelligence information.',1,100,1);
I[28][3][1]=new Array('A emergency destruction bill and a "need-to-know".','Sorry.  An Emergency Destruction Bill is simply a list of those classified items which must be destroyed in the event of imminent capture by an enemy.  It doesn\'t play into an individual\'s access to classified material.',0,0,1);
I[28][3][2]=new Array('A security clearance for the level of classification and a emergency destruction bill','Sorry.  An Emergency Destruction Bill is simply a list of those classified items which must be destroyed in the event of imminent capture by an enemy.  It doesn\'t play into an individual\'s access to classified material.',0,0,1);
I[28][3][3]=new Array('A security clearance for the level of classification and an intelligence rating.','Nope.  Having an intelligence rating, or any job or designation for that matter, does not play in to access to classified material.',0,0,1);
I[28][3][4]=new Array('An intelligence rating and a "need-to-know".','Nope.  Having an intelligence rating, or any job or designation for that matter, does not play in to access to classifies material.',0,0,1);
I[29]=new Array();I[29][0]=100;
I[29][1]='';
I[29][2]='0';
I[29][3]=new Array();
I[29][3][0]=new Array('Aldrich Ames','Right!  Ames and his wife passed these secrets over a nine-year period in exchange for 2.5 million dollars.  Some of the agents they identified were killed as a result of that information.',1,100,1);
I[29][3][1]=new Array('John Walker','Sorry.  John Walker was a Navy Warrant Officer who passed on Top Secret submarine technology to the Soviet Union in the 1970\'s and 1980\'s.',0,0,1);
I[29][3][2]=new Array('Jonathan Pollard','Sorry.  Jonathan Pollard was an American Jew working in Naval Intelligence who passed along large quantities of Top Secret material to Israel.',0,0,1);
I[29][3][3]=new Array('Robert Hanssen','Nope.  Robert Hansen was an FBI agent who passed Top Secret information to the Russians for money.',0,0,1);
I[29][3][4]=new Array('Klaus Fuchs','Nope.  Klaus Fuchs was a member of the Manhattan Project and helped to develop the atomic bomb.  He later turned traitor and gave the plans to the Soviets.',0,0,1);


function StartUp(){
	RemoveBottomNavBarForIE();

//If there's only one question, no need for question navigation controls
	if (QsToShow < 2){
		document.getElementById('QNav').style.display = 'none';
	}
	

	

	
	CompleteEmptyFeedback();

	SetUpQuestions();
	ClearTextBoxes();
	CreateStatusArray();
	

	
//Check search string for q parameter
	if (document.location.search.length > 0){
		if (ShuffleQs == false){
			var JumpTo = parseInt(document.location.search.substring(1,document.location.search.length))-1;
			if (JumpTo <= QsToShow){
				ChangeQ(JumpTo);
			}
		}
	}
}

function ShowHideQuestions(){
	FuncBtnOut(document.getElementById('ShowMethodButton'));
	document.getElementById('ShowMethodButton').style.display = 'none';
	if (ShowingAllQuestions == false){
		for (var i=0; i<QArray.length; i++){
				QArray[i].style.display = '';
			}
		document.getElementById('Questions').style.listStyleType = 'decimal';
		document.getElementById('OneByOneReadout').style.display = 'none';
		document.getElementById('ShowMethodButton').innerHTML = ShowOneByOneCaption;
		ShowingAllQuestions = true;
	}
	else{
		for (var i=0; i<QArray.length; i++){
				if (i != CurrQNum){
					QArray[i].style.display = 'none';
				}
			}
		document.getElementById('Questions').style.listStyleType = 'none';
		document.getElementById('OneByOneReadout').style.display = '';
		document.getElementById('ShowMethodButton').innerHTML = ShowAllQuestionsCaption;
		ShowingAllQuestions = false;	
	}
	document.getElementById('ShowMethodButton').style.display = 'inline';
}

function CreateStatusArray(){
	var QNum, ANum;
//For each item in the item array
	for (QNum=0; QNum<I.length; QNum++){
//Check if the question still exists (hasn't been nuked by showing a random selection)
		if (document.getElementById('Q_' + QNum) != null){
			State[QNum] = new Array();
			State[QNum][0] = -1; //Score for this q; -1 shows question not done yet
			State[QNum][1] = new Array(); //answers
			for (ANum = 0; ANum<I[QNum][3].length; ANum++){
				State[QNum][1][ANum] = 0; //answer not chosen yet; when chosen, will store its position in the series of choices
			}
			State[QNum][2] = 0; //tries at this q so far
			State[QNum][3] = 0; //incrementing percent-correct values of selected answers
			State[QNum][4] = 0; //penalties incurred for hints
			State[QNum][5] = ''; //Sequence of answers chosen by number
		}
		else{
			State[QNum] = null;
		}
	}
}



function CheckMCAnswer(QNum, ANum, Btn){
//if question doesn't exist, bail
	if (State[QNum].length < 1){return;}
	
//Get the feedback
	Feedback = I[QNum][3][ANum][1];
	
//Now show feedback and bail if question already complete
	if (State[QNum][0] > -1){
//Add an extra message explaining that the question
// is finished if defined by the user
		if (strQuestionFinished.length > 0){Feedback += '<br />' + strQuestionFinished;}
//Show the feedback
		ShowMessage(Feedback);
		return;
	}
	
//Hide the button while processing
	Btn.style.display = 'none';

//Increment the number of tries
	State[QNum][2]++;
	
//Add the percent-correct value of this answer
	State[QNum][3] += I[QNum][3][ANum][3];
	
//Store the try number in the answer part of the State array, for tracking purposes
	State[QNum][1][ANum] = State[QNum][2];
	State[QNum][5] += String.fromCharCode(65+ANum) + ',';
	
//Should this answer be accepted as correct?
	if (I[QNum][3][ANum][2] < 1){
//It's wrong

//Mark the answer
		Btn.innerHTML = IncorrectIndicator;
		
//Check whether this leaves just one MC answer unselected, in which case the Q is terminated
		var RemainingAnswer = FinalAnswer(QNum);
		if (RemainingAnswer > -1){
//Behave as if the last answer had been selected, but give no credit for it
//Increment the number of tries
			State[QNum][2]++;		
		
//Calculate the score for this question
			CalculateMCQuestionScore(QNum);

//Get the overall score and add it to the feedback
			CalculateOverallScore();
			if ((ContinuousScoring == true)||(Finished == true)){
				Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.';
				WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
			}
		}
	}
	else{
//It's right
//Mark the answer
		Btn.innerHTML = CorrectIndicator;
				
//Calculate the score for this question
		CalculateMCQuestionScore(QNum);

//Get the overall score and add it to the feedback
		if (ContinuousScoring == true){
			CalculateOverallScore();
			if ((ContinuousScoring == true)||(Finished == true)){
				Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.';
				WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
			}
		}
	}
	
//Show the button again
	Btn.style.display = 'inline';
	
//Finally, show the feedback	
	ShowMessage(Feedback);
	
//Check whether all questions are now done
	CheckFinished();
}

function CalculateMCQuestionScore(QNum){
	var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties
	var PercentCorrect = State[QNum][3];
	var TotAns = GetTotalMCAnswers(QNum);
	var HintPenalties = State[QNum][4];
	
//Make sure it's not already complete

	if (State[QNum][0] < 0){
//Allow for Hybrids
		if (HintPenalties >= 1){
			State[QNum][0] = 0;
		}
		else{
			State[QNum][0] = ((TotAns-(Tries-1))/TotAns)*(PercentCorrect/(100*Tries));
		}
		if (State[QNum][0] < 0){
			State[QNum][0] = 0;
		}
	}
}

function GetTotalMCAnswers(QNum){
	var Result = 0;
	for (var ANum=0; ANum<I[QNum][3].length; ANum++){
		if (I[QNum][3][ANum][4] == 1){ //This is an MC answer
			Result++;
		}
	}
	return Result;
}

function FinalAnswer(QNum){
	var UnchosenAnswers = 0;
	var FinalAnswer = -1;
	for (var ANum=0; ANum<I[QNum][3].length; ANum++){
		if (I[QNum][3][ANum][4] == 1){ //This is an MC answer
			if (State[QNum][1][ANum] < 1){ //This answer hasn't been chosen yet
				UnchosenAnswers++;
				FinalAnswer = ANum;
			}
		}
	}
	if (UnchosenAnswers == 1){
		return FinalAnswer;
	}
	else{
		return -1;
	}
}





function CalculateOverallScore(){
	var TotalWeighting = 0;
	var TotalScore = 0;
	
	for (var QNum=0; QNum<State.length; QNum++){
		if (State[QNum] != null){
			if (State[QNum][0] > -1){
				TotalWeighting += I[QNum][0];
				TotalScore += (I[QNum][0] * State[QNum][0]);
			}
		}
	}
	Score = Math.floor((TotalScore/TotalWeighting)*100);
}

function CheckFinished(){
	var FB = '';
	var AllDone = true;
	for (var QNum=0; QNum<State.length; QNum++){
		if (State[QNum] != null){
			if (State[QNum][0] < 0){
				AllDone = false;
			}
		}
	}
	if (AllDone == true){
	
//Report final score and submit if necessary
		CalculateOverallScore();
		FB = YourScoreIs + ' ' + Score + '%.';
		if (ShowCorrectFirstTime == true){
			var CFT = 0;
			for (QNum=0; QNum<State.length; QNum++){
				if (State[QNum] != null){
					if (State[QNum][0] >= 1){
						CFT++;
					}
				}
			}
			FB += '<br />' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow;
		}
		WriteToInstructions(FB);
		
		Finished == true;

		TimeOver = true;
		Locked = true;
		


		Finished = true;
		Detail = '<?xml version="1.0"?><hpnetresult><fields>';
		for (QNum=0; QNum<State.length; QNum++){
			if (State[QNum] != null){
				if (State[QNum][5].length > 0){
					Detail += '<field><fieldname>Question #' + (QNum+1) + '</fieldname><fieldtype>question-tracking</fieldtype><fieldlabel>Q ' + (QNum+1) + '</fieldlabel><fieldlabelid>QuestionTrackingField</fieldlabelid><fielddata>' + State[QNum][5] + '</fielddata></field>';
				}
			}
		}
		Detail += '</fields></hpnetresult>';
		setTimeout('Finish()', SubmissionTimeout);
	}
}










//-->

//]]>


