quarta-feira, 13 de julho de 2016
segunda-feira, 11 de julho de 2016
quiz ecologia
// */
var API = null; /* SCORM API */
/* look up through the frameset hierarchy for the SCORM API */
function findAPI(win)
{
while ((win.API == null) && (win.parent != null) && (win.parent != win))
{
win = win.parent;
}
API = win.API;
}
/* initialize the SCORM API */
function initAPI(win)
{
/* look for the SCORM API up in the frameset */
findAPI(win);
/* if we still have not found the API, look at the opener and its frameset */
if ((API == null) && (win.opener != null))
{
findAPI(win.opener);
}
}
var ScormSubmitted = false; //use this to check whether LMSFinish has been called later.
function ScormStartUp(){
initAPI(window);
if (API != null){
API.LMSInitialize('');
API.LMSSetValue('cmi.core.lesson_status', 'browsed');
API.LMSSetValue('cmi.core.score.min', 0);
API.LMSSetValue('cmi.core.score.max', 100);
API.LMSCommit('');
}
}
function CheckLMSFinish(){
if (API != null){
if (ScormSubmitted == false){
API.LMSCommit('');
API.LMSFinish('');
ScormSubmitted = true;
}
}
}
function SetScormIncomplete(){
if (ScormSubmitted == true){
return;
}
SetScormScore();
if (API != null){
API.LMSSetValue('cmi.core.lesson_status', 'incomplete');
API.LMSSetValue('cmi.core.session_time', MillisecondsToTime((new Date()).getTime() - ScormStartTime));
API.LMSCommit('');
}
}
function SetScormComplete(){
if (API != null){
API.LMSSetValue('cmi.core.session_time', MillisecondsToTime((new Date()).getTime() - ScormStartTime));
API.LMSSetValue('cmi.core.lesson_status', 'completed');
SetScormScore();
API.LMSCommit('');
API.LMSFinish('');
ScormSubmitted = true;
}
}
var ScormStartTime = (new Date()).getTime();
var SuspendData = '';
function SetScormTimedOut(){
if (API != null){
if (ScormSubmitted == false){
SetScormScore();
API.LMSSetValue('cmi.core.exit', 'time-out');
API.LMSCommit('');
CheckLMSFinish();
}
}
}
//TIME RENDERING FUNCTION
function MillisecondsToTime(Seconds){
Seconds = Math.round(Seconds/1000);
var S = Seconds % 60;
Seconds -= S;
if (S < 10){S = '0' + S;}
var M = (Seconds / 60) % 60;
if (M < 10){M = '0' + M;}
var H = Math.floor(Seconds / 3600);
if (H < 10){H = '0' + H;}
return H + ':' + M + ':' + S;
}
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 + '
'; 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'); ShowElements(true, 'object', 'FeedbackContent'); //Focus the OK button setTimeout("document.getElementById('FeedbackOKButton').focus()", 50); // // RefreshImages(); // } function ShowElements(Show, TagName, ContainerToReverse){ // added third argument to allow objects in the feedback box to appear //IE bug -- hide all the form elements that will show through the popup //FF on Mac bug : doesn't redisplay objects whose visibility is set to visible //unless the object's display property is changed //get container object (by Id passed in, or use document otherwise) TopNode = document.getElementById(ContainerToReverse); var Els; if (TopNode != null) { Els = TopNode.getElementsByTagName(TagName); } else { Els = document.getElementsByTagName(TagName); } for (var i=0; i 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 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 -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 0){
ThisItemScore = Math.floor(State[i][0] * 100) + '';
ThisItemStatus = 'completed';
}
else{
ThisItemScore = '0';
ThisItemStatus = 'incomplete';
}
API.LMSSetValue('cmi.objectives.' + i + '.score.raw', ThisItemScore);
API.LMSSetValue('cmi.objectives.' + i + '.status', ThisItemStatus);
API.LMSSetValue('cmi.interactions.' + i + '.weighting', I[i][0]);
//We can only use the performance type, because we're storing multiple responses of various types.
API.LMSSetValue('cmi.interactions.' + i + '.type', 'performance');
API.LMSSetValue('cmi.interactions.' + i + '.student_response', State[i][5]);
}
}
API.LMSCommit('');
}
}
//JQUIZ CORE JAVASCRIPT CODE
var CurrQNum = 0;
var CorrectIndicator = 'Parabéns! resposta correta.';
var IncorrectIndicator = 'Resposta incorreta.';
var YourScoreIs = 'A sua pontuação é';
//New for 6.2.2.0
var CompletedSoFar = 'Perguntas respondidas até o momento';
var ExerciseCompleted = 'Você completou o exercício';
var ShowCompletedSoFar = true;
var ContinuousScoring = true;
var CorrectFirstTime = 'Questions answered correctly first time: ';
var ShowCorrectFirstTime = true;
var ShuffleQs = true;
var ShuffleAs = true;
var DefaultRight = 'Resposta correta';
var DefaultWrong = 'Resposta incorreta';
var QsToShow = 1;
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 = '';
var Locked = false;
//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 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 0){
AList.push(As.removeChild(As.getElementsByTagName('li')[0]));
}
AList = Shuffle(AList);
for (j=0; j= QArray.length)){return;}
QArray[CurrQNum].style.display = 'none';
CurrQNum += ChangeBy;
QArray[CurrQNum].style.display = '';
//Undocumented function added 10/12/2004
ShowSpecialReadingForQuestion();
SetQNumReadout();
SetFocusToTextbox();
}
var HiddenReadingShown = false;
function ShowSpecialReadingForQuestion(){
//Undocumented function for showing specific reading text elements which change with each question
//Added on 10/12/2004
if (document.getElementById('ReadingDiv') != null){
if (HiddenReadingShown == true){
document.getElementById('ReadingDiv').innerHTML = '';
}
if (QArray[CurrQNum] != null){
//Fix for 6.0.4.25
var Children = QArray[CurrQNum].getElementsByTagName('div');
for (var i=0; i= QArray.length){
if (document.getElementById('NextQButton') != null){
document.getElementById('NextQButton').style.visibility = 'hidden';
}
}
else{
if (document.getElementById('NextQButton') != null){
document.getElementById('NextQButton').style.visibility = 'visible';
}
}
if (CurrQNum <= 0){
if (document.getElementById('PrevQButton') != null){
document.getElementById('PrevQButton').style.visibility = 'hidden';
}
}
else{
if (document.getElementById('PrevQButton') != null){
document.getElementById('PrevQButton').style.visibility = 'visible';
}
}
}
var 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('etanol, obtido a partir da decomposi\u00E7\u00E3o da mat\u00E9ria org\u00E2nica por bact\u00E9rias.','',0,0,1);
I[0][3][1]=new Array('g\u00E1s natural, formado pela a\u00E7\u00E3o de fungos decompositores da mat\u00E9ria org\u00E2nica.','',0,0,1);
I[0][3][2]=new Array('\u00F3leo de xisto, obtido pela decomposi\u00E7\u00E3o da mat\u00E9ria org\u00E2nica pelas bact\u00E9rias anaer\u00F3bias.','',0,0,1);
I[0][3][3]=new Array('g\u00E1s metano, obtido pela atividade de bact\u00E9rias anaer\u00F3bias na decomposi\u00E7\u00E3o da mat\u00E9ria org\u00E2nica.','',1,100,1);
I[0][3][4]=new Array('g\u00E1s liquefeito de petr\u00F3leo, obtido pela decomposi\u00E7\u00E3o de vegetais presentes nos restos de comida.','',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('Evitando a rota\u00E7\u00E3o de culturas.','',0,0,1);
I[1][3][1]=new Array('Liberando o CO2 presente no solo.','',0,0,1);
I[1][3][2]=new Array('Aumentando a quantidade de mat\u00E9ria org\u00E2nica do solo.','',1,100,1);
I[1][3][3]=new Array('Queimando a mat\u00E9ria org\u00E2nica que se deposita no solo.','',0,0,1);
I[1][3][4]=new Array('Atenuando a concentra\u00E7\u00E3o de res\u00EDduos vegetais do solo.','',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('Consumidor prim\u00E1rio, pois ataca diretamente uma esp\u00E9cie herb\u00EDvora.','',0,0,1);
I[2][3][1]=new Array('Consumidor secund\u00E1rio, pois se alimenta diretamente dos tecidos da lagarta.','',1,100,1);
I[2][3][2]=new Array('Organismo heter\u00F3trofo de primeira ordem, pois se alimenta de p\u00F3len na fase adulta.','',0,0,1);
I[2][3][3]=new Array('Organismo heter\u00F3trofo de segunda ordem, pois apresenta o maior n\u00EDvel energ\u00E9tico na cadeia.','',0,0,1);
I[2][3][4]=new Array('Decompositor, pois se alimenta de tecidos do interior do corpo da lagarta e a leva \u00E0 morte.','',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;
ScormStartUp();
GetUserName();
PreloadImages('../../../../../../Pictures/Ciclo de vida.png');
CompleteEmptyFeedback();
SetUpQuestions();
ClearTextBoxes();
CreateStatusArray();
setTimeout('StartTimer()', 50);
//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);
}
}
}
//Undocumented function added 10/12/2004
ShowSpecialReadingForQuestion();
}
function ShowHideQuestions(){
FuncBtnOut(document.getElementById('ShowMethodButton'));
document.getElementById('ShowMethodButton').style.display = 'none';
if (ShowingAllQuestions == false){
for (var i=0; i -1){
//Add an extra message explaining that the question
// is finished if defined by the user
if (strQuestionFinished.length > 0){Feedback += '
' + strQuestionFinished;} //Show the feedback ShowMessage(Feedback); //New for 6.2.2.1: If you want to mark an answer as correct even when it's the final choice, uncomment this line. // if (I[QNum][3][ANum][2] >= 1){Btn.innerHTML = CorrectIndicator;}else{Btn.innerHTML = IncorrectIndicator;} 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]; if (State[QNum][5].length > 0){State[QNum][5] += ' | ';} 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(); //New for 6.2.2.1 var QsDone = CheckQuestionsCompleted(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '
' + YourScoreIs + ' ' + Score + '%.' + '
' + QsDone; WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '
' + QsDone); } else{ WriteToInstructions(QsDone); } } } else{ //It's right //Mark the answer Btn.innerHTML = CorrectIndicator; //Calculate the score for this question CalculateMCQuestionScore(QNum); //New for 6.2.2.0 var QsDone = CheckQuestionsCompleted(); //Get the overall score and add it to the feedback if (ContinuousScoring == true){ CalculateOverallScore(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '
' + YourScoreIs + ' ' + Score + '%.' + '
' + QsDone; WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '
' + QsDone); } } else{ WriteToInstructions(QsDone); } } //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)); } } //Fix for Safari bug added for version 6.0.3.42 (negative infinity problem) if ((State[QNum][0] < 0)||(State[QNum][0] == Number.NEGATIVE_INFINITY)){ State[QNum][0] = 0; } } } function GetTotalMCAnswers(QNum){ var Result = 0; for (var ANum=0; ANum -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; } } //New for 6.2.2.0 function CheckQuestionsCompleted(){ if (ShowCompletedSoFar == false){return '';} var QsCompleted = 0; for (var QNum=0; QNum= 0){
QsCompleted++;
}
}
}
//Fixes for 6.2.2.2
if (QsCompleted >= QArray.length){
return ExerciseCompleted;
}
else{
return CompletedSoFar + ' ' + QsCompleted + '/' + QArray.length + '.';
}
}
function CheckFinished(){
var FB = '';
var AllDone = true;
for (var QNum=0; QNum= 1){
CFT++;
}
}
}
FB += '
' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow; } //New for 6.2.2.0 FB += '
' + ExerciseCompleted; WriteToInstructions(FB); Finished == true; window.clearInterval(Interval); if (TimeOver == true){ SetScormTimedOut(); } else{ SetScormComplete(); } TimeOver = true; Locked = true; setTimeout('SendResults(' + Score + ')', 50); Finished = true; Detail = '';
for (QNum=0; QNum 0){
Detail += 'Question #' + (QNum+1) + ' question-tracking Q ' + (QNum+1) + ' QuestionTrackingField ' + State[QNum][5] + ' ';
}
}
}
Detail += ' ';
setTimeout('Finish()', SubmissionTimeout);
}
else{
SetScormIncomplete();
}
}
function TimesUp(){
document.getElementById('Timer').innerHTML = 'Your time is over!';
RefreshImages();
TimeOver = true;
Finished = true;
ShowMessage('Your time is over!');
//Set all remaining scores to 0
for (var QNum=0; QNum';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '';
ResultForm += '
'; 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'); ShowElements(true, 'object', 'FeedbackContent'); //Focus the OK button setTimeout("document.getElementById('FeedbackOKButton').focus()", 50); // // RefreshImages(); // } function ShowElements(Show, TagName, ContainerToReverse){ // added third argument to allow objects in the feedback box to appear //IE bug -- hide all the form elements that will show through the popup //FF on Mac bug : doesn't redisplay objects whose visibility is set to visible //unless the object's display property is changed //get container object (by Id passed in, or use document otherwise) TopNode = document.getElementById(ContainerToReverse); var Els; if (TopNode != null) { Els = TopNode.getElementsByTagName(TagName); } else { Els = document.getElementsByTagName(TagName); } for (var i=0; i
' + strQuestionFinished;} //Show the feedback ShowMessage(Feedback); //New for 6.2.2.1: If you want to mark an answer as correct even when it's the final choice, uncomment this line. // if (I[QNum][3][ANum][2] >= 1){Btn.innerHTML = CorrectIndicator;}else{Btn.innerHTML = IncorrectIndicator;} 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]; if (State[QNum][5].length > 0){State[QNum][5] += ' | ';} 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(); //New for 6.2.2.1 var QsDone = CheckQuestionsCompleted(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '
' + YourScoreIs + ' ' + Score + '%.' + '
' + QsDone; WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '
' + QsDone); } else{ WriteToInstructions(QsDone); } } } else{ //It's right //Mark the answer Btn.innerHTML = CorrectIndicator; //Calculate the score for this question CalculateMCQuestionScore(QNum); //New for 6.2.2.0 var QsDone = CheckQuestionsCompleted(); //Get the overall score and add it to the feedback if (ContinuousScoring == true){ CalculateOverallScore(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '
' + YourScoreIs + ' ' + Score + '%.' + '
' + QsDone; WriteToInstructions(YourScoreIs + ' ' + Score + '%.' + '
' + QsDone); } } else{ WriteToInstructions(QsDone); } } //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)); } } //Fix for Safari bug added for version 6.0.3.42 (negative infinity problem) if ((State[QNum][0] < 0)||(State[QNum][0] == Number.NEGATIVE_INFINITY)){ State[QNum][0] = 0; } } } function GetTotalMCAnswers(QNum){ var Result = 0; for (var ANum=0; ANum -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; } } //New for 6.2.2.0 function CheckQuestionsCompleted(){ if (ShowCompletedSoFar == false){return '';} var QsCompleted = 0; for (var QNum=0; QNum
' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow; } //New for 6.2.2.0 FB += '
' + ExerciseCompleted; WriteToInstructions(FB); Finished == true; window.clearInterval(Interval); if (TimeOver == true){ SetScormTimedOut(); } else{ SetScormComplete(); } TimeOver = true; Locked = true; setTimeout('SendResults(' + Score + ')', 50); Finished = true; Detail = '