');
$ ('body').append (htm.join ('\n'));
$dialog_assign_to_classes = $ ('div#dialog_assign_to_classes').dialog ({
autoOpen: false,
width: 600,
height: 600,
modal: true,
resizable: false,
buttons: {'Close': function () {
$dialog_assign_to_classes.dialog ('close');
}
}
});
}
const qdata = {class_id: 'all',
maker_id: data.maker_id,
callback: 'qwiz_qcards_common.assign_to_classes_set_quizzes_decks'};
qqc.qjax (data.qname, 0, data.qrecord_id, 'get_quizzes_decks', qdata);
}
this.assign_to_classes_set_quizzes_decks = function (data) {
if (debug[0]) {
console.log ('[assign_to_classes_set_quizzes_decks] data:', data);
}
const quiz_flashcard_deck = assign_to_classes_data.qname == 'qwiz_' ? 'quiz' : 'flashcard deck';
var htm = [];
if (data.class_ids_assigned_to_qwiz.length == 0) {
const display_name = assign_to_classes_data.qrecord_id.replace (/sciencemusicvideosMeister1961-/, '');
htm.push ('Sorry, this ' + quiz_flashcard_deck + ', “' + display_name + '”, has not been made available to you for use in your classes.');
htm.push (' ');
htm.push (' ');
htm.push ('You will have to contact the ' + quiz_flashcard_deck + ' owner/creator and ask them to provide it to you.');
$ ('div#assign_to_classes_select').html (htm.join ('\n'));
} else {
htm.push ('');
if (any_selected) {
htm.push (' ');
htm.push ('');
htm.push ( 'Click in the box for options dropdown');
htm.push ('');
}
$ ('div#assign_to_classes_select').html (htm.join ('\n'));
$ ('h3.assign_to_classes').removeClass ('qwiz_display_none');
$ ('span#assign_to_classes_quiz_flashcard_deck').html (quiz_flashcard_deck + ' “' + data.display_names[0] + '”');
var $select = $ ('select#class_select');
$select.select2 ({placeholder: 'Select...',
width: '250px'
});
$select.on ('select2:unselect', deassign_class_from_quiz);
$select.on ('select2:select', add_class_to_qwiz_qdeck);
const assignment_due = data.assignment_due ? 'due' : 'assignment';
$ ('span#assign_to_classes_assignment_due').html (assignment_due);
$ ('input#assign_to_classes_assignment_date').removeClass ('qwiz_display_none');
if (typeof data.assignment_dates[0] != 'undefined') {
const assignment_date_yyyy_mm_dd = DateFormat.format.date (data.assignment_dates[0]*1000, 'yyyy-MM-dd');
$ ('input#assign_to_classes_assignment_date').val (assignment_date_yyyy_mm_dd);
}
}
$dialog_assign_to_classes.dialog ('open');
}
function deassign_class_from_quiz (e) {
if (debug) {
console.log ('[deassign_class_from_quiz] e.params.data:', e.params.data);
console.log ('[deassign_class_from_quiz] e.params.data.element.value:', e.params.data.element.value);
}
var class_id = e.params.data.element.value;
var class_name = e.params.data.element.text;
const data = {class_id: class_id,
class_name: class_name,
i_row: 0,
callback: 'qwiz_qcards_common.assign_to_classes_updated'
};
qqc.qjax ('', 0, assign_to_classes_data.qrecord_id, 'delete_class_from_qwiz_qdeck', data);
}
function add_class_to_qwiz_qdeck (e) {
if (debug) {
console.log ('[add_class_to_qwiz_qdeck] e.params.data:', e.params.data);
console.log ('[add_class_to_qwiz_qdeck] e.params.data.element.value:', e.params.data.element.value);
}
var class_id = e.params.data.element.value;
var class_name = e.params.data.element.text;
const data = {class_id: class_id,
class_name: class_name,
i_row: 0,
callback: 'qwiz_qcards_common.assign_to_classes_updated'
};
qqc.qjax ('', 0, assign_to_classes_data.qrecord_id, 'add_class_to_qwiz_qdeck', data);
}
this.update_assignment_date = function (input_el) {
var value = input_el.value;
if (! value) {
$ ('div#assign_to_classes_feedback_msg').html ('Please enter a valid date');
return;
}
value = Date.parse (value + 'T00:00') / 1000;
const data = {qrecord_ids: [assign_to_classes_data.qrecord_id],
field: 'assignment_date',
value: value,
callback: 'qwiz_qcards_common.assign_to_classes_updated'
}
qqc.qjax ('', 0, assign_to_classes_data.qrecord_id, 'update_quiz_deck', data);
}
this.assign_to_classes_updated = function (data) {
var hhmmss = DateFormat.format.date (new Date ().getTime (), 'h:mm:ss');
var feedback;
if (data.affected_rows >= 1) {
feedback = 'Database updated ' + hhmmss;
} else {
feedback = ''
+ 'Sorry, unable to update database'
+ '';
}
$ ('div#assign_to_classes_feedback_msg').html (feedback);
}
this.request_assign_to_class = function (q_f) {
var qname;
var i_qwiz_deck;
var qrecord_id;
var maker_id;
if (q_f) {
qname = 'qwiz_';
i_qwiz_deck = qwiz_.assign_to_class_i_qwiz;
qrecord_id = qwiz_.assign_to_class_qrecord_id;
} else {
qname = 'qcard_';
i_qwiz_deck = qcard_.assign_to_class_i_deck;
qrecord_id = qcard_.assign_to_class_qrecord_id;
maker_id = document_qwiz_qdeck_maker_ids['qdeck' + i_qwiz_deck];
}
const school_id = document_qwiz_school_id;
const taker_id = document_qwiz_taker_id;
const page_url = window.location.href;
const data = {taker_username: document_qwiz_username,
school_id: school_id,
taker_id: taker_id,
page_url: page_url};
if (! plugin_url) {
plugin_url = qqc.get_qwiz_param ('url', './');
}
const spinner = '';
$ ('div#' + qname + 'request_assign_to_class_feedback').html (spinner);
qqc.qjax (qname, i_qwiz_deck, qrecord_id, 'request_assign_to_class', data);
}
this.do_not_show_assign_to_class = function (checkbox_el) {
const cookie_name = document_qwiz_username + 'do_not_show_assign_to_class';
if (checkbox_el.checked) {
const options = {expires: 7};
$.cookie (cookie_name, 1, options);
} else {
$.removeCookie (cookie_name);
}
}
function set_pay_unlock_menu (qname, i_qwiz_deck, pay_errmsg,
pay_preview_status_htm, pay_prefix_htm,
taker_options, all_taker_options_free_b,
maker_options, maker_fees_b) {
var htm = '';
var quiz_flashcard_deck;
var qwiz_qdeck;
var qwiz_qcard_;
if (qname == 'qwiz_') {
quiz_flashcard_deck = 'quiz';
qwiz_qdeck = 'qwiz';
qwiz_qcard_ = 'qwiz_';
} else {
quiz_flashcard_deck = 'flashcard deck';
qwiz_qdeck = 'qdeck';
qwiz_qcard_ = 'qcard_';
}
htm += '
'
+ pay_preview_status_htm
+ '
';
var check_maker_session_id_b = false;
if (document_qwiz_user_logged_in_b === true) {
if (get_qwizdeckdata (qname, i_qwiz_deck, 'pay_quiz_ok') != 'paid') {
if (taker_options.length) {
htm += pay_prefix_htm + taker_options.join ('');
var pay_now_sign_up = all_taker_options_free_b ? 'Sign up' : 'Pay now';
htm += ''
+ pay_now_sign_up
+ '';
} else {
if (document_qwiz_school_id == 1) {
htm += 'Please contact the maker of this ' + quiz_flashcard_deck
+ ': they need to provide an individual-student payment '
+ 'option for you';
} else {
htm += 'Please talk to your teacher: they need to provide access '
+ 'to this ' + quiz_flashcard_deck + ' for you';
}
}
}
} else {
if (! pay_errmsg) {
var local_url = encodeURIComponent (qqc.get_qwiz_param ('url', './'));
var query_string = '?url=' + local_url + '&qname=' + qwiz_qcard_ + '&i_qwiz=' + i_qwiz_deck;
var secure_server_loc = qqc.get_qwiz_param ('secure_server_loc', 'https://qwizcards.com/admin');
var msg = 'Please register so you can get credited for your payment';
htm += '
'
+ 'Students in a teacher’s class: '
+ 'Use your teacher’s registration code to '
+ ''
+ qqc.T ('register')
+ '. '
if (taker_options.length) {
htm += ' ' + pay_prefix_htm + taker_options.join ('');
if (! all_taker_options_free_b) {
const bmsg = btoa (msg);
htm += `
Pay now
`;
}
}
htm += '
');
var info;
if (qname == 'qwiz_') {
info = qqc.T ("'Redo' - questions done before this date will not be counted in totals");
} else {
info = qqc.T ("'Redo' - cards done before this date will not be counted in totals");
}
htm.push ( 'Restart:');
htm.push ( '');
htm.push ( '');
htm.push ( ' ');
if (! topics_only_f) {
htm.push (qqc.T ('Max to practice in this session') + ':');
} else {
htm.push (questions_cards);
}
htm.push ( '');
if (qname == 'qwiz_') {
info = 'Note: questions that you miss will be repeated within this session';
} else {
info = 'Note: cards that you mark “Need more practice” will be repeated within this session';
}
htm.push ( '');
htm.push ('
');
if (qrecord_id && document_qwiz_user_logged_in_b === true) {
if (! topics_only_f) {
htm.push ('');
htm.push ( 'Do ' + questions_cards + ': ');
htm.push ('');
htm.push ('');
htm.push ('');
htm.push ('');
htm.push ('');
htm.push (' ');
}
}
var begin_label = qqc.T ('Begin practice');
htm.push ('');
htm.push (' ');
htm.push (' ');
}
$use_dataset_options_div.html (htm.join ('\n')).show ();
if (qname == 'qcard_') {
qcard_.set_container_width_height (i_qwiz);
}
if (topics_only_f || get_qwizdeckdata (qname, i_qwiz, 'expand_topics')) {
$ ('table#dataset_units_topics-qwiz_' + i_qwiz + ' img.expand_collapse_unit').each (function () {
qqc.dataset_unit_expand_collapse (qname, i_qwiz, this);
});
}
}
this.offset_height_rescale = function ($el, scale_fac, add_margin) {
const unscaled_height = $el.outerHeight ();
var offset = unscaled_height*(scale_fac - 1.0);
if (add_margin) {
offset += add_margin;
}
$el.css ({'margin-bottom': offset.toFixed (1)+ 'px'});
}
this.create_sortable_unit_number = function (unit_no) {
var sortable_unit_no = '';
var type = typeof unit_no;
if (type != 'number' && type != 'string') {
sortable_unit_no = 'z';
} else if (unit_no == '') {
sortable_unit_no = 'z';
} else {
var pieces = unit_no.split ('.');
var n_pieces = pieces.length;
if (n_pieces > 1) {
var pieces2 = pieces[1].split ('-');
pieces[1] = pieces2[0];
}
var n = Math.min (2, n_pieces);
for (var i=0; i';
htm.push (`
Sign up for a two-week free trial with a PayPal or credit card
authorization.
There is no charge; you can cancel any time.
After two weeks you will be charged $24.95 per month;
again, you can cancel any time.
`);
const server_name = qqc.get_qwiz_param ('server_name', 'Qwizcards');
if (server_name == '192.168.1.120') {
htm.push (`
`);
}
htm.push (' ');
htm.push (`
${spinner}
`);
$subscription_screen_div.html (htm.join ('\n')).show ();
var i_tries = 0;
const delay_run = function () {
if (typeof paypal == 'undefined') {
i_tries++;
if (i_tries < 20) {
setTimeout (delay_run, 250);
}
} else {
var add_htm = [];
add_htm.push (`
`);
var display_pay_screen;
if (qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (i_qwiz, 'display_pay_screen');
} else {
display_pay_screen = qcard_.get_deckdata (i_qwiz, 'display_pay_screen');
}
if (! display_pay_screen) {
const return_to = qname == 'qwiz_' ? 'quiz' : 'flashcard deck';
add_htm.push (`
`);
}
$subscription_screen_div.append (add_htm.join ('\n'));
}
}
setTimeout (delay_run, 250);
}
this.free_trial_registration = function (qname, i_qwiz, data, actions) {
if (debug[0]) {
console.log ('[free_trial_registration] data:', data);
}
document_qwiz_subscription_id = data.subscriptionID;
if (qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (i_qwiz, 'display_pay_screen');
if (display_pay_screen == 'special_offer') {
var data = {login_f: 0,
special_offer: 1,
register_v2: '1',
subscription: 1,
subscription_id: document_qwiz_subscription_id,
callback: 'special_offer_callback'
};
if (debug[0]) {
console.log ('[free_trial_registration] data', data);
}
qqc.qjax (qname, i_qwiz, '', 'new_student_registration', data);
}
return;
}
const msg = 'Create your learn-biology.com login Please be sure to complete this step in order to access learn-biology.com';
if (qname == 'qwiz_') {
qwiz_.display_login (i_qwiz, false, 'register', msg);
} else {
qcard_.display_login (i_qwiz, false, 'register', msg);
}
}
this.create_pay_screen = function (qname, qdata, i_qwiz, msg, pay_now_sign_up) {
var $pay_screen_div = qqc.$get_login_div (qname, i_qwiz);
var htm = [];
if (qdata[i_qwiz].pay_errmsg) {
htm.push ('' + qdata[i_qwiz].pay_errmsg + ' ');
} else {
if (msg) {
htm.push (msg + ' ');
}
var n_pay_options = qdata[i_qwiz].taker_payment_type_ids.length;
var any_promo = qdata[i_qwiz].any_promo;
var promo_applied = false;
/*
Discount automatically applied to school's students in set_pay_settings ()
-- as soon as an option has promo_fee != -1.
if (any_promo) {
var promo_code = qdata[i_qwiz].promo_code;
promo_code = promo_code ? promo_code : '';
promo_applied = qdata[i_qwiz].promo_applied;
htm.push ('');
}
*/
htm.push ('');
htm.push ('');
}
$pay_screen_div.html (htm.join ('\n')).show ();
}
this.update_pay_button = function (select_el, qname, i_qwiz) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + ' div.signup_confirm_email_errmsg').hide ();
if (select_el.value <= '0.00') {
$ (qwiz_deck + 'div.sign_up_button').show ();
$ (qwiz_deck + 'div.paypal_button').hide ();
} else {
$ (qwiz_deck + 'div.sign_up_button').hide ();
$ (qwiz_deck + 'div.paypal_button').show ();
}
}
this.hide_signup_confirm_email_errmsg = function (input_el) {
$ (input_el).parents ('div.sign_up_button').find ('div.signup_confirm_email_errmsg').hide ();
}
this.update_email_callback = function (qname, i_qwiz, errmsg) {
if (debug) {
console.log ('[update_email_callback] qname:', qname, ', i_qwiz:', i_qwiz, ', errmsg:', errmsg);
}
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
if (errmsg == 'need_password') {
qqc.create_password_dialog (qname, i_qwiz);
$dialog_current_password.dialog ('open');
return false;
} else if (errmsg == 'password_incorrect') {
$ ('#current_password_errmsg').html ('Password incorrect');
} else if (errmsg == 'not_unique') {
$ (qwiz_deck + ' div.update_email_errmsg').html ('Email address already in use');
$ (qwiz_deck + ' span.confirm_email_address').addClass ('qwiz_button_disabled');
} else if (errmsg == 'fail') {
$ (qwiz_deck + ' div.update_email_errmsg').html ('Sorry, unable to update email');
} else if (errmsg == 'ok') {
document_qwiz_email = $ (qwiz_deck + ' input.confirm_email_address').val ();
qqc.confirm_email2 (qname, i_qwiz)
}
if ($dialog_current_password) {
$dialog_current_password.dialog ('close');
}
}
this.update_email_hide_error = function (qname, i_qwiz) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + ' div.update_email_errmsg').html ('');
$ (qwiz_deck + ' span.confirm_email_address').removeClass ('qwiz_button_disabled');
return false;
}
var update_email_data;
this.confirm_email = function (confirm_el, qname, i_qwiz) {
if ($ (confirm_el).hasClass ('qwiz_button_disabled')) {
return false;
}
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
var email = $ (qwiz_deck + 'input.confirm_email_address').val ();
if (email == '') {
$ (qwiz_deck + ' div.update_email_errmsg').html ('Please enter email address');
$ (confirm_el).addClass ('qwiz_button_disabled');
return false;
}
if (email != document_qwiz_email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
if (! re.test (email)) {
$ (qwiz_deck + ' div.update_email_errmsg').html ('Not a valid email address');
$ (confirm_el).addClass ('qwiz_button_disabled');
} else {
update_email_data = {field: 'email',
value: email,
callback: 'qwiz_qcards_common.update_email_callback'};
$ (qwiz_deck + ' span.confirm_email_address').addClass ('qwiz_button_disabled');
qqc.qjax (qname, i_qwiz, '', 'update_my_account', update_email_data);
}
return false;
}
qqc.confirm_email2 (qname, i_qwiz);
}
this.confirm_email2 = function (qname, i_qwiz) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + ' .signup_confirm_email').css ({visibility: 'visible'});
$ (qwiz_deck + ' input.signup_confirm_email').val ('').focus ();
$ (qwiz_deck + ' input.sign_up').removeClass ('qwiz_button_disabled').removeAttr ('disabled');
$ (qwiz_deck + ' div.signup_confirm_email_errmsg').hide ();
var email_address = $ (qwiz_deck + ' input.confirm_email_address').val ();
var email_confirm_data = {field: 'email_confirm',
value: '',
email_address: email_address,
username: document_qwiz_username,
callback: 'qwiz_qcards_common.confirm_email_callback'};
qqc.qjax (qname, i_qwiz, '', 'update_my_account', email_confirm_data);
}
this.confirm_email_callback = function (qname, i_qwiz, errmsg) {
if (debug[0]) {
console.log ('[confirm_email_callback] errmsg:', errmsg);
}
if (errmsg == 'need_password') {
qqc.create_password_dialog (qname, i_qwiz);
$dialog_current_password.dialog ('open');
}
}
this.hide_current_password_errmsg = function () {
$ ('#current_password_errmsg').html ('');
}
this.create_password_dialog = function (qname, i_qwiz) {
var htm = [];
htm.push ('
');
htm.push ( 'You are currently registered as an “independent student,” not enrolled in a school or class. ');
htm.push ( 'If you have a registration code you can join a class. ');
htm.push ( ' (Any work you have completed on quizzes and flashcard decks will be transferred to the teacher’s gradebook.)');
htm.push ('
');
htm.push ( '');
htm.push ( ' ');
htm.push ( '');
htm.push ( '');
htm.push ( '(you can return to complete your comments)');
htm.push ( '');
htm.push ('
');
var $feedback_screen_div = qqc.$get_login_div (qname, i_qwiz);
$feedback_screen_div.html (htm.join ('\n')).show ();
var isChrome = false; //DKTMP /Chrome/.test (navigator.userAgent) && /Google Inc/.test (navigator.vendor) && ! /CrOS/.test (navigator.userAgent);
if (isChrome) {
$ ('div.qwiz-provide_feedback').on ('paste', function (event) {
var feedback_el = this;
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
var n_items = items.length;
var blob = null;
for (var i=0; i\s*<\/(p|h\d)>/, '');
return htm;
}
this.is_only_tags_and_whitespace = function (htm) {
var htm = qqc.remove_tags_eols (htm, true);
htm = htm.replace (/ | | | | /, '');
const no_non_whitespace = htm.search (/\S/) == -1;
return no_non_whitespace;
}
function submit_feedback2 (qname, i_qwiz, i_question, feedback_html, matches) {
if (matches) {
if (debug[0]) {
console.log ('[submit_feedback2] global_data_urls[0].substr (0, 50):', global_data_urls[0].substr (0, 50));
}
var n_matches = matches.length;
for (var i=0; i');
htm.push ( 'Continue');
htm.push ( '');
} else {
htm.push ( '');
}
var $feedback_screen_div = qqc.$get_login_div (qname, i_qwiz);
$feedback_screen_div.html (htm.join ('\n')).show ();
}
this.cancel_provide_feedback = function (qname, i_qwiz) {
var qwiz_qdeck;
if (qname == 'qwiz_') {
qwiz_qdeck = 'div#qwiz' + i_qwiz;
} else {
qwiz_qdeck = 'div.qcard_card-qdeck' + i_qwiz;
}
var $provide_feedback = $ (qwiz_qdeck + ' div.qwiz-provide_feedback');
provide_feedback_html[qwiz_qdeck] = $provide_feedback.html ();
if (provide_feedback_html[qwiz_qdeck].length > 20.0e6) {
alert ('Please note: the images in your feedback are large. You may want to submit your comments so far before adding more images.');
}
var qwiz_qcard_ = qname == 'qwiz_' ? qwiz_ : qcard_;
qwiz_qcard_.no_login (i_qwiz, false, true);
}
this.preview_iframe_close = function () {
$ ('div#preview_iframe_wrapper').remove ();
}
this.init_hide_show_password = function (selector) {
$ (selector).hidePassword (true, {
states: {
shown: {
toggle: {className: 'qwiz-hideShowPassword-toggle-hide'}
},
hidden: {
toggle: {className: 'qwiz-hideShowPassword-toggle-show'}
}
}
});
}
this.create_register_taker_screen = function (qname, i_qwiz, proceed_to_pay,
msg) {
register_taker_global_reg_code_ok_f = false;
register_taker_global_username = '';
register_taker_global_first_name = '';
register_taker_global_last_name = '';
register_taker_global_sha3_password = '';
register_taker_global_username_unique_f = false;
register_taker_global_email_unique_f = false;
var display_pay_screen = set_display_pay_screen (qname, i_qwiz);
var htm = [];
var trial_pay = '';
if (msg) {
htm.push (msg + ' ');
if (/free/.test (msg)) {
trial_pay = 'free';
}
}
htm.push ('');
var $register_taker_screen_div = qqc.$get_login_div (qname, i_qwiz);
$register_taker_screen_div.html (htm.join ('\n')).show ();
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
qqc.init_hide_show_password (qwiz_deck + 'input.register_taker_password');
qqc.init_hide_show_password (qwiz_deck + 'input.register_taker_confirm_password');
if (display_pay_screen == 'subscribe'
|| display_pay_screen == 'free_trial'
|| display_pay_screen == 'special_offer') {
$ (qwiz_deck + '.register_taker_email').show ();
$ (qwiz_deck + '.register_taker_username').val ('').focus ();
} else if (display_pay_screen == 'signup') {
$ (qwiz_deck + '.register_taker_email').show ();
$ (qwiz_deck + '.register_taker_reg_code').val ('').focus ();
} else {
$ (qwiz_deck + '.register_taker_reg_code').val ('').focus ();
}
}
function qwiz_deck_selector (qname, i_qwiz) {
var qwiz_deck = qname == 'qwiz_' ? 'div#qwiz' + i_qwiz : 'div.qcard_card-qdeck' + i_qwiz;
return qwiz_deck + ' ';
}
this.register_taker_check_password_match = function (qname, i_qwiz) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + '.register_taker_password_errmsg').hide ();
var confirm_password = $ (qwiz_deck + 'input.register_taker_confirm_password').val ();
if (confirm_password != '') {
var password = $ (qwiz_deck + '.register_taker_password').val ();
if (password != '') {
if (password != confirm_password) {
$ (qwiz_deck + '.register_taker_password_errmsg').html ('Password and Confirm password do not match').show ();
}
}
}
}
this.register_taker_check_reg_code = function (qname, i_qwiz, reg_code) {
if (reg_code == '') {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + 'tr.register_taker_first_name_last_name').show ();
$ (qwiz_deck + '.register_taker_reg_code_class_name').html ('').hide ();
$ (qwiz_deck + '.register_taker_login_name_exists,' + qwiz_deck + ' .register_taker_forgot_password').hide ();
$ (qwiz_deck + 'span.register_taker_login').html ('Register');
$ (qwiz_deck + 'tr.register_taker_confirm_password_email').show ();
$ (qwiz_deck + 'tr.register_taker_please_continue_below').show ();
$ (qwiz_deck + '.register_taker_email_required, ' + qwiz_deck + '.register_taker_email').show ();
register_taker_global_reg_code_ok_f = false;
qqc.register_taker_check_unique (qname, i_qwiz, 'username');
} else {
var data = {reg_code: reg_code,
callback: 'register_taker_reg_code_ok_or_no'};
register_taker_global_in_process_b = true;
qqc.qjax (qname, i_qwiz, '', 'check_reg_code', data);
}
return false;
}
function set_display_pay_screen (qname, i_qwiz_deck) {
var display_pay_screen = '';
if (document_qwiz_login_alt_free_trial) {
display_pay_screen = 'free_trial';
} else {
if (qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (i_qwiz_deck, 'display_pay_screen');
}
}
return display_pay_screen;
}
this.register_taker_reg_code_ok_or_no = function (data) {
if (debug[0]) {
console.log ('[register_taker_reg_code_ok_or_no] data:', data);
}
register_taker_global_reg_code_ok_f = data.num_rows == 1;
var qwiz_deck = qwiz_deck_selector (data.qname, data.i_qwiz);
if (register_taker_global_reg_code_ok_f) {
$ (qwiz_deck + '.register_taker_if_your_teacher').hide ();
$ (qwiz_deck + 'tr.register_taker_please_continue_below').hide ();
$ (qwiz_deck + 'tr.register_taker_first_name_last_name').show ();
var display_pay_screen = set_display_pay_screen (data.i_qwiz);
if (data.qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (data.i_qwiz, 'display_pay_screen');
}
if (display_pay_screen != 'signup') {
$ (qwiz_deck + '.register_taker_email_required, ' + qwiz_deck + '.register_taker_email').hide ();
}
register_taker_global_reg_code_maker_id = data.maker_id;
register_taker_global_reg_code_school_id = data.school_id;
register_taker_global_reg_code_class_id = data.class_id;
register_taker_global_reg_code_class_name = data.class_name;
register_taker_global_reg_code_school_name = data.school_name;
$ (qwiz_deck + '.register_taker_reg_code_class_name').html ('Registration for class ' + register_taker_global_reg_code_class_name + ', ' + register_taker_global_reg_code_school_name + '').show ();
} else {
$ (qwiz_deck + '.register_taker_reg_code_errmsg').html ('Could not find registration code').show ();
$ (qwiz_deck + '.register_taker_reg_code_class_name').html ('').hide ();
}
register_taker_global_in_process_b = false;
}
this.register_taker_check_unique = function (qname, i_qwiz, field) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
var value = $ (qwiz_deck + 'input.register_taker_' + field).val ();
if (value != '') {
if (field == 'username') {
if (/["\\;]/.test (value)) {
$ (qwiz_deck + '.register_taker_username_errmsg').html ('Invalid characters').show ();
return false;
}
}
var data = {field: field,
value: value,
callback: 'register_taker_unique_or_no'};
register_taker_global_in_process_b = true;
qqc.qjax (qname, i_qwiz, '', 'check_taker_name_email_unique', data);
}
return false;
}
this.register_taker_unique_or_no = function (data) {
if (debug[0]) {
console.log ('[register_taker_unique_or_no] data:', data);
}
var qwiz_deck = qwiz_deck_selector (data.qname, data.i_qwiz);
var field = data.field;
var unique_f = data.unique_f;
if (field == 'username') {
register_taker_global_username_unique_f = unique_f;
if (unique_f == 0) {
if (debug[0]) {
console.log ('[register_taker_unique_or_no] "username already in use"');
}
var display_pay_screen = '';
if (data.qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (data.i_qwiz, 'display_pay_screen');
}
register_taker_display_pay_screen
= display_pay_screen && display_pay_screen != 'free_trial'
&& display_pay_screen != 'special_offer';
if (register_taker_global_reg_code_ok_f
|| register_taker_display_pay_screen) {
$ (qwiz_deck + 'tr.register_taker_confirm_password_email, ' + qwiz_deck + 'tr.register_taker_first_name_last_name').hide ();
$ (qwiz_deck + '.register_taker_login_name_exists, ' + qwiz_deck + '.register_taker_forgot_password').show ();
$ (qwiz_deck + 'span.register_taker_login').html ('Log in');
$ (qwiz_deck + '.register_taker_password').focus ();
} else {
$ (qwiz_deck + '.register_taker_username_errmsg').html ('Login name already in use').show ();
$ (qwiz_deck + '.register_taker_login_name_exists, ' + qwiz_deck + '.register_taker_forgot_password').hide ();
$ (qwiz_deck + 'span.register_taker_login').html ('Register');
$ (qwiz_deck + 'tr.register_taker_confirm_password_email').show ();
}
} else {
$ (qwiz_deck + 'span.register_taker_login').html ('Register');
$ (qwiz_deck + 'tr.register_taker_first_name_last_name').show ();
$ (qwiz_deck + '.register_taker_login_name_exists, ' + qwiz_deck + '.register_taker_forgot_password').hide ();
if (register_taker_global_reg_code_ok_f
|| register_taker_display_pay_screen) {
if (register_taker_display_pay_screen == 'signup') {
$ (qwiz_deck + 'tr.register_taker_confirm_password_email').show ();
} else if (register_taker_display_pay_screen == 'register'
&& ! register_taker_global_reg_code_ok_f) {
$ (qwiz_deck + 'tr.register_taker_confirm_password_email').show ();
} else {
$ (qwiz_deck + 'tr.register_taker_confirm_password').show ();
}
} else {
$ (qwiz_deck + 'tr.register_taker_confirm_password_email').show ();
}
$ (qwiz_deck + '.register_taker_first_name').focus ();
}
} else {
register_taker_global_email_unique_f = unique_f;
if (unique_f == 0) {
if (debug[0]) {
console.log ('[register_taker_unique_or_no] "email already in use"');
}
$ (qwiz_deck + '.register_taker_email_errmsg').html ('Email already in use').show ();
}
}
register_taker_global_in_process_b = false;
}
this.register_taker = function (qname, i_qwiz, proceed_to_pay) {
if (debug[0]) {
console.log ('[register_taker] register_taker_global_in_process_b:', register_taker_global_in_process_b);
}
var n_tries = 0;
var delay_register_taker = function () {
if (register_taker_global_in_process_b) {
if (debug[0]) {
console.log ('[delay_register_taker] n_tries:', n_tries);
}
if (n_tries > 40) {
alert ('Sorry, unable to process request');
return false;
} else {
n_tries++;
setTimeout (delay_register_taker, 250);
}
} else {
qqc.register_taker2 (qname, i_qwiz, proceed_to_pay);
}
}
setTimeout (delay_register_taker, 250);
return false;
}
this.register_taker2 = function (qname, i_qwiz, proceed_to_pay) {
if (debug[0]) {
console.log ('[register_taker2]');
}
var ok_f = true;
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
var display_pay_screen = set_display_pay_screen (qname, i_qwiz);
var reg_code = '';
if (display_pay_screen != 'free_trial'
&& display_pay_screen != 'special_offer') {
reg_code = $ (qwiz_deck + '.register_taker_reg_code').val ();
reg_code = reg_code.trim ();
if (reg_code == '') {
$ (qwiz_deck + '.register_taker_reg_code_errmsg').html ('Please enter registration code').show ();
ok_f = false;
}
}
register_taker_global_username = $ (qwiz_deck + '.register_taker_username').val ();
if (register_taker_global_username == '') {
$ (qwiz_deck + '.register_taker_username_errmsg').html ('Please enter login name').show ();
ok_f = false;
}
if (/["\\;]/.test (register_taker_global_username)) {
$ (qwiz_deck + '.register_taker_username_errmsg').html ('Invalid characters').show ();
ok_f = false;
}
var password = $ (qwiz_deck + '.register_taker_password').val ();
if (password == '') {
$ (qwiz_deck + '.register_taker_password_errmsg').html ('Please enter password').show ();
ok_f = false;
}
var email = $ (qwiz_deck + 'input.register_taker_email').val ();
if (! proceed_to_pay) {
if (qname == 'qwiz_') {
proceed_to_pay = ! qwiz_.get_qwizdata (i_qwiz, 'all_taker_options_free_b');
} else {
proceed_to_pay = ! qcard_.get_deckdata (i_qwiz, 'all_taker_options_free_b');
}
}
if ( ! ( register_taker_global_reg_code_ok_f
|| register_taker_display_pay_screen)
|| register_taker_global_username_unique_f == 1
|| register_taker_global_username == '' ) {
ok_f = ok_f && register_taker_global_username_unique_f;
if (ok_f && register_taker_global_username != '' && ! register_taker_global_username_unique_f) {
$ (qwiz_deck + '.register_taker_username_errmsg').html ('Login name already in use').show ();
ok_f = false;
}
register_taker_global_first_name = $ (qwiz_deck + '.register_taker_first_name').val ();
if (register_taker_global_first_name == '') {
$ (qwiz_deck + '.register_taker_first_name_errmsg').html ('Please enter first name').show ();
ok_f = false;
}
register_taker_global_last_name = $ (qwiz_deck + '.register_taker_last_name').val ();
if (register_taker_global_last_name == '') {
$ (qwiz_deck + '.register_taker_last_name_errmsg').html ('Please enter last name').show ();
ok_f = false;
}
if (reg_code && ! ( register_taker_global_reg_code_ok_f
|| register_taker_display_pay_screen)) {
ok_f = false;
$ (qwiz_deck + '.register_taker_reg_code_errmsg').html ('Could not find registration code').show ();
}
var display_pay_screen = set_display_pay_screen (qname, i_qwiz);
if (display_pay_screen == 'free_trial'
|| display_pay_screen == 'special_offer') {
proceed_to_pay = false;
}
if (email == '') {
if (! register_taker_global_reg_code_ok_f || display_pay_screen == 'signup') {
$ (qwiz_deck + '.register_taker_email_errmsg').html ('Please enter email').show ();
ok_f = false;
}
} else if (register_taker_global_email_unique_f){
ok_f = qqc.register_taker_validate_email (qname, i_qwiz, ok_f);
} else {
$ (qwiz_deck + '.register_taker_email_errmsg').html ('Email already in use').show ();
ok_f = false;
}
if (password != '') {
var confirm_password = $ (qwiz_deck + 'input.register_taker_confirm_password').val ();
if (password != confirm_password) {
$ (qwiz_deck + '.register_taker_password_errmsg').html ('Password and Confirm password do not match').show ();
ok_f = false;
}
}
if (! reg_code && display_pay_screen == 'signup') {
$ (qwiz_deck + '.register_taker_reg_code_errmsg').html ('Please enter registration code').show ();
$ (qwiz_deck + '.register_taker_reg_code_class_name').html ('').hide ();
}
/*
if (! reg_code) {
var f = document.forms['register_taker_' + qname + i_qwiz];
if (typeof (f['free_trial_' + qname + i_qwiz]) != 'undefined') {
var yes_no = f['free_trial_' + qname + i_qwiz].value;
if (yes_no == '') {
$ (qwiz_deck + '.qwiz_free_trial_yes_no_errmsg').html ('Please pick one').show ();
ok_f = false;
} else if (yes_no == 'Yes') {
proceed_to_pay = true;
}
}
}
*/
if (ok_f) {
if (! proceed_to_pay && ! reg_code
&& display_pay_screen != 'free_trial'
&& display_pay_screen != 'special_offer') {
ok_f = confirm ('You have not entered a registration code;\nyou will be an "independent student," not in a class.\n\nIs this OK? If not, click "Cancel" and enter a code.');
}
} else {
if (qname == 'qcard_') {
qcard_.set_container_width_height (i_qwiz);
}
}
}
register_taker_global_sha3_password = CryptoJS.SHA3 (password).toString ();
if (ok_f) {
var login_f = ( register_taker_global_reg_code_ok_f
|| register_taker_display_pay_screen
)
&& register_taker_global_username_unique_f == 0 ? 1 : 0;
var data = {login_f: login_f,
reg_code: reg_code,
school_id: register_taker_global_reg_code_school_id,
username: register_taker_global_username,
firstname: register_taker_global_first_name,
lastname: register_taker_global_last_name,
sha3_password: register_taker_global_sha3_password,
email: email,
register_v2: '1',
subscription: '1', // Indicate new version.
callback: 'taker_registered'
};
if (proceed_to_pay) {
data.proceed_to_pay_f = '1';
}
if (document_qwiz_subscription_id) {
data.subscription_id = document_qwiz_subscription_id;
}
if (debug[0]) {
console.log ('[register_taker2] data', data);
}
qqc.qjax (qname, i_qwiz, '', 'new_student_registration', data);
}
return false;
}
this.register_taker_hide_error = function (qname, i_qwiz, input_el) {
var classname = input_el.className;
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + '.' + classname + '_errmsg').hide ();
$ (qwiz_deck + '.register_taker_errmsg').hide ();
}
this.taker_registered = function (data) {
if (debug[0]) {
console.log ('[taker_registered] data:', data);
console.log ('[taker_registered] register_taker_global_reg_code_ok_f:', register_taker_global_reg_code_ok_f, ', register_taker_global_username_unique_f:', register_taker_global_username_unique_f);
console.log ('[taker_registered] register_taker_display_pay_screen:', register_taker_display_pay_screen);
}
var errmsg = data.errmsg;
var display_errmsg = '';
if (! errmsg) {
document_qwiz_user_logged_in_b = true;
document_qwiz_session_id = data.session_id;
document_qwiz_username = register_taker_global_username;
document_qwiz_school_id = data.school_id;
document_qwiz_taker_id = data.taker_id;
document_qwiz_email = data.email;
document_qwiz_independent_taker_f = data.school_id == 1;
var options = {path: '/', expires: 1};
$.cookie ('qwiz_session_id', document_qwiz_session_id, options);
document_qwiz_remember_f = true;
qqc.set_user_menus_and_icons ();
var msg = '';
if (data.add_and_provide_f) {
msg = 'Thanks! You now have a free-trial subscription.';
}
const i_qwiz = data.i_qwiz;
if (qwiz_ && qwiz_.any_pay_quiz_f) {
qwiz_.pay_lock_settings (i_qwiz, i_qwiz, undefined, undefined, msg);
}
if (qcard_ && qcard_.any_pay_deck_f) {
qcard_.pay_lock_settings (i_qwiz, i_qwiz, undefined, undefined, msg);
}
if (register_taker_global_reg_code_ok_f) {
if (data.login_f) {
register_taker_global_first_name = data.firstname;
register_taker_global_last_name = data.lastname;
}
var fields = {};
fields['First_name'] = [register_taker_global_first_name];
fields['Last_name'] = [register_taker_global_last_name];
var custom_input_data
= {input_field_names: ['First_name', 'Last_name'],
fields: fields};
var taker_data = {userids: [document_qwiz_taker_id],
usernames: [register_taker_global_username],
passwords: [register_taker_global_sha3_password],
custom_input_data: custom_input_data};
qqc.input_data_to_db (data.qname, data.i_qwiz,
register_taker_global_reg_code_maker_id,
register_taker_global_reg_code_school_id,
register_taker_global_reg_code_class_id,
register_taker_global_reg_code_class_name,
taker_data);
} else {
register_taker_registered_feedback (data.qname, data.i_qwiz, true,
false); //data.proceed_to_pay_f);
}
} else if (errmsg == 'login unsuccessful') {
display_errmsg = 'Incorrect username/password.';
} else if (errmsg == 'duplicate username') {
display_errmsg = 'Login name is already in database.';
} else {
display_errmsg = 'Unable to create account';
}
if (display_errmsg) {
var qwiz_deck = qwiz_deck_selector (data.qname, data.i_qwiz);
$ (qwiz_deck + '.register_taker_errmsg').html (display_errmsg).show ();
}
return false;
}
this.special_offer_callback = function (data) {
if (debug[0]) {
console.log ('[special_offer_callback] data:', data);
}
const msg = '
Thanks! You now have a new free-trial subscription.';
const i_qwiz = data.i_qwiz;
const $subscription_screen_div = qqc.$get_login_div ('qwiz_', i_qwiz);
$subscription_screen_div.html (msg);
}
this.register_taker_validate_email = function (qname, i_qwiz, ok_f, check_unique_f) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
var email = $ (qwiz_deck + 'input.register_taker_email').val ();
if (email != '') {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
if (! re.test (email)) {
$ (qwiz_deck + '.register_taker_email_errmsg').html ('Not a valid email address').show ();
ok_f = false;
} else if (check_unique_f) {
qqc.register_taker_check_unique (qname, i_qwiz, 'email');
}
}
return ok_f;
}
this.input_data_to_db = function (qname, i_qwiz, maker_id, school_id, class_id,
class_name, taker_data) {
if (debug[0]) {
console.log ('[input_data_to_db] taker_data:', taker_data);
}
var data = {};
data.qname = qname;
data.i_qwiz = i_qwiz;
data.class_id = class_id;
data.class_name = class_name;
data.school_id = school_id;
data.maker_id = maker_id;
data.taker_data = taker_data;
data.callback = 'register_taker_input_data_to_db_callback';
if (debug[0]) {
console.log ('[input_data_to_db] data:', data);
}
qwiz_qcards_common.qjax (qname, i_qwiz, '', 'new_class', data);
}
this.register_taker_input_data_to_db_callback = function (data) {
if (debug[0]) {
console.log ('[input_data_to_db_callback] data:', data);
}
if (data.error_f) {
alert ('Sorry, registration did not work');
} else {
register_taker_registered_feedback (data.qname, data.i_qwiz, false);
}
}
function register_taker_registered_feedback (qname, i_qwiz, independent_taker_f,
proceed_to_pay) {
if (debug[0]) {
console.log ('[register_taker_registered_feedback] qname:', qname);
}
if (! proceed_to_pay) {
htm = [];
if (independent_taker_f) {
const server_name = qqc.get_qwiz_param ('server_name', 'Qwizcards');
htm.push ('
');
htm.push ( 'Thank you for using ' + server_name + '.');
htm.push ('
');
htm.push ('
');
htm.push ( 'You are now logged in to quizzes and flashcard decks that');
htm.push ( 'have been set up to record activity. ');
htm.push ( 'In the future, use the pull-down triangle on each quiz or deck to log in.');
htm.push ('
');
htm.push ('
');
htm.push ( 'The green triangle also gives you a menu option to view your progress on quizzes and flashcard decks.');
htm.push ('
');
htm.push ( 'Thank you. You are now registered for class ' + register_taker_global_reg_code_class_name + ', ' + register_taker_global_reg_code_school_name + '');
htm.push ('
');
htm.push ('
');
htm.push ( 'When you do a quiz or flashcard deck, be sure to log in (under the');
htm.push ( 'pull-down triangle icon on each quiz or deck).');
htm.push ('
');
}
var display_pay_screen = '';
if (qname == 'qwiz_') {
display_pay_screen = qwiz_.get_qwizdata (i_qwiz, 'display_pay_screen');
}
if (display_pay_screen == 'free_trial') {
htm.push ('');
htm.push ( 'Get started with Learn-Biology.com');
document_qwiz_good_through_date_ok = true;
} else if (! display_pay_screen) {
proceed_to_pay = register_taker_global_reg_code_ok_f ? 0 : 1
htm.push ('');
}
var $register_taker_screen_div = qqc.$get_login_div (qname, i_qwiz);
$register_taker_screen_div.html (htm.join ('\n')).show ();
}
return false;
}
this.check_promo_code = function (qname, i_qwiz_deck) {
var promo_code = $ ('#' + qname + 'promo_code' + i_qwiz_deck + ' input').val ();
if (promo_code != '') {
var pay_quiz_deck_id = get_qwizdeckdata (qname, i_qwiz_deck, 'pay_quiz_deck_id');
var data = {qname: qname, promo_code: promo_code, pay_quiz_deck_id: pay_quiz_deck_id};
qqc.qjax (qname, i_qwiz_deck, '', 'check_promo_code', data);
}
return false;
}
this.check_promo_code2 = function (data) {
if (debug[0]) {
console.log ('[check_promo_code2] data:', data);
}
var qname = data.qname;
var i_qwiz_deck = data.i_qwiz;
var $p = $ ('p#' + qname + 'promo_code' + i_qwiz_deck);
if (data.errmsg) {
$p.find ('span.promo_code_errmsg').html (' ' + data.errmsg);
$p.find ('span.promo_code_okmsg').html ('');
} else {
qqc.set_qwizdeckdata (qname, i_qwiz_deck, 'promo_code', data.promo_code);
if (qname == 'qwiz_') {
qwiz_.pay_lock_settings (i_qwiz_deck, i_qwiz_deck);
} else {
qcard_.pay_lock_settings (i_qwiz_deck, i_qwiz_deck);
}
}
}
this.clear_promo_code_msgs = function (qname, i_qwiz_deck) {
$ ('p#' + qname + 'promo_code' + i_qwiz_deck + ' span.promo_code_msg').html ('');;
}
this.submit_for_payment = function (qname, i_qwiz, form_el) {
if (debug[0]) {
console.log ('[submit_for_payment] qname:', qname, ', i_qwiz:', i_qwiz, ', form_el:', form_el);
}
var pay_quiz_deck_id = get_qwizdeckdata (qname, i_qwiz, 'pay_quiz_deck_id');
var selectedIndex = form_el.os0.selectedIndex;
if (selectedIndex == -1) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + ' div.signup_confirm_email_errmsg').html ('Please choose a payment option').show ();
return false;
}
if (! document_qwiz_session_id) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
$ (qwiz_deck + ' div.signup_confirm_email_errmsg').html ('Sorry, login session not set. Please refresh this page in your browser and try again, or contact support@qwizcards.com').show ();
return false;
}
var taker_payment_type_ids = get_qwizdeckdata (qname, i_qwiz, 'taker_payment_type_ids');
var payment_type_id = taker_payment_type_ids[selectedIndex];
var fee = form_el.os0.value;
pay_qwiz_qdeck_ = qname;
pay_i_qwiz_deck = i_qwiz;
if (fee <= 0.0) {
var data = {url: qqc.get_qwiz_param ('url', './'),
payment_type_id: payment_type_id,
qwiz_session_id: document_qwiz_session_id};
if (qname == 'qwiz_' && qwiz_.get_qwizdata (i_qwiz, 'display_pay_screen')) {
data.no_alert = 1;
}
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz);
var confirm_email_code = $ (qwiz_deck + ' input.signup_confirm_email').val ();
if (! confirm_email_code) {
confirm_email_code = 0;
}
data.confirm_email_code = confirm_email_code;
qqc.jjax (qname, i_qwiz, '', 'create_paypal_authorization', data);
return false;
} else {
var custom_data = {m: 0,
pid: pay_quiz_deck_id,
ptid: payment_type_id,
sid: document_qwiz_session_id,
url: qqc.get_qwiz_param ('url', './')
}
if (debug[0]) {
console.log ('[submit_for_payment] custom_data:', custom_data);
}
form_el.custom.value = btoa (JSON.stringify (custom_data));
return true;
}
}
this.create_maker_pay_screen = function (qname, qdata, i_qwiz, msg) {
var $pay_screen_div = qqc.$get_login_div (qname, i_qwiz);
var htm = [];
if (qdata[i_qwiz].pay_errmsg) {
htm.push ('' + qdata[i_qwiz].pay_errmsg + ' ');
} else {
if (msg) {
htm.push ('' + msg + ' ');
}
var n_pay_options = qdata[i_qwiz].maker_payment_type_ids.length;
htm.push ('');
}
$pay_screen_div.html (htm.join ('\n')).show ();
}
this.submit_for_maker_payment = function (qname, i_qwiz, form_el) {
if (debug[0]) {
console.log ('[submit_for_maker_payment] qname:', qname, ', i_qwiz:', i_qwiz, ', form_el:', form_el);
}
var pay_quiz_deck_id = get_qwizdeckdata (qname, i_qwiz, 'pay_quiz_deck_id');
var selectedIndex = form_el.os0.selectedIndex;
var maker_payment_type_ids = get_qwizdeckdata (qname, i_qwiz, 'maker_payment_type_ids');
var payment_type_id = maker_payment_type_ids[selectedIndex];
var custom_data = {m: 1,
pid: pay_quiz_deck_id,
ptid: payment_type_id,
sid: qqc.maker_session_id,
url: qqc.get_qwiz_param ('url', './')
}
if (debug[0]) {
console.log ('[submit_for_maker_payment] custom_data:', custom_data);
}
form_el.custom.value = btoa (JSON.stringify (custom_data));
pay_qwiz_qdeck_ = qname;
pay_i_qwiz_deck = i_qwiz;
return true;
}
this.payment_received = function (no_set_f, qname, i_qwiz_deck, confirm_email_errmsg) {
if (debug[0]) {
console.log ('[payment_received] no_set_f:', no_set_f, ', confirm_email_errmsg:', confirm_email_errmsg);
}
if (confirm_email_errmsg) {
var qwiz_deck = qwiz_deck_selector (qname, i_qwiz_deck);
$ (qwiz_deck + ' div.signup_confirm_email_errmsg').html (confirm_email_errmsg).show ();
return false;
}
if (no_set_f) {
pay_qwiz_qdeck_ = qname;
pay_i_qwiz_deck = i_qwiz_deck;
} else {
document_qwiz_email_confirm = 1;
if (qwiz_ && qwiz_.any_pay_quiz_f) {
if (qname == 'qwiz_' && qwiz_.get_qwizdata (i_qwiz_deck, 'display_pay_screen')) {
payment_received_f = true;
}
qwiz_.pay_lock_settings ();
}
if (qcard_ && qcard_.any_pay_deck_f) {
qcard_.pay_lock_settings ();
}
}
if (pay_qwiz_qdeck_ == 'qwiz_') {
$ ('#qwiz_login-qwiz' + pay_i_qwiz_deck).hide ();
var i_question = qwiz_.get_qwizdata (pay_i_qwiz_deck, 'i_question');
if (i_question == -1) {
$ ('.intro-qwiz' + pay_i_qwiz_deck).show ();
qwiz_.position_show_next_button (pay_i_qwiz_deck);
} else {
qwiz_.login_ok_start_quiz (pay_i_qwiz_deck);
}
} else {
$ ('#qdeck_login-qdeck' + pay_i_qwiz_deck).hide ();
qcard_.login_ok_start_deck (pay_i_qwiz_deck);
}
}
this.registration_complete = function (qname, i_qwiz, session_id, username) {
if (debug[0]) {
console.log ('[registration_complete] qname:', qname, ', i_qwiz:', i_qwiz, ', session_id:', session_id, ', username:', username);
}
document_qwiz_session_id = session_id;
document_qwiz_username = username;
document_qwiz_school_id = 1;
document_qwiz_independent_taker_f = 1;
var qwiz_qcard_ = qname == 'qwiz_' ? qwiz_ : qcard_;
qwiz_qcard_.login_ok (i_qwiz, session_id, 0);
}
this.maker_login_registration_complete = function (qname, i_qwiz, maker_session_id, username) {
if (debug[0]) {
console.log ('[maker_login_registration_complete] qname:', qname, ', i_qwiz:', i_qwiz, ', maker_session_id:', maker_session_id, ', username:', username);
}
qqc.maker_session_id = maker_session_id;
var options = {path: '/', expires: 1};
$.cookie ('maker_session_id', maker_session_id, options);
var qwiz_qcard_ = qname == 'qwiz_' ? qwiz_ : qcard_;
qwiz_qcard_.hide_menu_and_display_login (i_qwiz, false, 'maker_pay');
setTimeout (function () {
alert ('Admin registration/login successful');
}, 250);
}
this.set_login_expiry = function () {
if (debug[0]) {
console.log ('[set_login_expiry]');
}
clearTimeout (document_qwiz_login_timeout);
document_qwiz_login_timeout = setTimeout ('qwiz_qcards_common.login_expired ()', 24*3600*1000);
}
this.login_expired = function () {
document_qwiz_user_logged_in_b = false;
qqc.set_user_menus_and_icons ();
if (qwiz_ && qwiz_.any_pay_quiz_f) {
qwiz_.pay_lock_settings ();
}
if (qcard_ && qcard_.any_pay_deck_f) {
qcard_.pay_lock_settings ();
}
document_qwiz_pay_registration_date_unix = 0;
const delay_alert = function () {
if (document_qwiz_wp_user_session_id) {
alert (qqc.T ('Score-recording authentication expired. Please re-load this page'));
} else {
alert (qqc.T ('Qwizcards login session expired. Please log in again'));
}
}
setTimeout (delay_alert, 20);
}
this.is_mobile = function (mobile_enabled) {
var mobile_b;
if (! document_qwiz_force_mobile_f) {
mobile_b = mobile_enabled != 'Disabled'
&& (window.innerWidth < 961 || window.innerHeight < 450);
}
return mobile_b
}
this.set_force_mobile = function () {
var in_iframe_b = parent !== window;
if (in_iframe_b) {
if (document.location.href.search (/(localhost|192.168.1.120|qwizcards.com|swinginghotspot.com)\/u\//) != -1) {
document_qwiz_force_mobile_f = true;
}
}
}
this.process_textentry_terms = function (data) {
if (debug[0]) {
console.log ('process_textentry_terms] data:', data.substr (0, 50), '...');
}
terms = {singular: [], plural: []};
var terms_base = data.split (/\n|;/);
var n_terms = terms_base.length;
for (var i=0; i', 'm');
while (true) {
var m = terms_htm[0].match (anchor_re);
if (! m) {
break;
} else {
var terms_url = m[1];
var terms_data = qqc.get_textentry_terms (terms_url, qdata);
if (terms_data) {
if (terms_url.substr (terms_url.length - 4) != '.txt') {
/*
if (debug[5]) {
console.log ('[process_inline_textentry_terms] terms_url: ', terms_url);
console.log ('[process_inline_textentry_terms] terms_data.substr (0, 100): ', terms_data.substr (0, 100));
}
*/
r_remote = extract_delete_shortcode_content (terms_data, 'terms', false, qdata);
if (r_remote.content == 'NA') {
qdata.additional_errmsgs.push (qqc.T ('Did not find [terms]...[/terms] shortcode pair in file') + ' ' + terms_url);
} else {
terms_htm.push (r_remote.content);
}
} else {
if (terms_data.indexOf ('[terms]') != -1) {
r_remote = extract_delete_shortcode_content (terms_data, 'terms', false, qdata);
if (r_remote.content == 'NA') {
qdata.additional_errmsgs.push (qqc.T ('Did not find [terms]...[/terms] shortcode pair in file') + ' ' + terms_url);
} else {
terms_htm.push (r_remote.content);
}
} else {
terms_htm.push (terms_data);
}
}
}
terms_htm[0] = terms_htm[0].replace (anchor_re, '');
}
}
terms_htm = terms_htm.join ('');
terms_htm = terms_htm.replace (/<[^>]+>| /g, '\n');
qdata[i_q][terms_add_terms] = terms_htm;
return r_local.htm;
}
function extract_delete_shortcode_content (htm, shortcode, multiple_b, qdata) {
var content = [];
var opening_shortcode = '[' + shortcode + ']';
var closing_shortcode = '[/' + shortcode + ']';
while (true) {
var opening_pos = htm.indexOf (opening_shortcode);
if (opening_pos == -1) {
break;
} else {
var closing_pos = htm.indexOf (closing_shortcode);
if (closing_pos < opening_pos) {
qdata.additional_errmsgs.push (opening_shortcode + ' ' + qqc.T ('found, but not') + ' ' + closing_shortcode);
} else {
var terms_re = new RegExp ('(<[^\\/][^>]*>\\s*)*?\\[' + shortcode + '\\]([\\s\\S]*?)\\[\\/' + shortcode + '\\]((<\\/[^>]+>\\s*)*)', 'm');
var m = htm.substr (opening_pos).match (terms_re);
content.push (m[2]);
htm = htm.replace (terms_re, '');
}
}
if (! multiple_b) {
break;
}
}
if (content.length) {
content = content.join ('');
} else {
content = 'NA';
}
return {'htm': htm, 'content': content};
}
this.sort_dedupe_terms_metaphones = function (terms_metaphones) {
var locale = window.navigator.userLanguage || window.navigator.language;
terms_metaphones.sort (function (a, b) {
return a[0].toLowerCase ().localeCompare (b[0].toLowerCase (), locale, {numeric: true});
});
var deduped_terms_metaphones = [terms_metaphones[0]];
var len = terms_metaphones.length;
for (var i=1; i' + entry[i] + '' + hairsp);
} else if (entry[i] == ' ') {
chars.push (' ' + hairsp);
} else {
chars.push (entry[i] + hairsp);
}
}
var entry = chars.join ('');
if (debug[9]) {
console.log ('[create_hangman_entry] entry:', entry);
}
return entry;
}
this.create_hangman_incorrect_chars_display = function (incorrect_chars, incorrect_chars_before_hint, qwiz_f) {
var n_incorrect = incorrect_chars.length;
var display = [];
if (incorrect_chars_before_hint == 0) {
display.push ('');
} else {
display.push ('');
}
var i_end = qwiz_f ? 12 : n_incorrect;
for (var i=0; ix';
display.push (chr_spacer);
if (i + 1 == incorrect_chars_before_hint) {
display.push ('');
}
}
display.push ('');
display = 'Incorrect: ' + display.join ('');
return display;
}
this.setCharAt = function (str, index, chr) {
if (index > str.length-1) return str;
return str.substr (0,index) + chr + str.substr (index+1);
}
this.make_inline = function (htm, i_pos) {
var htm_substr = htm.substr (i_pos);
var tag_htm = htm_substr.match (/<[hp][^>]*>/)[0];
var tagname = tag_htm[1];
if (tagname == 'h') {
tagname += tag_htm[2];
}
var new_tag = qqc.add_attr_value ('style', 'display: inline;', tag_htm);
if (debug[9]) {
console.log ('[make_inline] new_tag:', new_tag);
}
var new_htm_substr = htm_substr.replace (tag_htm, new_tag);
var new_div = new_tag.replace (tagname, 'div');
new_htm_substr = new_div + new_htm_substr;
var pat = '' + tagname + '>';
if (new_htm_substr.search (pat) != -1) {
new_htm_substr = new_htm_substr.replace (pat, pat + '');
} else {
new_htm_substr += '';
}
htm = htm.substr (0, i_pos) + new_htm_substr;
var closing_tag = '' + tagname + '>';
new_tag = '<' + tagname + ' style="display: inline;">';
htm = htm.replace (/\[hangman[^\]]*\]/, closing_tag + '$&' + new_tag);
if (debug[9]) {
console.log ('[make_inline] htm:', htm);
}
return htm;
}
this.add_attr_value = function (attr, value, attributes) {
var re = new RegExp (attr + '\\s*=\\s*["\']', 'im');
var m = attributes.match (re);
if (m) {
if (attributes.search (value) == -1) {
attributes = attributes.replace (re, m[0] + value + ' ');
}
} else {
attributes = attributes.replace ('>', ' ' + attr + '="' + value + '">');
}
if (debug[0]) {
console.log ('[add_attr_value] attributes:', attributes);
}
return attributes;
}
this.remove_tags_eols = function (htm, keep_img_f) {
if (htm) {
if (keep_img_f) {
htm = htm.replace (/]+>/g, '').replace (/\n| /g, ' ').replace (/ {2,}/g, ' '));
if (keep_img_f) {
htm = htm.replace (/xXximg/g, ' 200) {
text = text.substr (0, 184) + 'CRC32:' + qwiz_crc32 (text);
}
return text;
}
this.init_enter_intercept = function () {
if (init_enter_intercept_f) {
return;
}
init_enter_intercept_f = true;
$ ('html').on ('keydown',
function (e) {
if (document_active_qwiz_qdeck && e.keyCode == 13) {
if (debug[7]) {
console.log ('[init_enter_intercept] document_active_qwiz_qdeck:', document_active_qwiz_qdeck);
console.log ('[init_enter_intercept] e.target:', e.target);
}
var tagname = e.target.tagName.toLowerCase ();
if (tagname == 'input' || tagname == 'textarea') {
var id = e.target.id.toLowerCase ();
if (id.indexOf ('qwiz') == -1
&& id.indexOf ('qdeck') == -1) {
return;
}
}
if (e.target.className.indexOf ('user_html') != -1) {
var id = e.target.id.toLowerCase ();
if (id.indexOf ('qwiz') == -1
&& id.indexOf ('qdeck') == -1) {
return;
}
}
var $document_active_qwiz_qdeck = $ (document_active_qwiz_qdeck);
if (document_active_qwiz_qdeck.className.toLowerCase ().indexOf ('qcard_window') == -1) {
if ($document_active_qwiz_qdeck.find ('div.next_button').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qwiz next_button trigger');
console.log ('[init_enter_intercept] $document_active_qwiz_qdeck.find (\'div.next_button button\'):', $document_active_qwiz_qdeck.find ('div.next_button button'));
}
$document_active_qwiz_qdeck.find ('div.next_button button').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('div.textentry_check_answer_div').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qwiz call text_entry_check_answer ()');
}
var id = document_active_qwiz_qdeck.id;
var i_qwiz = parseInt (id.substr (4), 10);
qwiz_.textentry_check_answer (i_qwiz);
} else if ($document_active_qwiz_qdeck.find ('button.login_button').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qwiz login_button trigger');
}
$document_active_qwiz_qdeck.find ('div.qwiz-login button.login_button').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('button.begin_practice').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qwiz begin_practice trigger');
}
$document_active_qwiz_qdeck.find ('div.qwiz-login button.begin_practice').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('.exit_progress_bars').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qwiz exit_progress_bars trigger');
}
$document_active_qwiz_qdeck.find ('div.qwiz-login button.exit_progress_bars').trigger ('click');
}
} else if (! qcard_.qwizard_b) {
if (e.target.className.indexOf ('flip') != -1) {
return;
}
if ($document_active_qwiz_qdeck.find ('button.login_button').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qdeck login_button trigger');
}
$document_active_qwiz_qdeck.find ('button.login_button').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('button.begin_practice').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qdeck begin_practice trigger');
}
$document_active_qwiz_qdeck.find ('div.button.begin_practice').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('.exit_progress_bars').is (':visible')) {
if (debug[7]) {
console.log ('[init_enter_intercept] qdeck exit_progress_bars trigger');
}
$document_active_qwiz_qdeck.find ('.exit_progress_bars').trigger ('click');
} else if ($document_active_qwiz_qdeck.find ('div.qcard_next_buttons button.flip.qwiz_button').length) {
if (debug[7]) {
console.log ('[init_enter_intercept] qdeck Check answer trigger');
console.log ('[init_enter_intercept] find:', $document_active_qwiz_qdeck.find ('div.qcard_next_buttons button.flip'));
}
$document_active_qwiz_qdeck.find ('div.qcard_next_buttons button.flip').trigger ('click');
}
}
}
});
}
this.$get_login_div = function (qname, i_qwiz) {
var selector;
if (qname == 'qwiz_') {
selector = '#qwiz_login-qwiz' + i_qwiz;
$ ('#progress-qwiz' + i_qwiz).html ('');
} else {
selector = 'div.qcard_card-qdeck' + i_qwiz + ' div.qcard-front div.qcard_content_size';
$ ('#progress-qdeck' + i_qwiz).html ('');
}
return $ (selector);
}
this.get_attr = function (htm, attr_name) {
var attr_value = '';
var attr_re = new RegExp ('(\\s|^)' + attr_name + '\\s*=\\s*("([^"]+)")*', 'm');
var attr_match = htm.match (attr_re);
if (attr_match) {
if (attr_match[3]) {
attr_value = qqc.trim (attr_match[3]);
}
}
return attr_value;
}
this.opening_tag_shortcode_pos = function (shortcode_pat, htm) {
var shortcode_pat = shortcode_pat.replace (/([\[\]\*])/g, '\\$1');
var opening_tags_re_txt = '(<[^\\/][^>]*>\\s*)*?' + shortcode_pat + '[\\s\\S]*';
var opening_tags_re = new RegExp (opening_tags_re_txt);
var i_pos = htm.search (opening_tags_re);
if (i_pos == -1) {
i_pos = htm.length;
} else {
var shortcode_re = new RegExp (shortcode_pat);
var shortcode_pos = htm.search (shortcode_re);
var repeat_b = false;
var img_pos = htm.substring (i_pos, shortcode_pos).lastIndexOf ('');
if (qp_pos != -1) {
i_pos += qp_pos + 3;
repeat_b = true;
}
var break_pos = htm.substring (i_pos, shortcode_pos).lastIndexOf (' ') {
open_phx = '
i_pos_close_tag) {
s = open_phx + '>' + s;
}
}
return s;
}
this.remove_unmatched_tag = function (part, first_part_f, last_part_f) {
var part_orig = part;
var pieces = part.split (/(<[ph][^>]*>[^]*?<\/[ph][^>]*>)/);
var n_pieces = pieces.length;
var last_piece = pieces[n_pieces - 1];
var new_last_piece = last_piece.replace (/<\/{0,1}[ph][^>]*>/g, '')
var all_tags_removed_f = true;
var i_unmatched_tags = last_piece.search (/<\/{0,1}[ph]/);
if (i_unmatched_tags != -1) {
if (! last_part_f || last_piece.search (/<[ph]/) != -1) {
if (! first_part_f || last_piece.search (/<[ph]/) != -1) {
if (new_last_piece.search (/\S/) != -1) {
var wrap_tag_re = new RegExp (/<[ph][^>]*>/);
var m = last_piece.match (wrap_tag_re);
var wrap_tag = '