/** * Modal for displaying the Terms of Service in the Register page. */ (function($, gettext) { 'use strict'; var focusableElementsSelector = [ 'a[href], area[href], input:not([disabled]), select:not([disabled]),', 'textarea:not([disabled]), button:not([disabled]), iframe, object, embed,', '*[tabindex], *[contenteditable]' ].join(' '); var disableTabIndexingOn = function(containerSelector) { var $container = $(containerSelector), $focusableItems = $container.find('*').filter(focusableElementsSelector).filter(':visible'); $container.attr('aria-hidden', 'true'); $focusableItems.attr('tabindex', '-1'); }; var enableTabIndexingOn = function(containerSelector) { var $container = $(containerSelector), $focusableItems = $container.find('*').filter(focusableElementsSelector).filter(':visible'); $container.attr('aria-hidden', 'false'); $focusableItems.attr('tabindex', '0'); }; var showModal = function(modalSelector) { $(modalSelector).attr('aria-hidden', 'false'); $(modalSelector).show(); disableTabIndexingOn('.window-wrap'); // Prevent scrolling of the background $('body').addClass('open-modal'); }; var hideModal = function(modalSelector, tosLinkSelector) { $(modalSelector).attr('aria-hidden', 'true'); $(modalSelector).hide(); enableTabIndexingOn('.window-wrap'); $('body').removeClass('open-modal'); $(modalSelector).find('iframe').remove(); $(tosLinkSelector).focus(); }; var buildModal = function(modalClass, contentClass, closeButtonClass) { // Create the modal container var modalTitle = gettext('Terms of Service and Honor Code'), closeLabel = gettext('Close'), titleId = 'modal-header-text', $modal = $('