

//<![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';

	FDiv.style.display = 'block';

	ShowElements(false, 'input');
	ShowElements(false, 'select');
	ShowElements(false, 'object');

//Focus the OK button
	setTimeout("document.getElementById('FeedbackOKButton').focus()", 50);
	
//
}

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.innerHeight){
		return window.innerHeight;
	}
	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{
	if (window.addEventListener){
		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){
	var Num;
	var 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-1); k++) {
			Temp[k] = Temp[k+1];
		}
		j--;
	}
	return InArray;
}

function WriteToInstructions(Feedback) {
	document.getElementById('InstructionsDiv').innerHTML = Feedback;

}




function EscapeDoubleQuotes(InString){
	return InString.replace(/"/g, '&quot;')
}

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].id.indexOf('Gap') > -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 = '';
var TimeOver = false;
var strInstructions = '';

//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;
	if (QsToShow > QList.length){
		QsToShow = QList.length;
	}
	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){
//The following line prevents moving to another question until the current
//question is answered correctly. Uncomment it to enable this behaviour. 
//	if (State[CurrQNum][0] == -1){return;}
	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('Relief Maps','Right!  Relief maps are a type of General-Purpose map.',1,100,1);
I[0][3][1]=new Array('Contour Maps','Sorry.  Contour lines are used, however, in these kinds of maps.',0,0,1);
I[0][3][2]=new Array('Mercator Projections','Nope.  Mercator maps do not necessarily show elevations.',0,0,1);
I[0][3][3]=new Array('Navigational Maps','Nope.  These types of maps pertain to navigation on the surface of the ocean.',0,0,1);
I[0][3][4]=new Array('Thematic Maps','Sorry.  Thematic maps are maps that show information on a specific single topic, such as economic or political data.',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('The Abyssal Plain','Right.  While this is the bottom of the Artic Ocean, it is not a common term for the bottom of all oceans.',1,100,1);
I[1][3][1]=new Array('The Deep Ocean Floor','Sorry.  This is one of the common names for the bottom of the ocean.',0,0,1);
I[1][3][2]=new Array('The Deep Sea','Nope.  This is one of the common names for the bottom of the ocean.',0,0,1);
I[1][3][3]=new Array('The Deep Ocean Basin','Sorry.  This is one of the common names for the bottom of the ocean.',0,0,1);
I[1][3][4]=new Array('The Abyss','Nope.  This is one of the common names for the bottom of the ocean.',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('Two-thirds','Right.  That means about 47% of the entire Earth is deep ocean basin!',1,100,1);
I[2][3][1]=new Array('One-half','Sorry.  It\'s more than that.',0,0,1);
I[2][3][2]=new Array('Three-quarters','Nope.  It isn\'t that much.',0,0,1);
I[2][3][3]=new Array('One-quarter','Sorry.  It is quite a bit more than that.',0,0,1);
I[2][3][4]=new Array('One-Third','Nope.  It is more that that.',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('A fathometer','Right!  They provide a rapid means of finding the depth of water.',1,100,1);
I[3][3][1]=new Array('A Periscope','Nope.  Periscopes do not use sound or echoes to locate objects or the distance to  objects.',0,0,1);
I[3][3][2]=new Array('A Relief Map','Sorry.  Relief maps are maps which indicate the heights of the earth\'s surface using shading, colors or numbered contour lines.',0,0,1);
I[3][3][3]=new Array('A Sonar Ring','Nope.  There is no such thing as a "Sonar Ring".',0,0,1);
I[3][3][4]=new Array('A Piston Corer','Sorry.  A Piston Corer is an instrument used to retrieve and study sediment layers.',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('The continental slope','Correct!  They may contain submarine canyons and they generally transport sediment to deep ocean floor.  ',1,100,1);
I[4][3][1]=new Array('The deep sea floor','Nope.  This is another name for the deep ocean basin.',0,0,1);
I[4][3][2]=new Array('The abyss','Sorry.  This is another name for the deep ocean basin.',0,0,1);
I[4][3][3]=new Array('The continental reef','Nope.  There is no such underwater terrain feature.',0,0,1);
I[4][3][4]=new Array('The submarine canyon','Sorry.  Submarine canyons are deep canyons which cut through continental shelves.',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('Out to 200 meters','Right.  This is approximately 656 feet.',1,100,1);
I[5][3][1]=new Array('Out to 100 fathoms','Sorry.  It goes a bit farther out than that.',0,0,1);
I[5][3][2]=new Array('Out to 200 fathoms','Nope.  Not quite that deep.',0,0,1);
I[5][3][3]=new Array('Out to 100 meters','Sorry.  It goes deeper than that.',0,0,1);
I[5][3][4]=new Array('12 nautical miles','Nope.  You are thinking of the territorial limit.',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('There is not a regular texture.','Right.  They very from smooth plains to irregular, rough terrain.',1,100,1);
I[6][3][1]=new Array('Smooth terrain','Sorry.  Some are smooth, but not all.',0,0,1);
I[6][3][2]=new Array('Rough terrain','Nope.  Some are rough, but not all.',0,0,1);
I[6][3][3]=new Array('Irregular slopes','Sorry.  Some are, but some aren\'t',0,0,1);
I[6][3][4]=new Array('Repeating patters of ridges and valleys.','Nope.  They do not follow this pattern.',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('The continental shelves','Right.  These parts of the oceans get the most sunlight and support the most life.',1,100,1);
I[7][3][1]=new Array('The abyss','Nope.  The lack of sunlight makes for hard living for plants and fish.',0,0,1);
I[7][3][2]=new Array('The deep ocean floor','Sorry.  The lack of sunlight makes for hard living for plants and fish.',0,0,1);
I[7][3][3]=new Array('The continental slopes','Nope.  The combination of poor light and sloping terrain make it hard for life to exist here.',0,0,1);
I[7][3][4]=new Array('There is an even distribution of life throughout all of the areas of the oceans','Sorry.  Some areas have more abundant life than others.',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('Turbidity currents','Right.  They are generally inside of submarine and other types of deep canyons.',1,100,1);
I[8][3][1]=new Array('Submarine currents','Nope.  That is not the name of these currents.',0,0,1);
I[8][3][2]=new Array('Continental currents','Sorry.  There are no such things.',0,0,1);
I[8][3][3]=new Array('Typhoon currents','Nope.  There are no typhoon currents.',0,0,1);
I[8][3][4]=new Array('Gulf currents','Sorry.  The Gulf currents are not these types of currents.',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('Submarine fans','Right.  Submarine canyons have steep courses with high walls.',1,100,1);
I[9][3][1]=new Array('Submarine currents','Nope.  There are no such things as submarine currents.',0,0,1);
I[9][3][2]=new Array('Turbidity currents','Sorry.  These currents carry silt and debris but that is not what these silt fields are called.',0,0,1);
I[9][3][3]=new Array('Turbidity fields','Nope.  Sounds right though, doesn\'t it?',0,0,1);
I[9][3][4]=new Array('Continental shelves','Sorry.  The silt is deposited on sections of the continental shelves, but that is not the name of the silt fields.',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 East Pacific Rise','Right!  This is one of the fastest-spreading sections of the Earth\'s Mid-Ocean Ridge system. ',1,100,1);
I[10][3][1]=new Array('The Mid-Atlantic Ridge','Sorry.  This is located in the Atlantic Ocean,  not the Pacific.',0,0,1);
I[10][3][2]=new Array('The Mid-Indian Ocean Ridge','Nope.  This ridge extends to meet the correct answer, though.',0,0,1);
I[10][3][3]=new Array('The Australia Ridge','Sorry.  Australia is not an underwater feature.',0,0,1);
I[10][3][4]=new Array('The South Pacific Rise','Nope.  There is no feature with such a name.',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 Pacific','Right!  Seamounts are areas of high production that support commercially important fisheries and coral mining. ',1,100,1);
I[11][3][1]=new Array('The Indian','Sorry.  They aren\'t as common in the Indian Ocean.',0,0,1);
I[11][3][2]=new Array('The Antarctic','Nope.  There is no Antarctic Ocean',0,0,1);
I[11][3][3]=new Array('The Arctic','Sorry.  There are few seamounts in the Arctic Ocean',0,0,1);
I[11][3][4]=new Array('The Atlantic','Nope.  This isn\'t where most seamounts can be found.',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('Guyots','Right!  They are found in the Pacific Ocean but not the Atlantic or Indian Oceans.',1,100,1);
I[12][3][1]=new Array('Atolls','Sorry.  Atolls are the coral island remnants of volcanic rim.',0,0,1);
I[12][3][2]=new Array('Lagoons','Nope.  Lagoons are the bodies of water at the center of atolls where once a volcano\'s crater was.',0,0,1);
I[12][3][3]=new Array('Seamounts','Sorry.  Seamounts are underwater mountains but they do not have flattened tops.',0,0,1);
I[12][3][4]=new Array('Volcanoes','Nope.  Volcanoes are not underwater, but above water.',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('New Guinea','Right.  New Guinea was not formed by volcanoes but rater it broke away from Australia a long time ago.',1,100,1);
I[13][3][1]=new Array('Caroline','Sorry.  The Caroline island chain is a volcanic chain.',0,0,1);
I[13][3][2]=new Array('Gilbert','Nope.  The Gilbert island chain is a volcanic chain.',0,0,1);
I[13][3][3]=new Array('Samoan','Sorry.  Samoa and the Samoan island chain is a volcanic chain.',0,0,1);
I[13][3][4]=new Array('Society','Nope.  The Society island chain is a volcanic chain.',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 Hawaiian Islands','Correct.  It is one of the most active volcanoes in the world.',1,100,1);
I[14][3][1]=new Array('The Gilbert Islands','Sorry.  Mauna Loa is not in the Gilbert chain of islands.',0,0,1);
I[14][3][2]=new Array('The Caroline Islands','Sorry.  Mauna Loa is not in the Caroline chain of islands.',0,0,1);
I[14][3][3]=new Array('The Society Islands','Nope.  Mauna Loa is not in the Society chain of islands.',0,0,1);
I[14][3][4]=new Array('The Samoan Islands','Nope.  Mauna Loa is not in the Samoan chain of islands.',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('Oozes','Correct.  Equatorial areas and the Atlantic Ocean have concentrations of these oozes.',1,100,1);
I[15][3][1]=new Array('Clays','Sorry.  This type of material is not readily found in warm waters.',0,0,1);
I[15][3][2]=new Array('Land-derived muds','Sorry.  This general type of material is not composed of shells and skeletons.',0,0,1);
I[15][3][3]=new Array('Sea-derived muds','Nope.  There is no such general type of material.',0,0,1);
I[15][3][4]=new Array('Coral','Nope.  Coral is a living growth and not simply composed of shells and skeletons.',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 deep, cold parts of the ocean basin.','Right.  Most of the North Pacific floor is covered by such reddish clay.',1,100,1);
I[16][3][1]=new Array('Warm, shallower waters.','Nope.  Oozes are found in this type of waters.',0,0,1);
I[16][3][2]=new Array('The abyssal plains.','Sorry.  Land-derived muds are most common in the abyssal plains.',0,0,1);
I[16][3][3]=new Array('Deep warm waters.','Nope.  Deep waters are not warm.',0,0,1);
I[16][3][4]=new Array('Reddish clay is not common to any ocean areas.','Sorry.  Most of the North Pacific floor is covered by such reddish clay.',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('Land-derived muds','Correct.  That is why they are called "land-derived".',1,100,1);
I[17][3][1]=new Array('Oozes','Sorry.  Oozes are composed of animal shells and skeletons of minute animals.',0,0,1);
I[17][3][2]=new Array('Clays','Nope.  Clays are made up of airborne, volcanic and meteorite dusts.',0,0,1);
I[17][3][3]=new Array('Coral','Nope.  Coral is a living growth and not simply composed of shells and skeletons.',0,0,1);
I[17][3][4]=new Array('Sea-derived muds','Sorry.  There is no such general type of material.',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('Nodules','Correct.  Literally "lumps of metal".',1,100,1);
I[18][3][1]=new Array('Oozes','Sorry.  Oozes are composed of animal shells and skeletons of minute animals.',0,0,1);
I[18][3][2]=new Array('Clays','Nope.  Clays are made up of airborne, volcanic and meteorite dusts.',0,0,1);
I[18][3][3]=new Array('Guyots','Sorry.  Guyots are underwater mountains with flattened tops that never reach the surface',0,0,1);
I[18][3][4]=new Array('Atolls','Nope.  Atolls are the coral island remnants of volcanic rim.',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('Manganese','Correct.  They are also rich in copper, nickel and cobalt.',1,100,1);
I[19][3][1]=new Array('Gold','Sorry.  There are no known gold nodules.',0,0,1);
I[19][3][2]=new Array('Steel','Nope.  Steel is a man-made metal and is not found in raw form.',0,0,1);
I[19][3][3]=new Array('Iron','Sorry.  There are no known quantities of iron nodules',0,0,1);
I[19][3][4]=new Array('Aluminum','Nope.  There are no aluminum nodules at the bottom of the oceans.',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('Coring','Right.  Weighted tubes are dropped vertically into the seabed and brought up.',1,100,1);
I[20][3][1]=new Array('Using mini-submarines to extract small areas of the ocean bottom.','Nope.  Even mini-submarines cannot reach most of the deep ocean seabed.',0,0,1);
I[20][3][2]=new Array('Using deep-sea nets to capture sections of the seabed and bring them up.','Sorry.  This wouldn\'t bring up much, if any, of the seabed.',0,0,1);
I[20][3][3]=new Array('Deep-sea divers using pressure suits and diving helmets.','Nope.  This would not work at these great depths.',0,0,1);
I[20][3][4]=new Array('There is no known method to bring up samples of the deep ocean seabed.','Sorry.  There is a method and it has been used for many years.',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('They lie in water so deep they cannot be easily retrieved.','Correct.  As technology improves these nodules will prove a valuable resource.',1,100,1);
I[21][3][1]=new Array('They weigh so much that it is difficult to get strong enough cable to bring them up.','Sorry.  They are actually rather small and easy to gather if you can get to them.',0,0,1);
I[21][3][2]=new Array('Without adequate light it is difficult to spot them in the deep ocean.','Nope.  Sounds right but there are other ways to know where they are located.',0,0,1);
I[21][3][3]=new Array('There is no difficulty.  They are mined each year in great quantities.','Nope.  Science hasn\'t developed an economical method to bring them up yet.',0,0,1);
I[21][3][4]=new Array('They are easily damaged and difficult to bring up in their pure form.','Sorry.  These nodules are made of almost pure metal and are not easily damaged.',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';
	}
	
//Stash the instructions so they can be redisplayed
	strInstructions = document.getElementById('InstructionsDiv').innerHTML;
	

	

	
	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;
		
//Remove any previous score unless exercise is finished (6.0.3.8+)
		if (Finished == false){
			WriteToInstructions(strInstructions);
		}	
		
//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{
//This line calculates the score for this question
			if (TotAns == 1){
				State[QNum][0] = 1;
			}
			else{
				State[QNum][0] = ((TotAns-((Tries*100)/State[QNum][3]))/(TotAns-1));
			}
		}
		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]);
			}
		}
	}
	if (TotalWeighting > 0){
		Score = Math.floor((TotalScore/TotalWeighting)*100);
	}
	else{
//if TotalWeighting is 0, no questions so far have any value, so 
//no penalty should be shown.
		Score = 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);
	}
}










//-->

//]]>


