;(function(){
'use strict';
var ReviewSlide = function(section) {
this.section = section;
this.section.points_possible = 1;
this.section.points_earned = 0;
this.section.section_completed = false;
section.jq.addClass( 'practice_1' );
updateButtons.call(this);
};
var updateButtons = function() {
var self = this;
var left_button_was_down = false;
var right_button_was_down = false;
var $button1 = $('.buttons.left');
var $button2 = $('.buttons.right');
var $content1 = $('.buttons_content.left');
var $content2 = $('.buttons_content.right');
$button1.click(function () {
$content2.hide();
$content1.show();
$content1.focus();
$('svg .right').hide();
$('svg .left').show();
left_button_was_down = true;
if ( right_button_was_down ) {
self.finishSlide();
}
});
$button2.click(function () {
$content1.hide();
$content2.show();
$content2.focus();
$('svg .left').hide();
$('svg .right').show();
right_button_was_down = true;
if ( left_button_was_down ) {
self.finishSlide();
}
});
$content1.focusout(function () {
$button2.focus();
});
};
ReviewSlide.prototype.showSlide = function() {
this.section.jq.focus();
};
ReviewSlide.prototype.finishSlide = function() {
this.section.points_earned = this.section.points_possible;
this.section.section_completed = true;
player.activity.grade_activity();
player.update_section_status();
};
window.mheContpract = window.mheContpract || {};
window.mheContpract['practice_1'] = {
initialize: function(section) {
section.slide = new ReviewSlide(section);
},
show: function(section) {
section.slide.showSlide();
}
};
})();
//##########################################################
//Practice 2
;(function () {
'use strict';
var _accessibleArea = $('
')
.addClass('hidden_element')
.attr('aria-live', 'polite')
var _section
var _recallScore
var _recognitionScore
var _numOfCorrectRecallAnswers
var _numOfCorrectRecognitionAnswers
var _data = {
europe: {
step1: ['Albania', 'Andorra', 'Armenia', 'Austria', 'Azerbaijan', 'Belarus', 'Belgium', ['Bosnia and Herzegovina', 'Bosnia & Herzegovina', 'Bosnia'], 'Bulgaria', 'Croatia', 'Cyprus', ['Czech Republic', 'Czechia', 'Czech'], 'Denmark', 'Estonia', 'Finland', 'France', 'Georgia', 'Germany', 'Greece', ['Holy See', 'Vatican', 'Vatican City'], 'Hungary', 'Iceland', 'Ireland', 'Italy', 'Kosovo', 'Latvia', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macedonia', 'Malta', 'Moldova', 'Monaco', 'Montenegro', 'Netherlands', 'Norway', 'Poland', 'Portugal', 'Romania', ['Russia', 'Russian Federation'], 'San Marino', 'Serbia', 'Slovakia', 'Slovenia', 'Spain', 'Sweden', 'Switzerland', 'Turkey', 'Ukraine', ['United Kingdom', 'England', 'Scotland', 'Wales', 'Northern Ireland']],
step2: {
rightAnswers: [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1],
countries: ['Belgium', 'Singapore', 'Denmark', 'Finland', 'Portugal', 'Germany', 'Colombia', 'Italy', 'Austria', 'Argentina', 'Netherlands', 'France', 'Sweden', 'Australia', 'Poland', 'Greece', 'Norway', 'Nepal', 'Romania', 'Spain']
}
},
africa: {
step1: ['Algeria', 'Angola', 'Benin', 'Botswana', 'Burkina Faso', 'Burundi', 'Cabo Verde', 'Cameroon', 'Central African Republic', 'Chad', 'Comoros', ['Congo', 'Democratic Republic of the Congo', 'Republic of the Congo'], ["Cote d'Ivoire", 'Ivory Coast'], 'Djibouti', 'Egypt', 'Equatorial Guinea', 'Eritrea', 'Ethiopia', 'Gabon', ['Gambia', 'The Gambia'], 'Ghana', 'Guinea', 'Guinea-Bissau', 'Kenya', 'Lesotho', 'Liberia', 'Libya', 'Madagascar', 'Malawi', 'Mali', 'Mauritania', 'Mauritius', 'Morocco', 'Mozambique', 'Namibia', 'Niger', 'Nigeria', 'Rwanda', ['Sao Tome and Principe', 'Sao Tome & Principe', 'Sao Tome'], 'Senegal', 'Seychelles', 'Sierra Leone', 'Somalia', 'South Africa', 'South Sudan', 'Sudan', 'Swaziland', 'Tanzania', 'Togo', 'Tunisia', 'Uganda', 'Zambia', 'Zimbabwe'],
step2: {
rightAnswers: [1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1],
countries: ['Kenya', 'Moldova', 'Nigeria', 'Libya', 'Sudan', 'Nigeria', 'Bolivia', 'Tanzania', 'Zambia', 'Bangladesh', 'Egypt', 'Algeria', 'Zimbabwe', 'Montenegro', 'Uganda', 'Morocco', 'Ghana', 'Albania', 'Ethiopia', 'Angola']
}
}
}
for(var i=0; i < _data.europe.step1.length; i++){
if((typeof _data.europe.step1[i]) == "string"){
_data.europe.step1[i] = _data.europe.step1[i].toLowerCase();
} else {
for(var j=0; j < _data.europe.step1[i].length; j++){
if((typeof _data.europe.step1[i][j]) == "string"){
_data.europe.step1[i][j] = _data.europe.step1[i][j].toLowerCase();
}
}
}
}
for(var i=0; i < _data.africa.step1.length; i++){
if((typeof _data.africa.step1[i]) == "string"){
_data.africa.step1[i] = _data.africa.step1[i].toLowerCase();
} else {
for(var j=0; j < _data.africa.step1[i].length; j++){
if((typeof _data.africa.step1[i][j]) == "string"){
_data.africa.step1[i][j] = _data.africa.step1[i][j].toLowerCase();
}
}
}
}
function slideInitHandler(section) {
// console.log('slideInitHandler');
_section = section
_section.points_possible = 1;
_section.points_earned = 0;
_section.section_completed = false;
var _elem = section.jq
_elem.addClass('practice2')
}
function completeTask() {
_section.points_earned = 1;
_section.section_completed = true;
player.activity.grade_activity();
player.update_section_status();
// document.querySelector('.navigation_button.next_button').focus();
}
function slideShowHandler(section) {
// console.log('slideShowHandler', section);
_section = section
var ariaContainer = $('
')
.addClass('hidden_element')
.attr('aria-live', 'polite')
//Practice initialization-------------------------
var _elem = _section.jq.focus()
var $steps = _elem.find('.step').hide()
var $step = _elem.find('.step--initialize').show()
var $initial = $step.find('.step__initial').show()
var $btns = $step.find('.practice2__nav input')
.unbind('mouseover focusin focusout')
.bind('mouseover focusin', function () {
$btns
.addClass('inactive')
$(this)
.removeClass('inactive')
.addClass('active')
.focus()
})
.bind('mouseout focusout', function () {
$btns.removeClass('inactive active')
})
$step.find('.practice2__europe-btn')
.unbind('click')
.bind('click', function () {
initStep1(_data, 'europe') //to start european test
})
$step.find('.practice2__africa-btn')
.unbind('click')
.bind('click', function () {
initStep1(_data, 'africa') //to start african test
})
$step.append(_accessibleArea)
}
function initStep1(data, suffix) {
//Recall Test
var _elem = _section.jq.focus()
var $steps = _elem.find('.step').hide()
var $step = _elem.find('.step--' + suffix + '-1').show()
var $initial = $step.find('.step__initial').show()
_accessibleArea.empty().append($initial.clone())
var $feedback = $step.find('.step__feedback').hide()
var countriesToRecall = data[suffix].step1
//Clear practice instructions
$('.footer').last().empty()
var _userInputs = []
var $inputContainer = $step.find('.step__input-container').empty()
var cols = $inputContainer.data('cols')
var rows = $inputContainer.data('rows')
for (var i = 0; i < rows; i++) {
var $row = $('
').addClass('step__input-wrapper')
for (var j = 0; j < cols; j++) {
var $col = $('
').addClass('step__country-field').attr('type', 'text');
$row.append($col)
}
$inputContainer.append($row)
}
//BTN TO RECOGNITION TEST
var btnToRecognitionTest = $step.find('.step__enter-test-btn')
.attr('disabled', false)
.hide()
.unbind('click')
.bind('click', function () {
initStep2(data, suffix)
})
var btnCheck = $step.find('.step__check-btn')
.attr('disabled', true)
.show()
.unbind('click')
.bind('click', function () {
$fields.attr('disabled', true)
_userInputs = _userInputs.reduce(function (sum, input) {
console.log('sum:',sum)
var tempinput = input.toLowerCase();
if (sum.indexOf(tempinput) == -1) sum.push(tempinput)
return sum
}, [])
// removing duplications
countriesToRecall
.filter(function (item) {
return item instanceof Array
})
.forEach(function (arr) {
_userInputs
.filter(function (item) {
return arr.indexOf(item) != -1
})
.forEach(function (duplication, i) {
if (i > 0) _userInputs.splice(_userInputs.indexOf(duplication), 1)
})
})
var flattenCountries =
countriesToRecall.reduce(function (sum, item) {
return sum.concat(item)
}, [])
_numOfCorrectRecallAnswers =
_userInputs.reduce(function (sum, item) {
return sum + (flattenCountries.indexOf(item) != -1)
}, 0)
_recallScore = Math.round((100 / $fields.length) * _numOfCorrectRecallAnswers)
// alert('numOfCorrect => '+ numOfCorrect+'\r\n percentageCorrect =>'+percentageCorrect)
var $message = $('
')
.html([
'You recalled [',
_numOfCorrectRecallAnswers,
'] country names correctly, for a recall score of [',
_recallScore,
'] percent. Now, select the ',
btnToRecognitionTest.text(),
' button and move to the ',
suffix.charAt(0).toUpperCase() + suffix.slice(1),
' Recognition Test.'
].join(''))
_accessibleArea.empty().append($message.clone())
$feedback
.html($message)
.show()
btnCheck.hide()
btnToRecognitionTest.show()
})
var $fields =
$step.find('.step__country-field')
.attr('disabled', false)
$fields.bind('input', function () {
_userInputs =
$fields.toArray()
.map(function (field) {
return $(field).val().trim()
})
.filter(function (val) {
return !!val
})
btnCheck.attr('disabled', !_userInputs.length)
})
//mocking----------------------------------------
// var mock = ['Greece', 'Holy See', 'Vatican', ' Vatican City',
// 'Hungary',
// 'Iceland',
// 'Ireland',
// 'Italy',
// 'Kosovo',
// 'Latvia', 'Liechtenstein']
// mock.forEach(function (item, i) {
// $fields.eq(i).val(item)
// })
//endof mocking----------------------------------
}
function initStep2(data, suffix) {
//Recognition Test
var _elem = _section.jq.focus()
var $steps = _elem.find('.step').hide()
var $step = _elem.find('.step--' + suffix + '-2').show()
var $initial = $step.find('.step__initial').show()
var _ID = _section.jq.attr('id')
var countriesToCheck = data[suffix].step2.countries
var rightAnswers = data[suffix].step2.rightAnswers
var $inputContainer = $step.find('.step__input-container').empty()
var cols = $inputContainer.data('cols')
var rows = $inputContainer.data('rows')
for (var i = 0; i < rows; i++) {
var $row = $('
').addClass('step__input-wrapper')
for (var j = 0; j < cols; j++) {
var $col = $('
')
.addClass('step__country-field')
.attr('type', 'text')
$row.append($col)
}
$inputContainer.append($row)
}
$inputContainer
.find('.step__input-wrapper')
var allRadioGroups = []
$step
.find('.step__country-field')
.toArray()
.forEach(function (field, i) {
$(field).val(countriesToCheck[i])
.attr('disabled', true)
var $stepCountryWrapper = $('
')
.addClass('step__country-wrapper')
$(field).parent().append($stepCountryWrapper)
$stepCountryWrapper.append($(field))
var groupName = suffix + '-2-' + i
var $stepFieldGroup = $('