// 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';
//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();
}
//
// RefreshImages();
//
}
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 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';
document.getElementById('InstructionsDiv').innerHTML = Feedback;
RefreshImages();
}
Imgs = new Array();
function PreloadImages(){
var a = PreloadImages.arguments;
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){
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 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 = '';
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]='3';
I[0][3]=new Array();
I[0][3][0]=new Array('A masse mon\u00E9taire donn\u00E9e, plus le produit est \u00E9lev\u00E9, plus le niveau g\u00E9n\u00E9ral des prix est grand ','',0,0,1);
I[0][3][1]=new Array('Il existe une relation d\u00E9croissante entre Y et P ','',1,50,1);
I[0][3][2]=new Array('L\u2019accroissement de la masse mon\u00E9taire d\u00E9place DA vers le haut ','',1,50,1);
I[1]=new Array();I[1][0]=100;
I[1][1]='';
I[1][2]='3';
I[1][3]=new Array();
I[1][3][0]=new Array('Exprime les choix de production \u00E0 prix fixes ','',1,50,1);
I[1][3][1]=new Array('Est repr\u00E9sent\u00E9e par un trac\u00E9 horizontal dans un espace (P,Y) ','',1,50,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('Montre qu\u2019une unit\u00E9 de recette publique suppl\u00E9mentaire d\u00E9place durablement le niveau d\u2019activit\u00E9 ','',0,0,1);
I[2][3][1]=new Array('Montre qu\u2019une unit\u00E9 de recette publique suppl\u00E9mentaire accro\u00EEt le revenu de plus d\u2019une unit\u00E9 ','',0,0,1);
I[2][3][2]=new Array('D\u00E9pend de la valeur de la propension marginale \u00E0 consommer ','',1,100,1);
I[3]=new Array();I[3][0]=100;
I[3][1]='';
I[3][2]='3';
I[3][3]=new Array();
I[3][3][0]=new Array('Repr\u00E9sente l\u2019ensemble des solutions d\u2019\u00E9quilibre du march\u00E9 des biens et services ','',0,0,1);
I[3][3][1]=new Array('Refl\u00E8te l\u2019\u00E9quilibre du march\u00E9 de la monnaie ','',1,50,1);
I[3][3][2]=new Array('Repose sur la pr\u00E9f\u00E9rence des agents pour la liquidit\u00E9 ','',1,50,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('Vrai','',0,0,1);
I[4][3][1]=new Array('Faux','',1,100,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('Vrai','',1,100,1);
I[5][3][1]=new Array('Faux','',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('Vrai','',1,100,1);
I[6][3][1]=new Array('Faux','',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('Vrai','',1,100,1);
I[7][3][1]=new Array('Faux','',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('Vrai','',1,100,1);
I[8][3][1]=new Array('Faux','',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('Vrai','',1,100,1);
I[9][3][1]=new Array('Faux','',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';
}
PreloadImages('cycleVAPIB.jpg','cycleCONS.jpg','cycleINV.jpg','cycleIMP.jpg','cycleU.jpg','cycleSTOCK.jpg');
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 -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);
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 += '
' + 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 += '
' + 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
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' + Feedback;
if (Matches == I[QNum][3].length){
//It's right
CalculateMultiSelQuestionScore(QNum);
if (ContinuousScoring == true){
CalculateOverallScore();
if ((ContinuousScoring == true)||(Finished == true)){
Feedback += '
' + YourScoreIs + ' ' + Score + '%.';
WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
}
}
}
//If it's wrong, no need to do anything but show the feedback
ShowMessage(Feedback);
//Check whether all questions are now done
CheckFinished();
}
function CalculateMultiSelQuestionScore(QNum){
var Tries = State[QNum][2];
var TotAns = State[QNum][1].length;
//Make sure it's not already complete
if (State[QNum][0] < 0){
State[QNum][0] = (TotAns - (Tries-1)) / TotAns;
if (State[QNum][0] < 0){
State[QNum][0] = 0;
}
}
}
function CalculateOverallScore(){
var TotalWeighting = 0;
var TotalScore = 0;
for (var QNum=0; QNum -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= 1){
CFT++;
}
}
}
FB += '
' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow;
}
WriteToInstructions(FB);
Finished == true;
TimeOver = true;
Locked = true;
Finished = true;
Detail = '';
for (QNum=0; QNum 0){
Detail += 'Question #' + (QNum+1) + 'question-trackingQ ' + (QNum+1) + 'QuestionTrackingField' + State[QNum][5] + '';
}
}
}
Detail += '';
setTimeout('Finish()', SubmissionTimeout);
}
}
//-->
//]]>