{"version":3,"sources":["webpack:///./node_modules/bootstrap/js/src/tools/sanitizer.js","webpack:///./node_modules/bootstrap/js/src/tooltip.js","webpack:///./node_modules/ui-theme/plugins/product/index.js","webpack:///./node_modules/ui-theme/components/back-to-top/index.ts","webpack:///./node_modules/ui-theme/components/dialog/index.ts","webpack:///./node_modules/ui-theme/components/article-actions-bar/index.ts","webpack:///./node_modules/@atypon/ui-bundle-generator/.generated/lazy-imports.js","webpack:///./node_modules/ui-theme/plugins/pop-notification/index.ts","webpack:///./node_modules/ui-theme/components/past-issue/index.ts","webpack:///./node_modules/ui-theme/utility/scrollToTarget/index.ts","webpack:///./node_modules/ui-theme/utility/custom-file/index.ts","webpack:///./node_modules/ui-theme/utility/lockScreenOnToggle/index.ts","webpack:///./node_modules/ui-theme/js/_publicpath.js"],"names":["uriAttrs","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","length","createdDocument","window","DOMParser","parseFromString","whitelistKeys","Object","keys","elements","slice","call","body","querySelectorAll","_loop","el","elName","nodeName","toLowerCase","indexOf","parentNode","removeChild","attributeList","attributes","whitelistedAttributes","concat","forEach","attr","allowedAttribute","allowedAttributeList","attrName","Boolean","nodeValue","match","regExp","filter","attrRegex","RegExp","len","removeAttribute","innerHTML","NAME","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType","animation","template","title","trigger","delay","html","selector","placement","offset","container","fallbackPlacement","boundary","sanitize","popperConfig","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","element","config","_classCallCheck","Popper","TypeError","this","_isEnabled","_timeout","_hoverState","_activeTrigger","_popper","_getConfig","tip","_setListeners","_createClass","key","value","enable","disable","toggleEnabled","toggle","event","dataKey","constructor","DATA_KEY","context","currentTarget","data","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","hasClass","dispose","clearTimeout","removeData","off","closest","_hideModalHandler","remove","destroy","show","_this","css","Error","showEvent","isWithContent","shadowRoot","Util","findShadowRoot","isInTheDom","contains","ownerDocument","documentElement","isDefaultPrevented","tipId","getUID","setAttribute","setContent","addClass","attachment","_getAttachment","addAttachmentClass","_getContainer","appendTo","_getPopperConfig","document","children","on","noop","complete","_fixTransition","prevHoverState","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","hide","callback","_this2","hideEvent","_cleanTipClass","removeClass","update","scheduleUpdate","getTitle","setElementContent","$element","content","_typeof","nodeType","jquery","text","parent","is","empty","append","getAttribute","_this3","_objectSpread","modifiers","_getOffset","flip","behavior","arrow","preventOverflow","boundariesElement","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","_this4","offsets","isElement","find","toUpperCase","_this5","split","eventIn","eventOut","_fixTitle","titleType","type","setTimeout","dataAttributes","dataAttr","toString","typeCheckConfig","$tip","tabClass","join","popperData","instance","popper","initConfigAnimation","get","_jQueryInterface","each","_config","test","Constructor","noConflict","pbAjax","args","widgetId","pbContext","showJson","searchParams","url","objURL","replace","$0","$1","$2","$3","location","href","hasOwnProperty","targetUrl","requestMethod","requestDataType","asyncRequest","successFunction","failFunction","ajax","dataType","async","success","error","console","log","jQuery","load","$widget","init","observer","observe","IntersectionObserver","entries","entry","isIntersecting","target","unobserve","PB","ready","listenersMap","literatum","events","register","eventName","listeners","push","deregisterAll","notify","listener","Widget","widgetDef","state","registerListeners","prototype","resize","e","render","model","params","renderer","action","widgets","getWidget","lostFocus","updateView","view","$this","$html","trim","replaceWith","triggerInfoHandlers","widget","infoHandlers","infoHandler","unbind","bind","result","id","utils","hasErrors","loaded","Deferred","resolve","thisWidget","binders","binderName","binder","collectForms","$elements","forms","name","form","val","updateForm","formName","sourceForm","merge","$form","prop","initialize","loading","reset","getNotifications","item","literatumNotification","getNotification","notifications","notification","notificationType","service","commerce","cart","widgetDefs","re","all","collapse","WidgetDef","create","Loading","deferred","start","when","then","done","FullPageLoading","fadingTime","message","navigator","userAgent","fadeIn","$overlay","fadeOut","setMessage","loadRecaptcha","grecaptcha","clearCapcha","captchaChallengeSubmit","response","submit","renderJsonViewer","json","options","collapsed","jsonViewer","getWidgetType","$jsonEl","widgetType","JSON","parse","widgetName","$jsonElement","getWidgetId","prepend","openShowJsonDialog","$jsonElements","getJsonElementOfWidget","requestedJsonEl","index","jsonString","$buttonIcon","copyStringToClipboard","str","createElement","style","position","left","appendChild","select","execCommand","stringify","toggleClass","toggleFullscreen","querySelector","HTMLElement","isFullscreen","webkitIsFullScreen","mozFullScreen","requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","cancelFullScreen","webkitCancelFullScreen","mozCancelFullScreen","$timers","interval","setInterval","increment","$value","original","parseInt","format","total","hours","Math","floor","minutes","seconds","change","checked","serialize","jsonData","errorMsg","resultCount","preventDefault","loginSuggestionsInitSearch","fun","$el","ms","magicSuggest","allowFreeEntries","hideTrigger","maxSelection","placeholder","institutionUrl","federationName","page","send","request","ajaxRequest","contentType","crossDomain","xhrFields","withCredentials","copyForm","source","to","clearForm","hasAttributes","scroll","speed","$object","top","animate","scrollTop","nextCheckoutSection","width","getCountryState","iso2Alpha","country","$target","slideUp","serializeObject","o","serializeArray","undefined","discounts","buyingList","billing","editing","slideToggle","countryCode","$state","slideDown","LoginSuggestionsWidget","login","siblings","$errorMessage","$message","redirect","firstTry","loginAction","redirectUri","canSwitch","newUser","errorMessage","submitCode","remember","$hiddenMessage","submitPassword","password","usePassword","useCode","back","showIndiv","currentView","initIndividualView","showOrg","showPass","initPasswordView","error2","localLogin","prevView","showAllInstitutions","removeAccount","userId","cloudId","next","showFed","fedName","showHistory","$result","getPrototypeOf","$login","$submit","removeAttr","which","keyCode","defaultAjaxSettings","extend","sendBeacon","defaultOptions","methods","Track","verifyAddress","pattern1","pattern2","pattern3","pattern4","pattern5","after","asynchronous","cache","timeout","requestTimeout","dst","src","iterator","object","jQueryBind","oldJQueryBind","callbackToUse","prototypeBind","$$","bindAsEventListener","jQueryUnbind","oldJQueryUnbind","prototypeUnbind","stopObserving","formData","FormData","ajaxOptions","useBeacon","parameters","Ajax","Request","fire","defaultFire","ajaxSettings","acceptEvent","setup","array","onEvent","addData","ex","method","apply","Array","arguments","extractData","requestId","OriginRequestId","OriginUrl","date","Date","setTime","getTime","expires","toGMTString","cookie","LinkText","LinkHref","doi","innerFound","add","parents","$ancestor","d","property","collectData","attrib","substring","g","func","isFunction","extra","linkIndex","LinkIndex","ClickPageX","pageX","ClickPageY","pageY","TrackPageTransitions","captureAllPageTransitions","EventType","Prototype","TrackSearchResults","resultSelectorAction","extractDataSearchResult","extractCommonData","searchResultRows","clickedRow","$searchResultRow","searchPageRank","$container","$selectedPage","resultPageNum","$paginationElements","first","$innerMostChildOfPagination","end","isInt","n","startPageFromSearchForm","$articleEntry","pii","includes","multiSelect","defaults","actcls","except","statics","last","scope","initEvent","checkStatics","dom","self","shiftKey","temp","getSelection","removeAllRanges","selection","ctrlKey","metaKey","initRemoveButton","topicCode","ids","selectedItems","subAction","isNeg","status","alert","reload","SpecifyMembershipWidget","showPubs","marker","cancel_function","hidePubs","doTitleSearch","markup","result_table","DOI","Title","forward","saveAndRefresh","max","cartInfo","errorHandler","callbacks","triggerRefresh","updatedCartInfo","refresh","identity","guest","email","acceptTermsConditions","registration","clear","changed","identityHash","addItem","itemId","decreaseQuantity","increaseQuantity","updateQuantity","currentQuantity","requiredQuantity","buyingItemHash","restoreAccess","discountCode","discount","cartHash","summary","shipping","getShippingCosts","shippingHash","tax","billingHash","savedItems","saveById","saveByDoi","savedItemsHash","serviceName","sessionChanged","sessionHash","clone","clearCallbacks","setErrorHandler","handler","addCallback","validators","creditCardsPattern","creditcard","number","invalid","k","creditcardDate","currentDate","currentMonth","getMonth","currentYear","getFullYear","monthExpiry","yearExpiry","expireMonth","expireYear","expireDate","setMonth","setYear","notEmpty","validate","validateField","field","$field","validatorName","validator","securityCode","Notification","$p","dummy","showFlex","warning","info","FieldNotification","$label","$show","BuyingItemWidget","applyDiscount","removeDiscount","disableDiscount","enableDiscount","saveItem","removeItem","MAXIMUM_ALLOWED_VALUE","Number","discountError","$error","discountInfo","$info","savedItemError","$applyButton","$discountField","SavedItemsWidget","removeSavedItem","expand","offerVisibility","subject","stopPropagation","RecommendedWidget","RecentlyViewedWidget","OrderSummaryWidget","IdentityWidget","showUserLogin","$loginForm","focus","encodeURIComponent","cancelLogin","userLogin","resetCart","$loginInput","$passwordInput","$continueButton","errorName","identityError","emailError","acceptTermsConditionsError","ShippingWidget","givennames","surname","phone","organization","address1","address2","city","zipCode","shippingCost","editShipping","submitShipping","shippingOptions","countryChanged","$country","$states","$input","$select","states","description","selectAddress","addressUuid","uuid","addressError","TaxWidget","updateTax","BillingWidget","submitBilling","editBilling","PaymentWidget","sameAsShipping","shippingWidget","identityWidget","placeOrder","shippingForm","$toggle","validateForm","not","holderName","realNumber","secNumber","expandPayment","valid","$group","fieldsValidation","$header","stop","$date","thisVal","numChars","dateValue","$cElement","$cont","$contError","registerAdditionalListeners","$confirmOrderMsg","scrollIntoView","PurchaseOptionsWidget","$obj","$expandSection","expandSection","savedItemInfo","nextAction","CartIndicatorWidget","$cartSize","size","AddToCartWidget","addToCart","overlay","CartInfoWidget","IdentityBarWidget","$popups","$popup","RestoreAccessWidget","restoreError","$inputGroup","fieldNotification","checkoutButton","$leftCol","checkout","hash","expandedMargin","height","ajaxComplete","Tabs","$content","RedeemAllowanceWidget","functions","lower","upper","special","numeric","getBaseScore","score","updateIndicator","$indicator","min","$lang_selector","too__short","weak","too__long","pass_selector","diff","strength","prependTo","pswd","pswd_req","pswd_length","pswd_max","translate_msg","lang","pswd_l","pswd_r","strength_list","list_items_strength","blur","guestEmail","visible","expr","filters","addBack","focusable","isTabIndexNotNaN","map","mapName","disabled","isNaN","$confirmation","fail","$pass","$email","lastItem","$password","$eye","$remember","items","revers","$close","tabRevers","tabEvent","pattern","$email2","prevAll","$token","toggleAddButton","list","addButton","$emails","current","count","$drawers","$drawer","$success","$failure","$old","$new","$clone","$phones","$change","$edit","$addresses","$address","$holder","$editAddress","$current","$social","$section","$search","$link","keyup","$institution","$federation","$purchase","nextAll","$deepdyve","affid","issn","docId","fieldName","journal","affiliateId","jsonp","hideSocietyStatusDialog","raa","shibbolethInitSearch","$bottomSection","userIndicator","minChars","mode","minCharsRenderer","v","extraMSContent","noSuggestionText","resultsField","entityId","closeButton","helper","recentID","input","hideExtraMSContent","m","warn","getValue","EntitlementsWidget","reloadTab","tab","$tabContent","$query","$sort","sort","query","selectedTab","series","groups","submitSearch","addEventListener","twoFactorAuthentication","getElementById","visibility","display","passPin","getElementsByClassName","className","pinForm","pinValue","isNumeric","parseFloat","isFinite","selectElement","selectbox","tfaResetAuthentication","getElementsByName","encodeURI","$resultsTarget","tooltip","effect","VISIBLE","SNAPPED","backToTop","backToTopAction","backToTopRing","selectors","initElements","initElementsByLoop","isSquareAction","dataset","square","wrapper","snap","snapElementSelector","snapElement","showAfter","borderLength","getTotalLength","String","addEventListeners","onClick","onScroll","scrollTo","classList","isSnapElScrolledBy","getScrollPercent","offsetToSet","snapEl","docViewBottom","h","st","sh","clientHeight","BackToTop","Selectors","ClassList","Texts","dialogCloseBtn","openDialogBtnExample","setWrapper","focusables","showModalHandler","button","closeModalHandler","createObserver","onOpenHandler","focusTrapHandler","showModal","close","MutationObserver","recs","observedDialog","open","onOpen","from","firstFocusable","lastFocusable","activeElement","Dialog","hideActionsClass","checkboxes","buttons","buttonsContainer","selectAllBox","bulkAction","exportCitationBtn","exportCitationDialog","hideBtnsOrDisableSelect","isChecked","elem","allItemsSelected","hasSelectedItems","hasAttribute","validateBulkActions","showHideActionBtns","toggleAttribute","every","some","ArticleActionsBar","main","UX","$popNotification","$pastIssue","$accordion","$backToTop","$dialog","$articleActionsBar","popNotification","PopNotification","err","pastIssue","PastIssue","accordion","Accordion","dialog","articleActionsBar","relatedContent","popupFloatAfter","popupFloatAfterPassed","popupFloatAfterPlaceholder","transitioned","closeBtn","footer","TIMER","FOOTER_OFFSET","TRANSITION","FLOAT_EL_OFFSET","_visibility","_constants","constants","_popupFloatAfter","visibleAfter","_focusableElements","setPopupFloatAfterPlaceholder","checkElPassedScroll","checkVisibility","checkA11y","_checkVisibilityEvent","_checkElPassedScrollEvent","setVisibility","destinationHeight","getBoundingClientRect","pageYOffset","footerRect","footerDist","scrollY","elOffset","offsetTop","offsetHeight","setFloat","showFloated","shouldShow","setA11yState","passed","removeEventListener","popupPlaceholder","popupFloatAfterDummyId","random","insertAdjacentElement","Elements","baseClass","setItems","onHover","getDirection","scrollX","x","y","round","atan2","PI","didEnter","dir","classNamePath","base","clearClasses","newClassName","getDirectionPrefix","access","directions","scrollToTarget","history","pushState","fileName","files","nextElementSibling","innerText","resourcePath","node","releasedAssetsPath","__webpack_public_path__"],"mappings":"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","file":"js/vendors~lazy-imports-9c118203d1935d78919f.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.5.0'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
' +\n '
' +\n '
',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, (event) => this._enter(event))\n .on(eventOut, this.config.selector, (event) => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","import '../../js/_publicpath';\n// TODO: remove jquery ui\n// import './_jcf';\n/* eslint-disable */\n(function ($) {\n $.fn.pbAjax = function (args) {\n var widgetId = $(this).attr('widget-id');\n if (!widgetId) {\n widgetId = $(this).data('widget-id');\n }\n if (!widgetId) {\n widgetId = $(this).attr('id');\n }\n var pbContext = $(\"[name='pbContext']\").attr('content');\n if (widgetId !== null && widgetId !== undefined) {\n var data = args['data'] ? args['data'] : {};\n data['pbContext'] = pbContext;\n data['widgetId'] = widgetId;\n var showJson = searchParams(window.location.href);\n if (showJson.hasOwnProperty('showJson')) data['showJson'] = showJson['showJson'] || '';\n var targetUrl = args['url'];\n var requestMethod = args.hasOwnProperty('type') ? args['type'] : 'GET';\n var requestDataType = args.hasOwnProperty('dataType') ? args['dataType'] : 'html';\n var asyncRequest = args.hasOwnProperty('async') ? args['async'] : true;\n var successFunction = args['success'];\n var failFunction = args['error'];\n return $.ajax({\n type: requestMethod,\n dataType: requestDataType,\n async: asyncRequest,\n url: targetUrl,\n data: data,\n success: successFunction,\n error: failFunction,\n });\n } else {\n console.log('widgetId not found');\n }\n\n function searchParams(url) {\n var objURL = {};\n url.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), function ($0, $1, $2, $3) {\n objURL[$1] = $3;\n });\n return objURL;\n }\n };\n})(jQuery);\n(function ($) {\n if ($) {\n function load($widget) {\n $widget.html('Loading...');\n $widget.pbAjax({\n type: 'GET',\n url: '/pb/widgets/optimizer',\n dataType: 'html',\n success: function (data) {\n $widget.html(data);\n $('html').trigger('WidgetReinit');\n },\n error: function () {\n $widget.html('');\n },\n });\n }\n\n var observer = null;\n if ('IntersectionObserver' in window) {\n observer = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n var $widget = $(entry.target);\n observer.unobserve(entry.target);\n load($widget);\n }\n });\n });\n }\n\n function init() {\n $('[data-optimizer]').each(function () {\n var $widget = $(this);\n if ($widget.is('[data-observer]') && observer) {\n observer.observe(this);\n } else {\n load($widget);\n }\n });\n }\n\n if (window.PB && window.PB.$) {\n window.PB.$(document.documentElement).on('WidgetReinit.*', init);\n }\n $(document).ready(init);\n }\n})(jQuery);\nvar literatum = {};\nliteratum.events = (function () {\n var instance = {};\n var listenersMap = {};\n\n instance.register = function (eventName, callback) {\n var listeners = listenersMap[eventName];\n if (!listeners) {\n listenersMap[eventName] = listeners = [];\n }\n listeners.push(callback);\n };\n\n instance.deregisterAll = function () {\n listenersMap = {};\n };\n\n instance.notify = function (eventName, data) {\n //console.log(\"Event '\" + eventName + \"' triggered.\")\n var listeners = listenersMap[eventName];\n if (listeners) {\n listeners.forEach(function (listener) {\n listener(data);\n });\n }\n };\n\n return instance;\n})();\nliteratum.Widget = function (widgetDef, element) {\n this.state = -1;\n this.$element = $(element);\n this.widgetDef = widgetDef;\n if (widgetDef) {\n this.registerListeners();\n }\n};\n\nliteratum.Widget.prototype.get = function () {\n return this.$element;\n};\n\nliteratum.Widget.prototype.resize = function (e) {};\n\nliteratum.Widget.prototype.render = function (model, params, callback, renderer) {\n if (this.widgetDef.action) {\n return literatum.widgets.getWidget(this, model, params, callback, renderer);\n }\n};\n\nliteratum.Widget.prototype.lostFocus = function () {\n // nothing\n};\n\nliteratum.Widget.prototype.updateView = function (view, model) {\n var $this = this.get();\n var $html = $(view.trim());\n if ($html.length > 0) {\n $this.replaceWith($html);\n this.$element = $(\"*[widget-id='\" + $html.attr('widget-id') + \"']\");\n if (this.$element.length === 0 && $html.attr('id')) {\n this.$element = $('#' + $html.attr('id'));\n }\n if (this.$element.length === 0) {\n this.$element = $(\"*[data-widget-id='\" + $html.attr('data-widget-id') + \"']\");\n }\n } else {\n this.$element.html('');\n }\n this.registerListeners();\n this.triggerInfoHandlers(this, model);\n};\n\nliteratum.Widget.prototype.triggerInfoHandlers = function (widget, model) {\n var infoHandlers = widget.widgetDef.infoHandlers;\n if (model && model.attributes && infoHandlers) {\n Object.keys(model.attributes).forEach(function (key) {\n var infoHandler = infoHandlers[key];\n if (infoHandler) {\n infoHandler(model.attributes[key], widget, model);\n }\n });\n }\n};\n\nliteratum.Widget.prototype.registerListeners = function () {\n try {\n this.unbind();\n } catch (e) {\n console.log(e);\n }\n try {\n this.bind();\n } catch (e) {\n console.log('Failed to bind events, rolling back...');\n this.unbind();\n }\n};\n\nliteratum.Widget.prototype.update = function (model) {\n var result;\n console.log('Updating ' + this.widgetDef.id + '...');\n if (!literatum.utils.hasErrors(model.attributes)) {\n result = this.render(model, {});\n console.log('Updating ' + this.widgetDef.id + '... Content');\n } else {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n console.log('Updating ' + this.widgetDef.id + '... Info');\n result = $.Deferred().resolve();\n }\n return result;\n};\n\nliteratum.Widget.prototype.bind = function () {\n var thisWidget = this;\n\n if (!thisWidget.widgetDef.binders) return;\n\n this.find('*[data-bind]').each(function () {\n var binderName = $(this).data('bind');\n var binder = thisWidget.widgetDef.binders[binderName];\n if (binder) {\n $(this).on('click', function (e) {\n //literatum.events.notify('user-action');\n binder.call(this, e, thisWidget);\n });\n }\n });\n\n this.find('*[data-bind-change]').each(function () {\n var binderName = $(this).data('bind');\n var binder = thisWidget.widgetDef.binders[binderName];\n if (binder) {\n $(this).on('change', function (e) {\n literatum.events.notify('user-action');\n binder.call(this, e, thisWidget);\n });\n }\n });\n};\n\nliteratum.Widget.prototype.unbind = function () {\n this.find('*[data-bind]').each(function () {\n $(this).off();\n });\n};\n\nliteratum.Widget.prototype.find = function (selector) {\n return this.get().find(selector);\n};\n\nliteratum.Widget.prototype.collectForms = function () {\n var $elements = this.find('form');\n var forms = {};\n $elements.each(function () {\n var $this = $(this);\n var name = $(this).attr('name');\n if (name) {\n var form = {};\n forms[name] = form;\n $this.find(\"input[type!='checkbox'], textarea\").each(function () {\n form[$(this).attr('name')] = $(this).val();\n });\n\n $this.find(\"input[type='checkbox']\").each(function () {\n if ($(this).is(':checked')) {\n form[$(this).attr('name')] = $(this).val();\n }\n });\n\n $this.find('select').each(function () {\n form[$(this).attr('name')] = $(this).find('option:selected').val();\n });\n }\n });\n this.find('*[data-form]').each(function () {\n var name = $(this).data('form');\n if (name) {\n var form = {};\n forms[name] = form;\n $(this)\n .find('*[data-field]')\n .each(function () {\n var $this = $(this);\n var value = $this.data('value');\n if (!value) {\n value = $this.text().trim();\n }\n form[$this.data('field')] = value;\n });\n }\n });\n return forms;\n};\n\nliteratum.Widget.prototype.updateForm = function (formName, sourceForm, merge) {\n var forms = this.find(\"form[name='\" + formName + \"']\");\n if (forms) {\n var form = forms[0];\n if (form) {\n var $form = $(form);\n $form.find('input').each(function () {\n var $this = $(this);\n if ($this.attr('type') == 'submit') {\n return;\n }\n\n var value = sourceForm[$this.attr('name')];\n if (merge && !value) return;\n\n $this.val(value);\n });\n\n var $select = $form.find('select');\n $select.each(function () {\n var $this = $(this);\n var value = sourceForm[$this.attr('name')];\n\n if (merge && !value) return;\n\n if (value) {\n $this.closest('.input-group').show();\n }\n\n $this.find('option').prop('selected', false);\n $this.find(\"option[value='\" + value + \"']\").prop('selected', true);\n });\n }\n }\n};\n\nliteratum.Widget.prototype.initialize = function () {\n this.registerListeners();\n};\n\nliteratum.Widget.prototype.loading = function () {\n $('body').addClass('widget-loading');\n};\n\nliteratum.Widget.prototype.error = function () {\n //$(\"body\").addClass(\"widget-error\");\n};\n\nliteratum.Widget.prototype.loaded = function () {\n $('body').removeClass('widget-loading');\n};\n\nliteratum.Widget.prototype.reset = function () {\n this.getNotifications().forEach(function (item) {\n item.reset();\n });\n};\n\nliteratum.Widget.prototype.getNotifications = function () {\n var result = [];\n this.find('*[data-notification]').each(function () {\n if (this.literatumNotification) {\n result.push(this.literatumNotification);\n }\n });\n return result;\n};\n\nliteratum.Widget.prototype.getNotification = function (name) {\n if (!this.widgetDef.notifications) return null;\n\n var thisWidget = this;\n\n var notification = null;\n\n this.find(\"*[data-notification='\" + name + \"']\").each(function () {\n var notificationType = thisWidget.widgetDef.notifications[name];\n if (!this.literatumNotification) {\n this.literatumNotification = new notificationType(this);\n }\n notification = this.literatumNotification;\n });\n\n return notification;\n};\n\nliteratum.Widget.prototype.register = function (service) {\n var thisWidget = this;\n commerce.cart.register(service, function (model) {\n return thisWidget.update(model);\n });\n};\nliteratum.widgets = (function () {\n var instance = {};\n var widgetDefs = [];\n var widgets = [];\n\n function render(template, model) {\n Object.keys(model).forEach(function (key) {\n var re = new RegExp('\\\\{{' + key + '\\\\}}', 'g');\n template = template.replace(re, model[key]);\n });\n template = template.replace(/{{.+?}}/g, '');\n return template;\n }\n\n $(window).on('resize', function (e) {\n widgets.forEach(function (widget) {\n widget.resize(e);\n });\n });\n\n instance.render = function (widget, model, params, callback, renderer) {\n // FIXME: clean me\n return widget.render(model, params, callback, renderer);\n };\n\n instance.getWidget = function (widget, model, params, callback, renderer) {\n return widget.get().pbAjax({\n type: 'GET',\n url: widget.widgetDef.action,\n dataType: 'html',\n data: params,\n async: true,\n success: function (html) {\n var result = render(html, model);\n if (renderer) {\n renderer(html, model);\n } else {\n widget.updateView(result, model);\n }\n //widget.get().fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400); // For debugging\n widget.loaded(); // This is not needed, confirm and remove\n if (callback) {\n callback();\n }\n literatum.events.notify('widget-rendered');\n },\n error: function (data) {\n widget.error();\n },\n });\n };\n\n instance.get = function (id) {\n var result = [];\n widgets.forEach(function (item) {\n if (item.widgetDef.id == id) result.push(item);\n });\n return result;\n };\n //instance.find = function(widgetId) {\n // var $result = $(\"*[widget-def='\" + widgetId +\"']\");\n // if ($result.length > 0) {\n // return $result;\n // }\n // return $(\".\" + widgetId);\n //};\n instance.all = function () {\n return widgets.slice(0);\n };\n\n instance.collapse = function () {\n widgets.forEach(function (widget) {\n widget.hide();\n });\n };\n\n instance.register = function (widgetDef) {\n widgetDefs.push(widgetDef);\n };\n\n instance.initialize = function () {\n widgetDefs.forEach(function (WidgetDef) {\n WidgetDef.find().each(function () {\n var instance = Object.create(WidgetDef.prototype);\n WidgetDef.call(instance, WidgetDef, this);\n widgets.push(instance);\n });\n });\n };\n\n return instance;\n})();\n\nconsole.log('Widgets initialized!');\nliteratum.Loading = function (deferred) {\n this.start();\n this.deferred = deferred;\n $.when(deferred).then(this.done);\n};\nliteratum.Loading.prototype.start = function () {};\nliteratum.Loading.prototype.done = function () {};\nliteratum.FullPageLoading = function (fadingTime) {\n this.message = '';\n this.fadingTime = fadingTime || 200;\n};\n\nliteratum.FullPageLoading.prototype = new literatum.Loading();\nliteratum.FullPageLoading.prototype.start = function () {\n $('body').append(\n '
' +\n this.message +\n '
'\n );\n var isIOS = navigator.userAgent.match(/ipad|ipod|iphone/i);\n if (!isIOS) {\n $('.loading-overlay').fadeIn(this.fadingTime);\n } else {\n $('.loading-overlay').show();\n }\n return this;\n};\n\nliteratum.FullPageLoading.prototype.done = function () {\n var $overlay = $('.loading-overlay');\n var isIOS = navigator.userAgent.match(/ipad|ipod|iphone/i);\n if (!isIOS) {\n $overlay.fadeOut($overlay.data('fadingtime'), function () {\n $overlay.remove();\n });\n } else {\n $overlay.hide().remove();\n }\n};\n\nliteratum.FullPageLoading.prototype.setMessage = function (message) {\n this.message = message;\n};\n\nwindow.loadRecaptcha = function () {\n if (typeof grecaptcha == 'undefined') return;\n $('.g-recaptcha')\n .filter(function () {\n return !$(this).hasClass('explicit');\n })\n .each(function () {\n grecaptcha.render($(this)[0], $(this).data());\n });\n $('.g-recaptcha iframe').attr('title', 'reCaptcha');\n};\nwindow.clearCapcha = function () {\n if (typeof grecaptcha != 'undefined') grecaptcha.reset(0);\n};\nwindow.captchaChallengeSubmit = function captchaChallengeSubmit(response) {\n $('textarea#g-recaptcha-response').each(function () {\n if ($(this).val() === response) {\n $(this).closest('form').submit();\n }\n });\n};\n$(function () {\n $('pre.show-json').each(function () {\n var $jsonElement = $(this);\n $jsonElement.parent().addClass('widget-container');\n var widgetType = getWidgetType($jsonElement);\n var widgetId = getWidgetId($jsonElement);\n $(this)\n .parent()\n .prepend(\n ''\n );\n });\n $('.show-json-btn').click(function openShowJsonDialog() {\n var $jsonElements = $(this).parent().find('>.show-json');\n if ($jsonElements.length > 1) {\n $jsonElements = getJsonElementOfWidget($jsonElements, $(this).data('widgetId'));\n }\n var jsonString = $jsonElements[0].innerHTML;\n var widgetType = getWidgetType($jsonElements);\n renderJsonViewer(JSON.parse(jsonString));\n $('.show-json-container .modal__header h2').html('Json for ' + widgetType);\n });\n $('.show-json-container .btn-collapse').click(function (e) {\n var $buttonIcon = $(this).find('#collapsed');\n if ($buttonIcon.hasClass('node-collapsed'))\n $buttonIcon.removeClass('node-collapsed icon-plus-light').addClass('node-opened icon-minus-light');\n else $buttonIcon.removeClass('node-opened icon-minus-light').addClass('node-collapsed icon-plus-light');\n renderJsonViewer();\n });\n $('.show-json-container .btn-copy').click(function (e) {\n var json = $('.show-json-container').data('json');\n copyStringToClipboard(JSON.stringify(json));\n });\n $('.show-json-container .btn-word-wrap').click(function (e) {\n $('.show-json-container .json-string').toggleClass('word-wrap-toggle');\n });\n $('.btn-fullscreen').click(toggleFullscreen);\n\n function toggleFullscreen(event) {\n var element = document.querySelector('#json-renderer-container');\n if (event instanceof HTMLElement) {\n element = event;\n }\n var isFullscreen = document.webkitIsFullScreen || document.mozFullScreen || false;\n element.requestFullScreen =\n element.requestFullScreen ||\n element.webkitRequestFullScreen ||\n element.mozRequestFullScreen ||\n function () {\n return false;\n };\n document.cancelFullScreen =\n document.cancelFullScreen ||\n document.webkitCancelFullScreen ||\n document.mozCancelFullScreen ||\n function () {\n return false;\n };\n isFullscreen ? document.cancelFullScreen() : element.requestFullScreen();\n }\n\n function copyStringToClipboard(str) {\n var el = document.createElement('textarea');\n el.value = str;\n el.setAttribute('readonly', '');\n el.style = {position: 'absolute', left: '-9999px'};\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n\n function renderJsonViewer(json) {\n if (json) $('.show-json-container').data('json', json);\n else json = $('.show-json-container').data('json');\n var options = {collapsed: $('.show-json-container #collapsed.node-collapsed').length == 1};\n $('.show-json-container .modal__body #json-renderer').jsonViewer(json, options);\n }\n\n function getWidgetType($jsonEl) {\n var widgetType = $jsonEl.parent().attr('data-widget-def');\n if (!widgetType) {\n var thisWidget = JSON.parse($($jsonEl).text()).thisWidget;\n if (thisWidget) {\n widgetType = JSON.parse($($jsonEl).text()).thisWidget.widgetName;\n }\n }\n return widgetType;\n }\n\n function getWidgetId($jsonEl) {\n var widgetId = $jsonEl.parent().attr('data-widget-id');\n if (!widgetId) {\n var thisWidget = JSON.parse($($jsonEl).text()).thisWidget;\n if (thisWidget) {\n widgetId = thisWidget.id;\n }\n }\n return widgetId;\n }\n\n function getJsonElementOfWidget($jsonElement, widgetId) {\n var requestedJsonEl;\n $jsonElement.each(function (index) {\n if (JSON.parse($(this).text()).thisWidget.id == widgetId) {\n requestedJsonEl = $(this);\n return false;\n }\n });\n return requestedJsonEl;\n }\n});\n$(function () {});\n$(function () {\n var $timers = $('.timer .value');\n if ($timers.length) {\n var interval = 0;\n var format = function (total) {\n var hours = Math.floor(total / 3600);\n var minutes = Math.floor((total - hours * 3600) / 60);\n var seconds = total - hours * 3600 - minutes * 60;\n\n if (hours < 10) hours = '0' + hours;\n if (minutes < 10) minutes = '0' + minutes;\n if (seconds < 10) seconds = '0' + seconds;\n return hours + ':' + minutes + ':' + seconds;\n };\n var increment = function () {\n interval++;\n $.get('/exam/updateTimeSpent/' + $(\"input[name='questionIndex']\").val());\n $timers.each(function () {\n var $value = $(this);\n var original = parseInt($value.data().value, 10);\n $value.html(format(original + interval));\n });\n };\n setInterval(increment, 1000);\n }\n});\n\n$(function () {\n $('.show-subjects').change(function () {\n $('.subjects-table').removeClass('d-none');\n });\n $('.hide-subjects').change(function () {\n $('.subjects-table').addClass('d-none');\n });\n});\n\n$(function () {\n $('.show-areas').change(function () {\n $('.areas-table').removeClass('d-none');\n });\n $('.hide-areas').change(function () {\n $('.areas-table').addClass('d-none');\n $('.questions-area')[0].checked = false;\n $('.questions-area')[1].checked = false;\n $('.questions-area')[2].checked = false;\n });\n});\n\n$(function () {\n $(\"input[name='dryRun']\").click(function (e) {\n var url = '/pb/widgets/digitalQuestion/calculate'; // the script where you handle the form input.\n $.ajax({\n type: 'POST',\n url: url,\n data: $('.create__test__form').serialize(), // serializes the form's elements.\n success: function (data) {\n var jsonData = JSON.parse(data);\n if (jsonData.errorMsg) {\n $('div.error').text(jsonData.errorMsg); // show response from the php script.\n $('span.result-count').text('');\n } else {\n $('span.result-count').text(' There are ' + jsonData.resultCount + ' available questions.');\n $('div.error').text('');\n }\n },\n });\n e.preventDefault(); // avoid to execute the actual submit of the form.\n });\n});\nvar commerce = {};\ncommerce.page = {};\ncommerce.page.cart = {};\nliteratum.utils = {\n send: function (request, callback, error) {\n if (!request) {\n return;\n }\n request.ajaxRequest = true;\n return $.ajax({\n url: '/action/' + request.action,\n type: 'POST',\n contentType: 'application/x-www-form-urlencoded',\n crossDomain: true,\n xhrFields: {withCredentials: true},\n data: request,\n success: callback,\n error: error,\n });\n },\n copyForm: function (source, to) {\n $(source)\n .find('input')\n .each(function () {\n var name = $(this).attr('name');\n var targetField = $(to).find(\"input[name='\" + name + \"']\");\n targetField.val($(this).val());\n });\n\n $(source)\n .find('select')\n .each(function () {\n var value = $(this).find('option:selected').val();\n $(to)\n .find(\"select[name='\" + $(this).attr('name') + \"']\")\n .find(\"option[value='\" + value + \"']\")\n .attr('selected', '');\n });\n },\n clearForm: function (form) {\n $(form).click(function () {\n $(this).find('input[type=text], select, textarea').val('');\n });\n },\n hasErrors: function (attributes) {\n var hasErrors = false;\n Object.keys(attributes).forEach(function (key) {\n hasErrors |= key.toLowerCase().indexOf('error') > -1;\n });\n return hasErrors;\n },\n hasAttributes: function (attributes) {\n return attributes && Object.keys(attributes).length > 0;\n },\n scroll: function (selector, speed, offset) {\n var $object = null;\n\n if (selector instanceof jQuery) {\n $object = selector;\n } else {\n $object = $(selector);\n }\n\n if (!$object || $object.length == 0) return;\n\n if (typeof speed === 'undefined') {\n speed = 2000;\n }\n\n if (typeof offset === 'undefined') {\n offset = $object.offset().top;\n } else {\n offset = $object.offset().top - offset;\n }\n\n $('html, body').animate(\n {\n scrollTop: offset,\n },\n speed\n );\n },\n nextCheckoutSection: function () {\n var $widget = $('.eCommerceCheckoutFieldsWidget .scroll-focus').closest('.widget');\n if ($(window).width() > 992) {\n literatum.utils.scroll($widget, 800, 10);\n } else {\n literatum.utils.scroll($widget, 800, 60);\n }\n },\n getCountryState: function (iso2Alpha, callback) {\n return literatum.utils.send(\n {\n action: 'getCountryStates',\n country: iso2Alpha,\n },\n callback\n );\n },\n};\n\n///////////////////////////////// TEMP\n\n/*$(\".add-to-cart\").click(function (e) {\n e.preventDefault();\n $(this).toggleClass(\"opened\");\n $(this).find(\".purchaseArea\").slideToggle();\n\n var purchaseAreaWidth = $(this).parent().width();\n $(this).find(\".purchaseArea\").css('width', purchaseAreaWidth);\n\n});*/\n\nif ($('.add-to-cart').length > 0) {\n $('body').click(function (e) {\n var $target = $(e.target);\n if (!$target.hasClass('add-to-cart') && $target.closest('.add-to-cart').length == 0) {\n $('.add-to-cart').removeClass('opened');\n $('.add-to-cart').find('.purchaseArea').slideUp();\n }\n });\n}\n\n// Needs review\n$.fn.serializeObject = function () {\n var o = {};\n var a = this.serializeArray();\n $.each(a, function () {\n if (o[this.name] !== undefined) {\n if (!o[this.name].push) {\n o[this.name] = [o[this.name]];\n }\n o[this.name].push(this.value || '');\n } else {\n o[this.name] = this.value || '';\n }\n });\n return o;\n};\ncommerce.binders = (function () {\n var instance = {};\n\n instance.removeDiscount = function (e) {\n e.preventDefault();\n commerce.cart.discounts.remove($(this).data('discount'));\n };\n\n instance.disableDiscount = function (e) {\n e.preventDefault();\n commerce.cart.discounts.disable($(this).data('discount'));\n };\n\n instance.removeItem = function (e) {\n e.preventDefault();\n commerce.cart.buyingList.remove($(this).data('item-id'));\n };\n\n instance.submitBilling = function (e) {\n e.preventDefault();\n commerce.cart.billing.update($('form.billing').serializeObject());\n };\n\n instance.editBilling = function (e) {\n e.preventDefault();\n literatum.widgets.billing.render({}, {editing: true});\n };\n\n instance.expandBilling = function (e) {\n e.preventDefault();\n $('.billingAddress').slideToggle();\n };\n\n instance.sameAsShipping = function (e) {\n if ($(this).is(':checked')) {\n literatum.utils.copyForm('.checkoutShipping form', '.billingPayment form');\n } else {\n literatum.utils.clearForm('.billingPayment form');\n }\n };\n\n instance.countryChanged = function (e) {\n // TODO: What is this for?\n var countryCode = $(this).val();\n\n var $state = $(this).closest('form').find(\"select[name='state']\");\n\n if ($state.find(\"option[data-country='\" + countryCode + \"']\").length > 0) {\n $state.find(\"option:not([data-country='\" + countryCode + \"'])\").addClass('d-none');\n $state.find(\"option[data-country='\" + countryCode + \"']\").removeClass('d-none');\n if (!$state.is(':visible')) {\n $state.parent().slideDown(); // review\n }\n } else {\n $state.parent().slideUp(); // review\n }\n\n $state.val(null);\n };\n\n instance.bind = function () {\n $('*[data-bind]').each(function () {\n var binderName = $(this).data('bind');\n console.log(\"Binding '\" + binderName + \"' to element '\" + this + \"'\");\n var binder = instance[binderName];\n console.log(this);\n $(this).on('click', binder);\n });\n };\n\n instance.unbind = function () {\n $('*[data-bind]').each(function () {\n try {\n var binderName = $(this).data('bind');\n console.log(\"Unbinding '\" + binderName + \"' to element '\" + this + \"'\");\n var binder = instance[binderName];\n $(this).off('click', binder);\n } catch (e) {\n console.log(e);\n }\n });\n };\n\n return instance;\n})();\n\nwindow.registerListeners = function () {\n // Always unbind before binding again\n try {\n commerce.binders.unbind();\n } catch (e) {\n console.log(e);\n }\n try {\n //console.log(\"Binding events to candidate elements\");\n commerce.binders.bind();\n } catch (e) {\n //console.log(\"Failed to bind events, rolling back...\");\n commerce.binders.unbind();\n }\n};\nliteratum.LoginSuggestionsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\nliteratum.LoginSuggestionsWidget.prototype = new literatum.Widget();\nliteratum.LoginSuggestionsWidget.id = 'loginSuggestions';\nliteratum.LoginSuggestionsWidget.action = '/pb/widgets/identity/loginSuggestions';\nliteratum.LoginSuggestionsWidget.binders = {\n start: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = $(this).siblings('[name=login]').val();\n if (!login) {\n login = widget.find('[name=login]').val();\n }\n var id = widget.find('[name=id]').val();\n var $errorMessage = widget.find('.message.error');\n var $message = widget.find('.message.info');\n var redirect = widget.find('[name=redirectUri]').val();\n var firstTry = widget.find('[name=firstTry]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n login: login,\n loginAction: 'start',\n id: id,\n redirectUri: redirect,\n firstTry: firstTry,\n },\n function (data) {\n if (data.success) {\n var loginAction = data['loginAction'];\n widget.render(\n {},\n {\n view: loginAction,\n canSwitch: data.canSwitch,\n newUser: data.newUser,\n message: data.message,\n errorMessage: data.errorMessage,\n login: login,\n redirectUri: data.redirect,\n firstTry: data.login != login,\n }\n );\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n\n loading.done();\n }\n );\n },\n submitCode: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var code = widget.find('.code').val();\n var remember = widget.find('[name=remember]').val();\n var id = widget.find('[name=id]').val();\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n code: code,\n loginAction: 'code',\n id: id,\n remember: remember,\n redirectUri: redirect,\n },\n function (data) {\n var $message = widget.find('.message.info');\n var $hiddenMessage = widget.find('[name=hiddenMessage]');\n var $errorMessage = widget.find('[name=errorMessage]');\n if (data.success) {\n if (data.newUser) {\n widget.render({}, {view: 'new'});\n } else {\n window.location.href = data.redirect;\n }\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n $errorMessage.removeClass('d-none');\n $hiddenMessage.addClass('d-none');\n widget.registerListeners();\n }\n\n loading.done();\n }\n );\n },\n submitPassword: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var id = widget.find('[name=id]').val();\n var password = widget.find('[name=password]').val();\n var remember = widget.find('[name=remember]').val();\n var $message = widget.find('.message.info');\n var $errorMessage = widget.find('.message.error');\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n password: password,\n loginAction: 'password',\n id: id,\n remember: remember,\n redirectUri: redirect,\n },\n function (data) {\n if (data.success) {\n window.location.href = data.redirect;\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n loading.done();\n }\n );\n },\n usePassword: function (e, widget) {\n e.preventDefault();\n var redirect = widget.find('[name=redirectUri]').val();\n var login = widget.find('[name=login]').val();\n widget.render({}, {view: 'password_plw', canSwitch: true, redirectUri: redirect, login: login});\n },\n useCode: function (e, widget) {\n e.preventDefault();\n var login = widget.find('[name=login]').val();\n var id = widget.find('[name=id]').val();\n var $errorMessage = widget.find('.message.error');\n var $message = widget.find('.message.info');\n var redirect = widget.find('[name=redirectUri]').val();\n literatum.utils.send(\n {\n action: 'doPasswordLessLogin',\n login: login,\n loginAction: 'enablePL',\n id: id,\n redirectUri: redirect,\n },\n function (data) {\n if (data.success) {\n var loginAction = data['loginAction'];\n widget.render(\n {},\n {\n view: loginAction,\n canSwitch: true,\n message: data.message,\n errorMessage: data.errorMessage,\n login: login,\n redirectUri: redirect,\n }\n );\n } else {\n $errorMessage.html(data.errorMessage);\n $message.html(data.message);\n }\n }\n );\n },\n back: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {}, function () {\n loading.done();\n });\n },\n showIndiv: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'individual', currentView: currentView}, function () {\n initIndividualView();\n loading.done();\n });\n },\n showOrg: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'organizational', currentView: currentView}, function () {\n loginSuggestionsInitSearch(function () {\n loading.done();\n });\n });\n },\n showPass: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = widget.find('[name=login]').val();\n var emailRegex =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n var phoneRegex = /^\\+\\d{12}$/;\n if (!emailRegex.test(login) && !phoneRegex.test(login)) {\n widget.render({}, {view: 'individual', login: login, error2: true}, function () {\n initIndividualView();\n loading.done();\n });\n return;\n }\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'password', login: login, currentView: currentView}, function () {\n initPasswordView();\n loading.done();\n });\n },\n localLogin: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var login = widget.find('[name=login]').val();\n var password = widget.find('[name=password]').val();\n var remember = widget.find('[name=remember]').is(':checked');\n literatum.utils.send(\n {\n action: 'doLogin',\n login: login,\n password: password,\n remember: remember,\n redirectUri: '/',\n },\n function (data) {\n if (data.success) window.location.href = '/';\n else {\n var prevView = widget.find('[name=prevView]').val();\n widget.render(\n {},\n {view: 'password', error: true, login: login, currentView: prevView},\n function () {\n initPasswordView();\n loading.done();\n }\n );\n }\n }\n );\n },\n showAllInstitutions: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {view: 'fullInst'}, function () {\n loading.done();\n });\n },\n removeAccount: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var userId = $(this).siblings('[name=userId]').val();\n var cloudId = $(this).closest('.suggestion.item').find('[name=cloudId]').val();\n widget.render({}, {userId: userId, cloudId: cloudId}, function () {\n loginSuggestionsInitSearch(function () {\n loading.done();\n });\n });\n },\n next: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var url = $(this).closest('.suggestion.item').find('[name=url]').val();\n if (url) {\n window.location.href = url;\n } else {\n var login = $(this).siblings('[name=login]').val();\n var currentView = widget.find('[name=currentView]').val();\n widget.render({}, {view: 'password', login: login, currentView: currentView}, function () {\n loading.done();\n });\n }\n },\n showFed: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var fedName = $(this).find('[name=fedName]').val();\n widget.render({}, {view: 'fed', fedName: fedName}, function () {\n loading.done();\n });\n },\n showHistory: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {}, function () {\n loading.done();\n });\n },\n};\nliteratum.LoginSuggestionsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + literatum.LoginSuggestionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n $result = $(\"*[widget-def='\" + literatum.LoginSuggestionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + literatum.LoginSuggestionsWidget.id);\n};\nliteratum.LoginSuggestionsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(literatum.LoginSuggestionsWidget.prototype).registerListeners.call(this);\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.login');\n var $submit = $form.find('[name=submit]');\n $login.on('input', function () {\n if (!$login.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n });\n });\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.code');\n var $submit = $form.find('[name=submit]');\n $login.on('input', function () {\n if (!$login.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n });\n });\n this.find('.pass-less-form').each(function () {\n var $form = $(this);\n var $hiddenMessage = $form.find('[name=hiddenMessage]');\n var $errorMessage = $form.find('[name=errorMessage]');\n setTimeout(function () {\n $hiddenMessage.removeClass('d-none');\n $errorMessage.addClass('d-none');\n }, 30000);\n });\n};\nliteratum.widgets.register(literatum.LoginSuggestionsWidget);\n$(document).ready(function () {\n loginSuggestionsInitSearch();\n});\n\nwindow.initPasswordView = function () {\n $('.lgn__sug__submit__pass').prop('disabled', !$('.lgn__sug__password__input').val());\n $('.lgn__sug__password__input').on('keypress', function (e) {\n var key = e.which || e.keyCode;\n if (key === 13) {\n $('.lgn__sug__submit__pass').trigger('click');\n }\n });\n $('.lgn__sug__password__input').on('keyup', function () {\n $('.lgn__sug__submit__pass').prop('disabled', !$(this).val());\n });\n};\n\nwindow.initIndividualView = function () {\n $('.lgn__sug__submit__individual').prop('disabled', !$('.lgn__sug__text__input__individual').val());\n $('.lgn__sug__text__input__individual').on('keypress', function (e) {\n var key = e.which || e.keyCode;\n if (key === 13) {\n $('.lgn__sug__submit__individual').trigger('click');\n }\n });\n $('.lgn__sug__text__input__individual').on('keyup', function () {\n $('.lgn__sug__submit__individual').prop('disabled', !$(this).val());\n });\n};\n\nfunction loginSuggestionsInitSearch(fun) {\n var $el = $('#login_suggestions_org_search');\n if ($el.length) {\n var ms = $el.magicSuggest({\n allowFreeEntries: false,\n data: '/action/ssostart',\n hideTrigger: true,\n maxSelection: 1,\n placeholder: 'Type the name of your organization',\n renderer: function (data) {\n return (\n '
' +\n '' +\n '
' +\n data.name +\n '
' +\n '
' +\n data.federationName +\n '
' +\n '
' +\n '
'\n );\n },\n });\n $(ms).on('load', fun);\n }\n}\nvar Track = {};\n(function (undefined) {\n var jquery = typeof jQuery != 'undefined';\n var elements = {};\n var userAgent = navigator.userAgent.toLowerCase();\n var defaultAjaxSettings = {\n async: !/webkit/.test(userAgent),\n asynchronous: !/webkit/.test(userAgent),\n cache: false,\n timeout: /msie/.test(userAgent) ? 0 : 100,\n requestTimeout: /msie/.test(userAgent) ? 0 : 100,\n contentType: 'application/x-www-form-urlencoded',\n url: '/action/clickThrough',\n };\n var extend = function (dst, src) {\n if (jquery) {\n extend = jQuery.extend;\n } else {\n extend = Object.extend;\n }\n return extend(dst, src);\n };\n var each = function (o, iterator) {\n if (jquery) {\n each = jQuery.each;\n } else {\n each = function (object, callback) {\n var name,\n i = 0,\n length = object.length,\n isObj = length === undefined || typeof object === 'function';\n if (isObj) {\n for (name in object) {\n if (callback.call(object[name], name, object[name]) === false) {\n break;\n }\n }\n } else {\n for (\n var value = object[0];\n i < length && callback.call(value, i, value) !== false;\n value = object[++i]\n ) {}\n }\n return object;\n };\n }\n return each(o, iterator);\n };\n var bind = function (selector, options, callback) {\n var jQueryBind = function (selector, options, callback) {\n if (options.selector) {\n jQuery(selector).on(options.on, options.selector, options, callback);\n } else {\n jQuery(selector).on(options.on, options, callback);\n }\n };\n var oldJQueryBind = function (selector, options, callback) {\n var callbackToUse = callback;\n if (options.selector) {\n callbackToUse = function (event) {\n var $target = $(event.currentTarget);\n while (!$target.is(options.selector) && $target.children().length) {\n $target.children().each(function () {\n $target = $(this);\n if ($target.is(options.selector)) {\n return false;\n }\n });\n }\n if ($target.is(options.selector)) {\n callback.call(event.target, event, options);\n }\n };\n jQuery(selector).data('TrackCallback', callbackToUse);\n }\n jQuery(selector).bind(options.on, options, callbackToUse);\n };\n var prototypeBind = function (selector, options, callback) {\n $$(selector).each(function (el) {\n Event.observe(el, options.on, callback.bindAsEventListener(this, options));\n });\n };\n if (jquery) {\n if (jQuery.fn.on) {\n bind = jQueryBind;\n } else {\n bind = oldJQueryBind;\n }\n } else {\n bind = prototypeBind;\n }\n return bind(selector, options, callback);\n };\n var unbind = function (selector, options, callback) {\n var jQueryUnbind = function (selector, options, callback) {\n if (options.selector) {\n jQuery(selector).off(options.on, options.selector, options, callback);\n } else {\n jQuery(selector).off(options.on, options, callback);\n }\n };\n var oldJQueryUnbind = function (selector, options, callback) {\n if (options.selector) {\n callback = jQuery(selector).data('TrackCallback');\n }\n if (callback) {\n jQuery(selector).unbind(options.on, callback);\n } else {\n jQuery(selector).unbind(options.on);\n }\n };\n var prototypeUnbind = function (selector, options, callback) {\n $$(selector).each(function (el) {\n Event.stopObserving(el, options.on);\n });\n };\n if (jquery) {\n if (jQuery.fn.on) {\n unbind = jQueryUnbind;\n } else {\n unbind = oldJQueryUnbind;\n }\n } else {\n unbind = prototypeUnbind;\n }\n return unbind(selector, options, callback);\n };\n var sendBeacon = function (options) {\n var formData = new FormData();\n for (var key in options.data) {\n if (options.data.hasOwnProperty(key)) {\n formData.append(key, options.data[key]);\n }\n }\n navigator.sendBeacon(options.url, formData);\n };\n var ajax = function (ajaxOptions) {\n if (ajaxOptions.useBeacon && navigator.sendBeacon) {\n ajax = sendBeacon;\n } else if (jquery) {\n ajax = jQuery.ajax;\n } else {\n ajax = function (options) {\n options.parameters = options.data;\n new Ajax.Request(options.url, options);\n };\n }\n ajax(ajaxOptions);\n };\n var defaultFire = function (options, data) {\n var ajaxSettings = extend(extend({}, defaultAjaxSettings), options.ajaxSettings);\n ajaxSettings.data = extend(extend({}, ajaxSettings.data), data);\n ajax(ajaxSettings);\n };\n var defaultOptions = {\n on: 'mouseup',\n fire: defaultFire,\n acceptEvent: function (e) {\n return e.which === 1 || e.which === 2;\n },\n data: {},\n };\n var methods = {\n setup: function (options) {\n if (options.fire !== undefined) {\n defaultFire = options.fire;\n }\n if (options.options !== undefined) {\n defaultOptions = extend(extend({}, defaultOptions), options.options);\n }\n if (options.ajax !== undefined) {\n defaultAjaxSettings = extend(extend({}, defaultAjaxSettings), options.ajax);\n }\n },\n init: function (el) {\n each((elements = el), function (selector, options) {\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = options;\n for (var i = 0; i < array.length; ++i) {\n options = array[i];\n options = extend(extend({}, defaultOptions), options);\n if (options.fire !== undefined) {\n bind(selector, options, methods.onEvent);\n }\n }\n } else {\n options = extend(extend({}, defaultOptions), options);\n if (options.fire !== undefined) {\n bind(selector, options, methods.onEvent);\n }\n }\n });\n return this;\n },\n destroy: function () {\n elements.each(function (selector, options) {\n unbind(selector, options.on, options.fire);\n });\n return this;\n },\n onEvent: function (event, options) {\n if (options == undefined) {\n options = event.data;\n }\n var data = options.data;\n if (typeof options.acceptEvent == 'function' && !options.acceptEvent(event)) {\n return true;\n }\n var addData = options.addData;\n if (typeof addData == 'function') {\n try {\n extend(data, addData.call(event.target, options, event));\n } catch (ex) {\n if (console && console.log) {\n console.log('Failed to extract data:' + ex);\n return;\n }\n }\n }\n options.fire(options, data);\n return true;\n },\n };\n Track = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method) {\n return methods.init.apply(this, arguments);\n }\n };\n})();\n(function () {\n window.TrackPageTransitions = function (Track, $, o) {\n o = o || {};\n var $elements = $('*[data-track]');\n if (!$elements.length) {\n return;\n }\n Track('setup', {ajax: {url: o.url || '/action/analytics', method: 'POST', useBeacon: true}});\n var captureAllPageTransitions = $('html[data-track]').length != 0;\n Track({\n body: [\n {\n on: 'mousedown keydown',\n selector: captureAllPageTransitions ? 'a[href]' : '*[data-track] a[href], a[href][data-track]',\n addData: extractData,\n acceptEvent: function (e) {\n return e.which == 1 || e.keyCode == 13;\n },\n data: {EventType: 'PageTransition'},\n },\n {\n on: 'submit',\n selector: captureAllPageTransitions ? 'form' : '*[data-track] form, form[data-track]',\n addData: extractData,\n data: {EventType: 'PageTransition'},\n },\n ],\n });\n };\n if (typeof Track != 'undefined') {\n if (typeof jQuery != 'undefined') {\n jQuery(document).ready(function () {\n TrackPageTransitions(Track, jQuery);\n });\n } else if (typeof window.Prototype != 'undefined') {\n document.observe('dom:loaded', function () {\n TrackPageTransitions(Track, $$);\n });\n }\n }\n\n function collectData(el) {\n var d = {};\n $.each(el.attributes, function (i, attrib) {\n var name = attrib.name;\n if (name.indexOf('data-') == 0) {\n name = name.substring('data-'.length);\n name = name.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n d[name] = attrib.value;\n }\n });\n return d;\n }\n\n function extractData(options, event) {\n var data = {};\n var $html = $(document.documentElement);\n var requestId = $html.data('requestId');\n if (requestId) {\n data.OriginRequestId = requestId;\n data.OriginUrl = window.location.href;\n var date = new Date();\n date.setTime(date.getTime() + 60 * 1000);\n var expires = date.toGMTString();\n document.cookie = 'OriginRequestId=' + requestId + '; expires=' + expires + '; path=/';\n }\n var $this = $(this);\n var href;\n if ($this.is('a')) {\n data.LinkText = $this.text();\n href = $this.attr('href');\n } else if ($this.is('form')) {\n href = $this.attr('action');\n }\n if (href) {\n data.LinkHref = href;\n if (href.indexOf('/doi/') != -1) {\n data.doi = href.split('/doi/')[1];\n }\n }\n var innerFound = false;\n $.each($this.add($this.parents()), function () {\n var $ancestor = $(this);\n var d = null;\n try {\n d = $ancestor.data();\n } catch (ex) {\n d = false;\n }\n if (d === false) {\n d = collectData($ancestor.get(0));\n }\n for (var property in d) {\n if (d.hasOwnProperty(property) && property.indexOf('track') == 0) {\n var name = property.substring('track'.length);\n if (name == 'Func' && d[property]) {\n var func = window[d[property]];\n if ($.isFunction(func)) {\n try {\n var extra = func.call($ancestor);\n if (extra) {\n $.extend(data, extra);\n }\n } catch (ex) {}\n }\n continue;\n }\n if (name.length) {\n data['Track' + name] = d[property];\n }\n if (!innerFound) {\n innerFound = true;\n if ($this.is('a')) {\n var linkIndex = $('a[href*=\"/doi\"], a[href*=\"/loi\"], a[href*=\"/toc\"]', $ancestor).index(\n $this\n );\n if (linkIndex > -1) {\n data.LinkIndex = linkIndex + 1;\n }\n }\n }\n }\n }\n });\n if (event.which == 1) {\n data.ClickPageX = event.pageX;\n data.ClickPageY = event.pageY;\n }\n return data;\n }\n})();\n(function () {\n var TrackSearchResults = function (Track, $, undefined) {\n var $searchResults = $(\n '.searchResultContainer, #frmSearchResults, #frmSearch, #searchResultsAll, #searchResults, .searchResult, .search-result, #searchResultContent'\n );\n if (!$searchResults.length) {\n return;\n }\n Track('setup', {ajax: {url: '/action/analytics', useBeacon: true}});\n var resultSelectorAction = {\n selector: 'a[href^=\"/doi\"], a[href^=\"/article\"]',\n addData: extractDataSearchResult,\n data: {EventType: 'SearchResultClicked'},\n };\n Track({\n '.searchResultContainer .articleLinks, #frmSearch .articleEntry td, .searchResultsListing li':\n resultSelectorAction,\n '#searchResultsAll .articleEntry td, #searchResults .searchResultItem .articleInfo': resultSelectorAction,\n '#frmSearchResults .articleEntry td, #frmSearchResults .articleEntry div, #frmSearchResults .searchResultItem span':\n resultSelectorAction,\n '#frmSearchResults .searchResultItem .atcl-item, #frmSearchResults .searchResultItem div':\n resultSelectorAction,\n '#frmSearchResults .searchEntry .searchEntryTools, .searchResult .result-list li': resultSelectorAction,\n '.contentContainer .searchResult td, .search-result .items-results li span': resultSelectorAction,\n '#frmSearch .article-details, #frmSearchResults .search-results .search-result-item': resultSelectorAction,\n '#searchResultContent .o-results .m-result, #frmSearchResults .search-results .articleBox, .search-result .items-results .issue-item_metadata':\n resultSelectorAction,\n });\n };\n if (typeof Track != 'undefined') {\n if (typeof jQuery != 'undefined') {\n jQuery(document).ready(function () {\n TrackSearchResults(Track, jQuery);\n });\n } else if (typeof window.Prototype != 'undefined') {\n document.observe('dom:loaded', function () {\n TrackSearchResults(Track, $$);\n });\n }\n }\n\n function extractCommonData(data, options, event) {\n var $this = $(this);\n var searchResultRows;\n var clickedRow;\n var $searchResultRow = $this.closest(\n '#searchResultItems, .search-results, .searchEntry, .contentContainer, #frmSearch, #frmSearchResults, #searchResultContent .o-results, .search-result'\n );\n if ($searchResultRow.length) {\n searchResultRows = $searchResultRow.find(\n '.articleEntry, .searchResultItem, .searchEntry, .article-details, .search-result-item, .m-result, .articleBox, .issue-item'\n );\n clickedRow = $this.closest(\n '.articleEntry, .searchResultItem, .searchEntry, .article-details, .search-result-item, .m-result, .articleBox, .issue-item'\n );\n } else {\n $searchResultRow = $this.closest('.searchResultsListing, .result-list, .items-results');\n if ($searchResultRow.length) {\n searchResultRows = $searchResultRow.children('li');\n clickedRow = $this.closest('li');\n }\n }\n if (searchResultRows.length && clickedRow.length) {\n data.searchPageRank = searchResultRows.index(clickedRow) + 1;\n }\n var $container = $this.closest(\n '.searchResultContainer, .type-search-results, .searchNav, .searchResult, .search-result, #searchResultContent'\n );\n if (!$container.length) {\n $container = $('.searchResults_paging, .searchResultsCont, .searchResults');\n }\n if ($container.length) {\n var $selectedPage = $container.find(\n '.pages .selected:first, .pages .activeLink:first, .pages .current:first, .searchPages .activeLink:first, .pagination .activeLink:first, .pagination .active:first, .pageLinks .selected:first, .paginationLinks .s-active:first'\n );\n if ($selectedPage.length) {\n data.resultPageNum = parseInt($selectedPage.text());\n } else {\n var $paginationElements = $container\n .find('.paginationControls, .paginationLinks')\n .first()\n .find('li:not(:has(a))');\n if ($paginationElements.length) {\n $paginationElements.each(function () {\n var $innerMostChildOfPagination = $(this).children();\n while ($innerMostChildOfPagination.length) {\n $innerMostChildOfPagination = $innerMostChildOfPagination.children();\n }\n $selectedPage = $.trim($innerMostChildOfPagination.end().text());\n if ($selectedPage.length && isInt($selectedPage)) {\n data.resultPageNum = parseInt($selectedPage);\n return false;\n }\n });\n }\n }\n }\n if (!data.resultPageNum) {\n var startPageFromSearchForm = $('#searchResultsAll, #frmSearch, #frmSearchResults').find(\n 'input[name=startPage]'\n );\n if (startPageFromSearchForm.length) {\n data.resultPageNum = parseInt(startPageFromSearchForm.val()) + 1;\n }\n }\n }\n\n function isInt(n) {\n return parseInt(n) + 0 === parseInt(n);\n }\n\n function extractDataSearchResult(options, event) {\n var data = {};\n var $this = $(this);\n var $articleEntry = $this.closest('.articleEntry, .searchResultItem, .articleCitation, .m-result');\n if ($articleEntry.length) {\n data.doi = $articleEntry.find(':input[name=\"doi\"]').val();\n if (!data.doi) {\n data.pii = $articleEntry.find(':input[name=\"pii\"]').val();\n }\n }\n if (!data.doi && !data.pii) {\n var href = $this.attr('href');\n if (typeof href == 'undefined') {\n var link = $this.closest('a');\n href = link.attr('href');\n }\n if (href.includes('doi')) {\n var doi = href.split('/doi/')[1];\n var doiPattern = new RegExp('^10\\\\.\\\\d\\\\d\\\\d\\\\d(\\\\d*)/(.+)');\n if (doiPattern.test(doi)) {\n data.doi = doi;\n } else {\n data.doi = doi.substring(doi.indexOf('/') + 1);\n }\n } else if (href.includes('article/')) {\n var pii = href.split('/article/')[1];\n data.pii = pii.substring(0, pii.indexOf('/'));\n }\n }\n extractCommonData.call(this, data, options, event);\n return data;\n }\n})();\n$(document).ready(function () {\n $('.allowance__message').click(function () {\n $('.allowance__text').toggleClass('d-none');\n $('.allowance__message .arrow_d_n').toggleClass('openAllowance');\n });\n $('.preview_button').click(function () {\n $('.preview__modal.popup').removeClass('d-none');\n $('body.pb-ui').addClass('noscroll');\n });\n $('.preview__modal .icon-preview-close_thin,.preview__options .btn-cancel,.preview__content .close').click(\n function () {\n $('.preview__modal.popup').addClass('d-none');\n $('body.pb-ui').removeClass('noscroll');\n }\n );\n});\n(function ($) {\n $.fn.multiSelect = function (options) {\n $.fn.multiSelect.init($(this), options);\n };\n $.extend($.fn.multiSelect, {\n defaults: {actcls: 'active', selector: 'tbody tr', except: ['tbody'], statics: ['.static'], callback: false},\n first: null,\n last: null,\n init: function (scope, options) {\n this.scope = scope;\n this.options = $.extend({}, this.defaults, options);\n this.initEvent();\n },\n checkStatics: function (dom) {\n for (var i in this.options.statics) {\n if (dom.is(this.options.statics[i])) {\n return true;\n }\n }\n },\n initEvent: function () {\n var self = this,\n scope = self.scope,\n options = self.options,\n callback = options.callback,\n actcls = options.actcls;\n scope.on('click.mSelect', options.selector, function (e) {\n if (!e.shiftKey && self.checkStatics($(this))) {\n return;\n }\n if ($(this).hasClass(actcls)) {\n $(this).removeClass(actcls);\n } else {\n $(this).addClass(actcls);\n }\n if (e.shiftKey && self.last) {\n if (!self.first) {\n self.first = self.last;\n }\n var start = self.first.index();\n var end = $(this).index();\n if (start > end) {\n var temp = start;\n start = end;\n end = temp;\n }\n $(options.selector, scope)\n .removeClass(actcls)\n .slice(start, end + 1)\n .each(function () {\n if (!self.checkStatics($(this))) {\n $(this).addClass(actcls);\n }\n });\n window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();\n } else if (!e.ctrlKey && !e.metaKey) {\n $(this).siblings().removeClass(actcls);\n }\n self.last = $(this);\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n });\n $(document).on('click.mSelect', function (e) {\n for (var i in options.except) {\n var except = options.except[i];\n if ($(e.target).is(except) || $(e.target).parents(except).length) {\n return;\n }\n }\n scope.find(options.selector).each(function () {\n if (!self.checkStatics($(this))) {\n $(this).removeClass(actcls);\n }\n });\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n });\n $(document).on('keydown.mSelect', function (e) {\n if (e.keyCode == 65 && (e.metaKey || e.ctrlKey)) {\n $(options.selector, scope).each(function () {\n if (!self.checkStatics($(this))) {\n $(this).addClass(actcls);\n }\n });\n $.isFunction(callback) && callback($(options.selector + '.' + actcls, scope));\n e.preventDefault();\n return false;\n }\n });\n $(document).on('keyup.mSelect', function (e) {\n if (e.keyCode == 16) {\n self.first = null;\n }\n });\n },\n });\n})(jQuery);\n\nwindow.initRemoveButton = function (name, topicCode) {\n $('.specify_membership__remove_button_' + name).click(function () {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var ids = [];\n var selectedItems = $('.specify_membership__' + name + '_table tr.active');\n $('.specify_membership__' + name + '_table tr.active td:first-child').each(function () {\n ids.push($(this).html());\n });\n literatum.utils.send(\n {\n action: 'specifyMembership',\n subAction: 'remove',\n isNeg: name === 'neg',\n id: ids,\n topicCode: topicCode,\n },\n function (data) {\n if (data.status === 'error') {\n alert('Removing the selected rules have failed.');\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'refresh') {\n location.reload();\n } else {\n selectedItems.remove();\n }\n loading.done();\n },\n function () {\n alert('Removing the selected rules have failed.');\n loading.done();\n }\n );\n });\n};\n\nliteratum.SpecifyMembershipWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\nliteratum.SpecifyMembershipWidget.prototype = new literatum.Widget();\nliteratum.SpecifyMembershipWidget.id = 'specifyMembership';\nliteratum.SpecifyMembershipWidget.action = '/pb/widgets/specify-membership/specifyMembership';\nliteratum.SpecifyMembershipWidget.binders = {\n showPubs: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n widget.render({}, {showPubs: true, topicCode: topicCode}, function () {\n $('.specify_membership__pos_table').multiSelect();\n $('.specify_membership__neg_table').multiSelect();\n $('.search-popup__container .result_table').multiSelect();\n initRemoveButton('pos', topicCode);\n initRemoveButton('neg', topicCode);\n $('.specify_membership__add_button_pos').click(function () {\n $('.search-popup').removeClass('d-none');\n $('.search-popup').addClass('pos');\n $('html').addClass('disable_scroll');\n });\n $('.specify_membership__add_button_neg').click(function () {\n $('.search-popup').removeClass('d-none');\n $('.search-popup').addClass('neg');\n $('html').addClass('disable_scroll');\n });\n var cancel_function = function () {\n $('.search-popup').addClass('d-none');\n $('.search-popup').removeClass('neg');\n $('.search-popup').removeClass('pos');\n $('html').removeClass('disable_scroll');\n };\n $('.search-popup .cancel').click(cancel_function);\n var marker;\n $('.search-popup .add').click(function () {\n var name = $('.search-popup').hasClass('pos') ? 'pos' : 'neg';\n var loading = new literatum.FullPageLoading();\n loading.start();\n var ids = [];\n $('.result_container .result_table tr.active td:first-child').each(function () {\n ids.push($(this).html());\n });\n var selectedItems = $('.result_container .result_table tr.active');\n cancel_function();\n literatum.utils.send(\n {\n action: 'specifyMembership',\n subAction: 'add',\n id: ids,\n isNeg: name === 'neg',\n topicCode: topicCode,\n },\n function (data) {\n if (data.status === 'error') {\n alert('Adding the selected rules have failed.');\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'refresh') {\n location.reload();\n } else {\n selectedItems.each(function () {\n marker = $(this).html() + '';\n marker = '' + marker + '';\n $('.specify_membership__' + name + '_table tbody').prepend(marker);\n });\n }\n loading.done();\n },\n function () {\n alert('Adding the selected rules have failed.');\n loading.done();\n }\n );\n });\n loading.done();\n });\n },\n hidePubs: function (e, widget) {\n e.preventDefault();\n if ($('.specify_membership__button').html().indexOf('Show') == -1) {\n $('.specify_membership__button').html('Show Specify Membership');\n } else {\n $('.specify_membership__button').html('Hide Specify Membership');\n }\n $('.specify_membership__tables_container').toggleClass('d-none');\n },\n doTitleSearch: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n var title = widget.find('[name=title_filter]').val();\n literatum.utils.send(\n {action: 'doTitleSearch', title: title},\n function (data) {\n widget.find('.search-popup__container .input_container').toggleClass('d-none');\n widget.find('.search-popup__container .result_container').toggleClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').removeClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').addClass('nav_disabled');\n widget.find('.search-popup__container .add').removeClass('d-none');\n var result_table = widget.find('.search-popup__container .result_table tbody');\n result_table.empty();\n var markup;\n for (var i = 0; i < data.length; i++) {\n markup = '' + data[i].DOI + '' + data[i].Title + '';\n result_table.append(markup);\n }\n loading.done();\n },\n function () {\n console.error('An error occurred while searching using title within topicStory widget.');\n loading.done();\n }\n );\n },\n forward: function (e, widget) {\n if (widget.find('.search-popup__container .back_forward_container .forward').hasClass('nav_disabled')) return;\n widget.find('.search-popup__container .input_container').addClass('d-none');\n widget.find('.search-popup__container .result_container').removeClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').removeClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').addClass('nav_disabled');\n widget.find('.search-popup__container .add').removeClass('d-none');\n },\n back: function (e, widget) {\n if (widget.find('.search-popup__container .back_forward_container .back').hasClass('nav_disabled')) return;\n widget.find('.search-popup__container .input_container').removeClass('d-none');\n widget.find('.search-popup__container .result_container').addClass('d-none');\n widget.find('.search-popup__container .back_forward_container .back').addClass('nav_disabled');\n widget.find('.search-popup__container .back_forward_container .forward').removeClass('nav_disabled');\n widget.find('.search-popup__container .add').addClass('d-none');\n },\n reset: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n literatum.utils.send(\n {action: 'specifyMembership', subAction: 'reset', topicCode: topicCode},\n function (data) {\n if (data.status === 'refresh') {\n location.reload();\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'error') {\n alert('Reset operation failed!');\n }\n loading.done();\n },\n function () {\n alert('Reset operation failed!');\n loading.done();\n }\n );\n },\n saveAndRefresh: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var topicCode = widget.find('[name=topicCode]').val();\n literatum.utils.send(\n {action: 'specifyMembership', subAction: 'save', topicCode: topicCode},\n function (data) {\n if (data.status === 'refresh') {\n location.reload();\n } else if (data.status === 'unauthorized') {\n window.location.replace('action/showLogin');\n } else if (data.status === 'error') {\n alert('Saving operation failed!');\n }\n loading.done();\n },\n function () {\n alert('Saving operation failed!');\n loading.done();\n }\n );\n },\n};\nliteratum.SpecifyMembershipWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + literatum.SpecifyMembershipWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n $result = $(\"*[widget-def='\" + literatum.SpecifyMembershipWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + literatum.SpecifyMembershipWidget.id);\n};\nliteratum.SpecifyMembershipWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(literatum.SpecifyMembershipWidget.prototype).registerListeners.call(this);\n};\nliteratum.widgets.register(literatum.SpecifyMembershipWidget);\n\n$(document).ready(function () {\n $('.relatedArtContainer .showMore').on('click', function () {\n var max = $('.relatedArtContainer .relatedArt').data('collapse');\n $('.relatedArtContainer .relatedArt li:gt(' + max + ')').toggleClass('d-none');\n var a = $(this).find('a');\n a.html(a.html() === 'more' ? 'collapse' : 'more');\n var arrow = $(this).find('div');\n arrow.toggleClass('arrow-down');\n arrow.toggleClass('arrow-up');\n });\n});\n\ncommerce.cart = (function () {\n var instance = {};\n var cartInfo;\n var listeners = {};\n var callbacks = [];\n var errorHandler;\n\n function triggerRefresh(updatedCartInfo) {\n console.log('Trying to refresh current cart state...');\n Object.keys(listeners).forEach(function (key) {\n commerce.cart.notify(key, updatedCartInfo);\n });\n cartInfo = updatedCartInfo;\n }\n\n instance.refresh = function () {\n literatum.utils.send({action: 'showCart'}, triggerRefresh, errorHandler);\n };\n instance.identity = {\n name: 'identity',\n guest: function (email, acceptTermsConditions) {\n literatum.utils.send(\n {\n action: 'guestCheckout',\n email: email,\n acceptTermsConditions: acceptTermsConditions,\n },\n commerce.cart.identity.refresh,\n errorHandler\n );\n },\n login: function (email, password) {\n literatum.utils.send(\n {\n action: 'doLogin',\n email: email,\n password: password,\n },\n commerce.cart.identity.refresh,\n errorHandler\n );\n },\n registration: function (email) {\n literatum.utils.send({action: 'register', email: email}, commerce.cart.identity.refresh, errorHandler);\n },\n clear: function () {\n literatum.utils.send({action: 'resetCartAction'}, commerce.cart.identity.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.identity, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.identityHash != updatedCartInfo.identityHash;\n },\n };\n instance.buyingList = {\n name: 'buyingList',\n addItem: function (itemId) {\n literatum.utils.send({action: 'addToCart', id: itemId}, commerce.cart.buyingList.refresh, errorHandler);\n },\n remove: function (itemId) {\n literatum.utils.send(\n {\n action: 'removeCartItem',\n id: itemId,\n },\n commerce.cart.buyingList.refresh,\n errorHandler\n );\n },\n decreaseQuantity: function (itemId) {\n literatum.utils.send(\n {action: 'decreaseQuantity', id: itemId},\n function (cartInfo) {\n commerce.cart.notify('quantityDecreased', cartInfo);\n },\n errorHandler\n );\n },\n increaseQuantity: function (itemId) {\n literatum.utils.send(\n {action: 'increaseQuantity', id: itemId},\n function (cartInfo) {\n commerce.cart.notify('quantityIncreased', cartInfo);\n },\n errorHandler\n );\n },\n updateQuantity: function (itemId, currentQuantity, requiredQuantity) {\n literatum.utils.send(\n {\n action: 'updateQuantity',\n id: itemId,\n currentQuantity: currentQuantity,\n requiredQuantity: requiredQuantity,\n },\n function (cartInfo) {\n commerce.cart.notify('updateQuantity', cartInfo);\n },\n commerce.cart.buyingList.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.buyingList, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.buyingItemHash != updatedCartInfo.buyingItemHash;\n },\n };\n instance.restoreAccess = {\n name: 'restoreAccess',\n request: function (email) {\n literatum.utils.send(\n {\n action: 'restoreContentAccess',\n email: email,\n },\n commerce.cart.restoreAccess.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.restoreAccess, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return true;\n },\n };\n instance.discounts = {\n name: 'discounts',\n apply: function (discountCode) {\n literatum.utils.send(\n {\n action: 'applyDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n remove: function (discountCode) {\n literatum.utils.send(\n {\n action: 'removeDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n enable: function (discountCode) {\n literatum.utils.send(\n {\n action: 'enableDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n disable: function (discountCode) {\n literatum.utils.send(\n {\n action: 'disableDiscount',\n discount: discountCode,\n },\n commerce.cart.discounts.refresh,\n errorHandler\n );\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.discounts, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.summary = {\n name: 'summary',\n refresh: function () {\n commerce.cart.notify(commerce.cart.summary, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.shipping = {\n name: 'shipping',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateShippingAddress'}, form);\n literatum.utils.send(request, commerce.cart.shipping.refresh, errorHandler);\n },\n getShippingCosts: function (country, state, callback) {\n literatum.utils.send({action: 'getShippingCosts', country: country, state: state}, callback);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.shipping, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return (\n cartInfo == null ||\n cartInfo.shippingHash != updatedCartInfo.shippingHash ||\n cartInfo.buyingItemHash != updatedCartInfo.buyingItemHash\n );\n },\n };\n instance.tax = {\n name: 'tax',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateTax'}, form);\n literatum.utils.send(request, commerce.cart.tax.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.tax, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.cartHash != updatedCartInfo.cartHash;\n },\n };\n instance.billing = {\n name: 'billing',\n update: function (form) {\n var request = {};\n $.extend(request, {action: 'updateBillingAddress'}, form);\n literatum.utils.send(request, commerce.cart.billing.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.billing, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.billingHash != updatedCartInfo.billingHash;\n },\n };\n instance.savedItems = {\n name: 'savedItems',\n saveById: function (itemId) {\n literatum.utils.send({action: 'saveItem', id: itemId}, commerce.cart.savedItems.refresh, errorHandler);\n },\n saveByDoi: function (doi) {\n literatum.utils.send({action: 'saveItem', doi: doi}, commerce.cart.savedItems.refresh, errorHandler);\n },\n remove: function (id) {\n literatum.utils.send({action: 'removeSavedItem', id: id}, commerce.cart.savedItems.refresh, errorHandler);\n },\n refresh: function (cartInfo) {\n commerce.cart.notify(commerce.cart.savedItems, cartInfo);\n },\n changed: function (updatedCartInfo) {\n return cartInfo == null || cartInfo.savedItemsHash != updatedCartInfo.savedItemsHash;\n },\n };\n instance.register = function (service, callback) {\n console.log('Commerce Cart :: Registering service ' + service.name + ' listener...');\n if (service) {\n var serviceName = typeof service === 'string' ? service : service.name;\n if (!listeners[serviceName]) {\n listeners[serviceName] = [];\n }\n listeners[serviceName].push(callback);\n }\n };\n instance.notify = function (service, updatedCartInfo) {\n if (updatedCartInfo) {\n if (updatedCartInfo.sessionChanged) {\n location.reload();\n return;\n }\n if (cartInfo) {\n if (cartInfo.sessionHash != updatedCartInfo.sessionHash) {\n location.reload();\n return;\n }\n }\n }\n\n var result = [];\n var serviceName = typeof service === 'string' ? service : service.name;\n console.log('Commerce Cart :: Notifying ' + serviceName + ' listeners...');\n if (\n typeof serviceName === 'string' ||\n (service && service.changed && service.changed(updatedCartInfo)) ||\n literatum.utils.hasAttributes(updatedCartInfo.attributes)\n ) {\n if (listeners[serviceName]) {\n listeners[serviceName].forEach(function (listener) {\n var value = listener(updatedCartInfo);\n result.push(value);\n });\n }\n }\n var clone = callbacks;\n $.when.apply($, result).then(function () {\n clone.forEach(function (callback) {\n callback();\n });\n });\n commerce.cart.clearCallbacks();\n if (updatedCartInfo) {\n cartInfo = updatedCartInfo;\n }\n };\n instance.setErrorHandler = function (handler) {\n errorHandler = handler;\n };\n instance.addCallback = function (callback) {\n callbacks.push(callback);\n };\n instance.clearCallbacks = function () {\n callbacks = [];\n };\n return instance;\n})();\nconsole.log('Cart Service initialized!');\ncommerce.validators = (function () {\n var instance = {};\n var creditCardsPattern = {};\n creditCardsPattern['visa'] = new RegExp('^4[0-9]{12}(?:[0-9]{3})?$');\n creditCardsPattern['mastercard'] = new RegExp('^[25][1-5][0-9]{14}$');\n creditCardsPattern['amex'] = new RegExp('^3[47][0-9]{13}$');\n creditCardsPattern['dinner'] = new RegExp('^3(?:0[0-5]|[68][0-9])[0-9]{11}$');\n creditCardsPattern['discover'] = new RegExp('^6(?:011|5[0-9]{2})[0-9]{12}$');\n creditCardsPattern['jcb'] = new RegExp('^(?:2131|1800|35\\\\d{3})\\\\d{11}$');\n creditCardsPattern['maestro'] = new RegExp('^(5018|5020|5038|5893|6304|6759|6761|6762|6763)[0-9]{8,15}$');\n instance.creditcard = function (value, element) {\n var number = value.match(/\\d/g);\n if (!number) return true;\n value = number.join('');\n var invalid = true;\n $(element).closest('.input-group').prop('class', 'input-group cc-number');\n Object.keys(creditCardsPattern).forEach(function (k) {\n if (creditCardsPattern[k].test(value) && invalid && /^\\d+$/.test($('#realNumber').val())) {\n invalid = false;\n $(element).closest('.input-group').addClass(k);\n }\n });\n return invalid;\n };\n instance.creditcardDate = function (value, element, form) {\n var currentDate = new Date();\n var currentMonth = currentDate.getMonth(5) + 1;\n var currentYear = currentDate.getFullYear();\n var monthExpiry = form.find(\"[name='expMonth']\").val();\n var yearExpiry = form.find(\"[name='expYear']\").val();\n var expireMonth = parseInt(monthExpiry);\n var expireYear = parseInt(yearExpiry);\n var expireDate = new Date();\n expireDate.setMonth(expireMonth - 1);\n expireDate.setYear(expireYear);\n if (expireYear == '0000' || expireMonth == '00') return true;\n if (currentYear > expireYear) {\n return true;\n }\n if (currentMonth > expireMonth && monthExpiry == '00') {\n return true;\n }\n return expireDate < currentDate;\n };\n instance.notEmpty = function (value) {\n return !value;\n };\n instance.validate = function (form) {\n var $form = null;\n var invalid = true;\n if (form instanceof jQuery) {\n $form = form;\n } else {\n $form = $(form);\n }\n $form.find('input[data-validate]').each(function () {\n var $this = $(this);\n invalid = commerce.validators.validateField($this, $form) && invalid;\n });\n return invalid;\n };\n instance.validateField = function (field, form) {\n var $field = null;\n if (field instanceof jQuery) {\n $field = field;\n } else {\n $field = $(field);\n }\n var validatorName = $field.data('validate');\n var validator = instance[validatorName];\n var value = $field.val();\n return validator(value, $field, form);\n };\n instance.securityCode = function (value) {\n return !/^[0-9]{3,4}$/.test(value);\n };\n return instance;\n})();\ncommerce.Notification = function (element) {\n if (element instanceof jQuery) {\n this.$element = element;\n } else {\n this.$element = $(element);\n }\n this.$p = $(this.$element.find('p'));\n};\ncommerce.Notification.dummy = new commerce.Notification('
');\ncommerce.Notification.prototype.show = function () {\n this.$element.show();\n};\ncommerce.Notification.prototype.showFlex = function () {\n this.$element.css('display', 'flex');\n};\ncommerce.Notification.get = function (element) {\n return new commerce.Notification(element);\n};\ncommerce.Notification.create = function (element) {\n if (!(element instanceof jQuery)) {\n element = $(element);\n }\n element.html('

');\n return new commerce.Notification(element);\n};\ncommerce.Notification.prototype.hide = function () {\n this.$element.addClass('d-none');\n};\ncommerce.Notification.prototype.reset = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.removeClass('errorMsgBox');\n this.$element.addClass('d-none');\n};\ncommerce.Notification.prototype.error = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.addClass('errorMsgBox');\n this.$p.parent('.purchaseMessage').addClass('errorMsgParent');\n};\ncommerce.Notification.prototype.warning = function () {\n this.$p.removeClass('itemAddedMsgBox');\n this.$p.addClass('errorMsgBox');\n};\ncommerce.Notification.prototype.info = function () {\n this.$p.removeClass('errorMsgBox');\n this.$p.addClass('itemAddedMsgBox');\n};\ncommerce.Notification.prototype.setMessage = function (message) {\n this.$p.html(message);\n};\ncommerce.FieldNotification = function (element) {\n if (element instanceof jQuery) {\n this.$element = element;\n } else {\n this.$element = $(element);\n }\n this.$message = $(this.$element.find('.message'));\n this.$label = $(this.$element.find('.label'));\n this.$show = $(this.$element.find('.field-info'));\n};\ncommerce.FieldNotification.prototype.show = function () {\n if (this.$message.text().length > 0) {\n this.$show.removeClass('d-none');\n } else {\n this.$show.addClass('d-none');\n }\n};\ncommerce.FieldNotification.get = function (element) {\n return new commerce.FieldNotification(element);\n};\ncommerce.FieldNotification.prototype.hide = function () {\n this.$show.addClass('d-none');\n};\ncommerce.FieldNotification.prototype.error = function () {\n this.$label.removeClass('warning');\n this.$label.removeClass('info');\n this.$label.addClass('error');\n};\ncommerce.FieldNotification.prototype.warning = function () {\n this.$label.removeClass('error');\n this.$label.removeClass('info');\n this.$label.addClass('warning');\n};\ncommerce.FieldNotification.prototype.info = function () {\n this.$label.removeClass('warning');\n this.$label.removeClass('error');\n this.$label.addClass('info');\n};\ncommerce.FieldNotification.prototype.reset = function () {\n this.hide();\n this.$label.removeClass('warning');\n this.$label.removeClass('error');\n this.$label.removeClass('info');\n this.setMessage('');\n};\ncommerce.FieldNotification.prototype.setMessage = function (message) {\n this.$message.html(message);\n};\ncommerce.BuyingItemWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.summary);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.BuyingItemWidget.prototype = new literatum.Widget();\ncommerce.BuyingItemWidget.id = 'eCommerceCheckoutBuyingItemsWidget';\ncommerce.BuyingItemWidget.action = '/pb/widgets/commerce/buyingItems';\ncommerce.BuyingItemWidget.notifications = {info: commerce.Notification};\ncommerce.BuyingItemWidget.binders = {\n applyDiscount: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.apply(widget.find(\"input[name='discount']\").val());\n },\n removeDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.remove($(this).data('discount'));\n },\n disableDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.disable($(this).data('discount'));\n },\n enableDiscount: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.discounts.enable($(this).data('discount'));\n },\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n removeItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.remove($(this).data('item-id'));\n },\n increaseQuantity: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.increaseQuantity($(this).data('item-id'));\n },\n decreaseQuantity: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.decreaseQuantity($(this).data('item-id'));\n },\n updateQuantity: function (e) {\n var currentQuantity = $(this).parent().find('#quantity').attr('value');\n var requiredQuantity = $(this).parent().find('#quantity').val();\n var MAXIMUM_ALLOWED_VALUE = $(this).attr('data-max-quote-items');\n if (Number(requiredQuantity) < 1 || Number(requiredQuantity) > Number(MAXIMUM_ALLOWED_VALUE)) {\n $(this).parent().find('.quantity_number.error').removeClass('d-none');\n } else {\n $(this).parent().find('.quantity_number.error').addClass('d-none');\n if (currentQuantity != requiredQuantity) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.buyingList.updateQuantity($(this).data('item-id'), currentQuantity, requiredQuantity);\n }\n }\n },\n};\ncommerce.BuyingItemWidget.prototype.reset = function () {\n Object.getPrototypeOf(commerce.BuyingItemWidget.prototype).reset.call(this);\n this.find(\"input[name='discount']\").removeClass('errorMsg');\n this.find('.promoCodeMsg .errorMsg').hide();\n this.find('.promoCodeMsg .infoMsg').hide();\n};\ncommerce.BuyingItemWidget.infoHandlers = {\n discountError: function (message, widget) {\n widget.find('.promoCodeMsg .infoMsg').hide();\n widget.find(\"input[name='discount']\").addClass('errorMsg');\n var $error = widget.find('.promoCodeMsg .errorMsg');\n $error.html(message);\n $error.show();\n },\n discountInfo: function (message, widget) {\n widget.find('.promoCodeMsg .errorMsg').hide();\n widget.find(\"input[name='discount']\").removeClass('errorMsg');\n var $info = widget.find('.promoCodeMsg .infoMsg');\n $info.html(message);\n $info.show();\n },\n discount: function (message, widget) {\n $(widget.find(\"input[name='promoCode']\")).val(message);\n },\n savedItemError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n error: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n};\ncommerce.BuyingItemWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.BuyingItemWidget.prototype).registerListeners.call(this);\n var widget = this;\n var $applyButton = this.find('#applyDiscountForm input.applyDiscount');\n var $discountField = this.find(\"input[name='discount']\");\n $discountField.on('keyup', function () {\n if ($discountField.val()) {\n $applyButton.addClass('primary');\n $applyButton.prop('disabled', false);\n } else {\n $applyButton.removeClass('primary');\n $applyButton.prop('disabled', true);\n widget.find('.promoCodeMsg .errorMsg').hide();\n widget.find(\"input[name='discount']\").removeClass('errorMsg');\n var $info = widget.find('.promoCodeMsg .infoMsg');\n $info.html(message);\n $info.show();\n }\n });\n};\ncommerce.BuyingItemWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.BuyingItemWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.BuyingItemWidget.id);\n};\nliteratum.widgets.register(commerce.BuyingItemWidget);\ncommerce.SavedItemsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.identity);\n};\ncommerce.SavedItemsWidget.prototype = new literatum.Widget();\ncommerce.SavedItemsWidget.id = 'eCommerceCheckoutSavedForLaterItemsWidget';\ncommerce.SavedItemsWidget.action = '/pb/widgets/commerce/savedItems';\ncommerce.SavedItemsWidget.notifications = {info: commerce.Notification};\ncommerce.SavedItemsWidget.binders = {\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n removeSavedItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.savedItems.remove($(this).data('item-id'));\n },\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e, widget) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n};\ncommerce.SavedItemsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.SavedItemsWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend click', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.SavedItemsWidget.infoHandlers = {\n savedItemError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n};\ncommerce.SavedItemsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.SavedItemsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.SavedItemsWidget.id);\n};\nliteratum.widgets.register(commerce.SavedItemsWidget);\ncommerce.RecommendedWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.RecommendedWidget.prototype = new literatum.Widget();\ncommerce.RecommendedWidget.id = 'eCommerceCheckoutRecommendedItemsWidget';\ncommerce.RecommendedWidget.action = '/pb/widgets/commerce/recommended';\ncommerce.RecommendedWidget.binders = {\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n saveItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n};\ncommerce.RecommendedWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecommendedWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend click', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.journal-options-expanded').hide();\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.RecommendedWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RecommendedWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RecommendedWidget.id);\n};\nliteratum.widgets.register(commerce.RecommendedWidget);\ncommerce.RecentlyViewedWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.RecentlyViewedWidget.prototype = new literatum.Widget();\ncommerce.RecentlyViewedWidget.id = 'eCommerceCheckoutRecentlyViewedItemsWidget';\ncommerce.RecentlyViewedWidget.action = '/pb/widgets/commerce/recentlyViewed';\ncommerce.RecentlyViewedWidget.binders = {\n expand: function (e) {\n e.preventDefault();\n $(this).closest('.add-to-cart').toggleClass('opened');\n var offerVisibility = $(this).next('.purchaseArea').is(':visible');\n $('.purchaseArea').slideUp();\n if (!offerVisibility) {\n $(this).next('.purchaseArea').slideToggle();\n var subject = $('.demo');\n if (e.target.id != subject.attr('id')) {\n subject.show();\n }\n }\n },\n addItem: function (e, widget) {\n if (!$(e.target).parents('.disable-click').length) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n }\n },\n saveItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var itemId = $(this).data('item-id');\n if (itemId) {\n commerce.cart.savedItems.saveById(itemId);\n } else {\n commerce.cart.savedItems.saveByDoi($(this).data('item-doi'));\n }\n },\n};\ncommerce.RecentlyViewedWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecentlyViewedWidget.prototype).registerListeners.call(this);\n if ($(window).width() >= 992) {\n $(document).on('touchend', function (e) {\n var container = $('.demoContainer');\n if (!$(e.target).closest('.superDemo').length) {\n $('.add-to-cart.opened').removeClass('opened');\n container.hide();\n container.find('.add-journal-to-cart').removeClass('disable-click');\n container.find('.add-journal-to-cart header').removeClass('open');\n container.find('.journal-options-expanded').hide();\n container.find('.add-journal-to-cart').css('margin-bottom', '10px');\n e.stopPropagation();\n }\n });\n }\n};\ncommerce.RecentlyViewedWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RecentlyViewedWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RecentlyViewedWidget.id);\n};\nliteratum.widgets.register(commerce.RecentlyViewedWidget);\ncommerce.OrderSummaryWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.tax);\n this.register(commerce.cart.summary);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.OrderSummaryWidget.prototype = new literatum.Widget();\ncommerce.OrderSummaryWidget.id = 'eCommerceCheckoutSummaryWidget';\ncommerce.OrderSummaryWidget.action = '/pb/widgets/commerce/orderSummary';\ncommerce.OrderSummaryWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.OrderSummaryWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.OrderSummaryWidget.id);\n};\nliteratum.widgets.register(commerce.OrderSummaryWidget);\ncommerce.IdentityWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.IdentityWidget.prototype = new literatum.Widget();\ncommerce.IdentityWidget.id = 'eCommerceCheckoutIdentityWidget';\ncommerce.IdentityWidget.action = '/pb/widgets/commerce/identity';\ncommerce.IdentityWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.IdentityWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.IdentityWidget.id);\n};\ncommerce.IdentityWidget.notifications = {\n identity: commerce.Notification,\n email: commerce.FieldNotification,\n acceptTermsConditions: commerce.FieldNotification,\n};\ncommerce.IdentityWidget.binders = {\n guest: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n let acceptTermsConditions = widget.find('#acceptTermsConditions').is(':checked');\n let email = widget.find('#email').val();\n commerce.cart.identity.guest(email, acceptTermsConditions);\n },\n showUserLogin: function (e, widget) {\n e.preventDefault();\n var $loginForm = widget.find('.frmLogin');\n var email = widget.find(\"input[name='email']\").val();\n widget.find('.checkoutLogin').addClass('d-none');\n if ($loginForm.length > 0) {\n $loginForm.removeClass('d-none');\n if (email != undefined) {\n $loginForm.find(\"input[name='login']\").val(email).focus();\n }\n }\n },\n register: function (e, widget) {\n var email = widget.find(\"input[name='email']\").val();\n if (email) {\n e.preventDefault();\n window.location =\n '/action/registration?email=' +\n encodeURIComponent(email) +\n '&redirectUri=' +\n encodeURIComponent(location.href);\n }\n },\n cancelLogin: function (e, widget) {\n e.preventDefault();\n var notification = widget.getNotification('identity');\n if (notification) {\n notification.reset();\n }\n widget.find('.message.error').remove();\n widget.find('.checkoutLogin').removeClass('d-none');\n if (widget.find('.frmLogin').length > 0) {\n widget.find('.frmLogin').addClass('d-none');\n }\n },\n userLogin: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n },\n resetCart: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n};\ncommerce.IdentityWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.IdentityWidget.prototype).registerListeners.call(this);\n if (this.find('.frmLogin').length > 0) {\n var $loginInput = this.find('.frmLogin .login');\n var $passwordInput = this.find('.frmLogin .password');\n var $continueButton = this.find(\".frmLogin input[type='submit']\");\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n $loginInput.on('keyup', function () {\n if ($loginInput.val() && $passwordInput.val()) {\n $continueButton.addClass('primary');\n $continueButton.prop('disabled', false);\n } else {\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n }\n });\n $passwordInput.on('keyup', function () {\n if ($loginInput.val() && $passwordInput.val()) {\n $continueButton.addClass('primary');\n $continueButton.prop('disabled', false);\n } else {\n $continueButton.removeClass('primary');\n $continueButton.prop('disabled', true);\n }\n });\n }\n};\ncommerce.IdentityWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.IdentityWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.IdentityWidget.infoHandlers = {\n identityError: function (message, widget) {\n var notification = widget.getNotification('identity');\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n emailError: function (message, widget) {\n var notification = widget.getNotification('email');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n acceptTermsConditionsError: function (message, widget) {\n var notification = widget.getNotification('acceptTermsConditions');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n};\nliteratum.widgets.register(commerce.IdentityWidget);\ncommerce.ShippingWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.shipping);\n};\ncommerce.ShippingWidget.prototype = new literatum.Widget();\ncommerce.ShippingWidget.id = 'eCommerceCheckoutShippingWidget';\ncommerce.ShippingWidget.action = '/pb/widgets/commerce/shipping';\ncommerce.ShippingWidget.notifications = {\n info: commerce.Notification,\n givennames: commerce.FieldNotification,\n surname: commerce.FieldNotification,\n email: commerce.FieldNotification,\n phone: commerce.FieldNotification,\n organization: commerce.FieldNotification,\n address1: commerce.FieldNotification,\n address2: commerce.FieldNotification,\n city: commerce.FieldNotification,\n country: commerce.FieldNotification,\n state: commerce.FieldNotification,\n zipCode: commerce.FieldNotification,\n shippingCost: commerce.FieldNotification,\n};\ncommerce.ShippingWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.ShippingWidget.binders = {\n editShipping: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n loading.done();\n });\n },\n submitShipping: function (e, widget) {\n e.preventDefault();\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n commerce.cart.shipping.update(widget.find('form').serializeObject());\n },\n shippingOptions: function (e, widget) {\n e.preventDefault();\n var forms = widget.collectForms();\n commerce.cart.shipping.shippingOptions(forms.shipping.country, forms.shipping.state);\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n countryChanged: function (e, widget) {\n if (e.type === 'change') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var notification = widget.getNotification('shippingCost');\n if (notification) {\n notification.reset();\n }\n var $country = widget.find(\"select[name='country']\");\n var $state = widget.find('.state option:selected');\n var countryCode = $country.val();\n\n literatum.utils.getCountryState(countryCode, function (model) {\n let $states = widget.find('[data-notification=\"state\"]');\n let $input = $states.find('input');\n let $select = $states.find('.dropdown-menu');\n $input.val(null);\n $select[0].innerHTML = '';\n\n if (model.states.length > 0) {\n model.states.forEach(function (item) {\n $select.append(\n '' +\n item['description'] +\n ''\n );\n });\n $states.removeClass('d-none');\n } else {\n $states.addClass('d-none');\n }\n\n commerce.cart.shipping.getShippingCosts(countryCode, $select.val(), function (model) {\n if (model.shippingOptions.length != 1) {\n let $shippingOptions = widget.find('.shipping-cost-select');\n let $select = $shippingOptions.find('select');\n $select.find(\"option:not([value='-1'])\").remove();\n model.shippingOptions.forEach(function (item) {\n $select.append('');\n });\n if (model.error) {\n notification.reset();\n notification.error();\n notification.setMessage(model.error);\n notification.show();\n }\n widget.find('.shipping-cost-one input').prop('disabled', true);\n widget.find('.shipping-cost-select select').prop('disabled', false);\n widget.find('.shipping-cost-one').hide();\n widget.find('.shipping-cost-select').show();\n } else {\n widget.find('.shipping-cost-select select').prop('disabled', true);\n widget.find(\".shipping-cost-one input[name='shippingCost']\").prop('disabled', false);\n widget.find('.shipping-cost-select').hide();\n widget.find(\"input[name='shippingCost']\").val(model.shippingOptions[0].id);\n widget.find(\"input[name='shippingCostDescription']\").val(model.shippingOptions[0].description);\n widget.find('.shipping-cost-one').show();\n }\n loading.done();\n });\n });\n }\n },\n selectAddress: function (e, widget) {\n var addressUuid = $(this).val();\n if (e.type == 'change') {\n if (addressUuid != '-1') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {editing: true, uuid: addressUuid}, function () {\n var $country = widget.find(\"select[name='country']\");\n var $state = widget.find(\"select[name='state']\");\n if ($country.val() != '') {\n commerce.cart.shipping.getShippingCosts($country.val(), $state.val(), function (model) {\n if (model.shippingOptions.length != 1) {\n var $shippingOptions = widget.find('.shipping-cost-select');\n var $select = $shippingOptions.find('select');\n $select.find(\"option:not([value='-1'])\").remove();\n model.shippingOptions.forEach(function (item) {\n $select.append(\n ''\n );\n });\n if (model.error) {\n notification.reset();\n notification.error();\n notification.setMessage(model.error);\n notification.show();\n }\n widget.find('.shipping-cost-one input').prop('disabled', true);\n widget.find('.shipping-cost-select select').prop('disabled', false);\n widget.find('.shipping-cost-one').hide();\n widget.find('.shipping-cost-select').show();\n } else {\n widget.find('.shipping-cost-select select').prop('disabled', true);\n widget.find(\".shipping-cost-one input[name='shippingCost']\").prop('disabled', false);\n widget.find('.shipping-cost-select').hide();\n widget.find(\"input[name='shippingCost']\").val(model.shippingOptions[0].id);\n widget\n .find(\"input[name='shippingCostDescription']\")\n .val(model.shippingOptions[0].description);\n widget.find('.shipping-cost-one').show();\n }\n loading.done();\n });\n } else {\n loading.done();\n }\n });\n } else {\n widget.updateForm('shipping', {});\n }\n }\n },\n};\ncommerce.ShippingWidget.infoHandlers = {\n addressError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n literatum.utils.scroll('.errorMsgBox:visible', 0);\n },\n};\ncommerce.ShippingWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.ShippingWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.ShippingWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.ShippingWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.ShippingWidget.id);\n};\nliteratum.widgets.register(commerce.ShippingWidget);\ncommerce.TaxWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.tax);\n};\ncommerce.TaxWidget.prototype = new literatum.Widget();\ncommerce.TaxWidget.id = 'eCommerceCheckoutTaxWidget';\ncommerce.TaxWidget.action = '/pb/widgets/commerce/tax';\ncommerce.TaxWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.TaxWidget.binders = {\n updateTax: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n loading.done();\n });\n },\n tax: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.tax.update($('form.tax').serializeObject());\n },\n};\ncommerce.TaxWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.TaxWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.TaxWidget.id);\n};\nliteratum.widgets.register(commerce.TaxWidget);\ncommerce.BillingWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n};\ncommerce.BillingWidget.prototype = new literatum.Widget();\ncommerce.BillingWidget.id = 'eCommerceCheckoutBillingWidget';\ncommerce.BillingWidget.action = '/pb/widgets/commerce/billing';\ncommerce.BillingWidget.notifications = {\n info: commerce.Notification,\n givennames: commerce.FieldNotification,\n surname: commerce.FieldNotification,\n email: commerce.FieldNotification,\n phone: commerce.FieldNotification,\n organization: commerce.FieldNotification,\n address1: commerce.FieldNotification,\n address2: commerce.FieldNotification,\n city: commerce.FieldNotification,\n country: commerce.FieldNotification,\n state: commerce.FieldNotification,\n zipCode: commerce.FieldNotification,\n};\ncommerce.BillingWidget.prototype.lostFocus = function () {\n if (this.find('form').length) {\n return literatum.widgets.render(this, {}, {});\n }\n};\ncommerce.BillingWidget.binders = {\n submitBilling: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(literatum.utils.nextCheckoutSection);\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.billing.update($(\"form[name='billing']\").serializeObject());\n },\n editBilling: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var d = literatum.widgets.render(widget, {}, {editing: true});\n literatum.widgets.all().forEach(function (item) {\n if (widget.widgetDef.id != item.widgetDef.id) {\n d = d.then(item.lostFocus());\n }\n });\n d.then(function () {\n literatum.utils.nextCheckoutSection();\n $(`.${commerce.PaymentWidget.id}`).hide();\n loading.done();\n var countryCode = $('#country').val();\n if (countryCode == 'US') {\n widget.find('.zipcode label').text(widget.find('.zipcode-text').text());\n } else {\n widget.find('.zipcode label').text(widget.find('.postcode-text').text());\n }\n });\n },\n sameAsShipping: function (e, widget) {\n if ($(this).is(':checked')) {\n var shippingWidgets = literatum.widgets.get('eCommerceCheckoutShippingWidget');\n var shippingWidget = shippingWidgets[0];\n if (shippingWidget) {\n var forms = shippingWidget.collectForms();\n widget.updateForm('billing', forms['shipping'], true);\n widget.find(\"select[name='country']\").change();\n }\n var identityWidgets = literatum.widgets.get('eCommerceCheckoutIdentityWidget');\n var identityWidget = identityWidgets[0];\n if (identityWidget) {\n var forms = identityWidget.collectForms();\n widget.updateForm('billing', forms['personal-info'], true);\n }\n } else {\n literatum.utils.clearForm('billing', {});\n }\n },\n placeOrder: function (e, widget) {\n if (!commerce.validators.validate(widget.find(\"form[name='apg']\"))) {\n e.preventDefault();\n }\n },\n expand: function (e, widget) {\n widget.find('.checkout-expand').slideToggle();\n },\n countryChanged: function (e, widget) {\n if (e.type == 'change') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n var countryCode = $(this).val();\n if (countryCode == 'US') {\n widget.find('.zipcode label').text(widget.find('.zipcode-text').text());\n } else {\n widget.find('.zipcode label').text(widget.find('.postcode-text').text());\n }\n literatum.utils.getCountryState(countryCode, function (model) {\n let $states = widget.find('[data-notification=\"state\"]');\n let $toggle = $states.find('.dropdown-toggle');\n let $input = $states.find('input');\n let $select = $states.find('.dropdown-menu');\n\n if (e.type == 'change') {\n $input.val(null);\n $select[0].innerHTML = '';\n $toggle.text('Select your state');\n }\n\n let shippingWidget;\n let shippingForm;\n if (literatum.widgets.get('eCommerceCheckoutShippingWidget').length !== 0) {\n shippingWidget = literatum.widgets.get('eCommerceCheckoutShippingWidget');\n shippingForm = shippingWidget[0].collectForms()['shipping'];\n } else {\n shippingForm = '';\n }\n let state = '';\n if (shippingForm !== undefined) {\n state = shippingForm['state'];\n }\n\n if (model.states.length > 0) {\n model.states.forEach(function (item) {\n $select.append(\n '' +\n item['description'] +\n ''\n );\n });\n $states.removeClass('d-none');\n } else {\n $states.addClass('d-none');\n }\n loading.done();\n });\n }\n },\n selectAddress: function (e, widget) {\n var addressUuid = $(this).val();\n if (e.type == 'change') {\n if (addressUuid != '-1') {\n var loading = new literatum.FullPageLoading();\n loading.start();\n widget.render({}, {editing: true, uuid: addressUuid}, function () {\n loading.done();\n });\n } else {\n widget.updateForm('billing', {});\n }\n }\n },\n};\ncommerce.BillingWidget.infoHandlers = {\n addressError: function (message, widget) {\n var notification = widget.getNotification('info');\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n literatum.utils.scroll('.errorMsgBox:visible', 0);\n },\n};\ncommerce.BillingWidget.prototype.triggerInfoHandlers = function (widget, model) {\n Object.getPrototypeOf(commerce.BillingWidget.prototype).triggerInfoHandlers.call(this, widget, model);\n widget.find('input,select').each(function () {\n var $this = $(this);\n var name = $this.attr('name');\n var errorName = name + 'Error';\n var notification = widget.getNotification(name);\n if (notification) {\n notification.reset();\n if (model && model.attributes && model.attributes[errorName]) {\n notification.error();\n notification.setMessage(model.attributes[errorName]);\n notification.show();\n }\n }\n });\n};\ncommerce.BillingWidget.prototype.validateForm = function (cartInfo) {};\ncommerce.BillingWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.BillingWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.BillingWidget.id);\n};\nliteratum.widgets.register(commerce.BillingWidget);\ncommerce.PaymentWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.tax);\n var $error = this.find('.errorMsgBox').not('.d-none');\n if ($error.length == 0) {\n $error = this.find('.label.error');\n }\n if ($error.length > 0) {\n commerce.page.cart.show();\n literatum.utils.scroll($error, 800, 100);\n }\n};\ncommerce.PaymentWidget.prototype = new literatum.Widget();\ncommerce.PaymentWidget.id = 'eCommerceCheckoutPaymentWidget';\ncommerce.PaymentWidget.action = '/pb/widgets/commerce/payment';\ncommerce.PaymentWidget.notifications = {\n holderName: commerce.FieldNotification,\n realNumber: commerce.FieldNotification,\n creditcardDate: commerce.FieldNotification,\n secNumber: commerce.FieldNotification,\n};\ncommerce.PaymentWidget.binders = {\n expandPayment: function (e, widget) {\n e.preventDefault();\n widget.find('.payment').slideToggle();\n },\n placeOrder: function (e, widget) {\n var $form = widget.find(\"form[name='apg']\");\n var valid = true;\n $form.find('input[data-validate],select[data-validate]').each(function () {\n var $this = $(this);\n var $group = $this.closest('.input-group');\n var invalid = commerce.validators.validateField($this, $form);\n var fieldsValidation = [];\n fieldsValidation.push(invalid);\n var notification = widget.getNotification($group.data('notification'));\n if (!notification) {\n return;\n }\n if (invalid) {\n notification.reset();\n notification.setMessage('');\n notification.error();\n notification.show();\n } else {\n notification.reset();\n }\n valid = !invalid && valid;\n if (!valid || fieldsValidation.includes(true)) {\n var loading = new literatum.FullPageLoading();\n loading.done();\n e.preventDefault();\n } else {\n var loading = new literatum.FullPageLoading();\n loading.setMessage('Do not close your browser while we are processing your payment');\n loading.start();\n }\n });\n },\n expand: function (e, widget) {\n var $header = widget.find('.checkout-expand');\n $header.stop(true, true);\n $header.slideToggle();\n },\n};\ncommerce.PaymentWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.PaymentWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.PaymentWidget.id);\n};\ncommerce.PaymentWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.PaymentWidget.prototype).registerListeners.call(this);\n var widget = this;\n var $date = $(this.find(\"input[name='expireDate']\"));\n $date.on('keyup', function (e) {\n var thisVal = $(this).val();\n if (thisVal.length == 0) $(this).closest('.input-group').removeClass('focused');\n else $(this).closest('.input-group').addClass('focused');\n var numChars = $(this).val().length;\n if (numChars === 2) {\n if (thisVal > 12) {\n thisVal = 12;\n }\n if (!/\\//.test(thisVal)) {\n thisVal += '/';\n }\n $(this).val(thisVal);\n }\n if (e.which == 8 && numChars === 2) {\n thisVal = thisVal.substring(0, thisVal.length - 2);\n $(this).val(thisVal);\n }\n });\n $date.on('blur', function () {\n var dateValue = $date.val().split('/');\n var numChars = $date.val().length;\n var thisVal = $date.val();\n if (this.value) {\n $(widget.find(\"input[name='expYear']\")).val(dateValue[1]);\n $(widget.find(\"input[name='expMonth']\")).val(dateValue[0]);\n } else {\n $(widget.find(\"input[name='expYear']\")).val('');\n $(widget.find(\"input[name='expMonth']\")).val('');\n }\n if (numChars > 6) {\n var currentDate = new Date();\n var currentYear = currentDate.getFullYear();\n var value = thisVal.split('/');\n var yearExpiry = value[1];\n var expireYear = parseInt(yearExpiry);\n }\n });\n $(this.find('#realNumber')).on('blur', function (e) {\n var $value = $('#realNumber').val();\n var $cElement = $('#realNumber');\n var creditCard = commerce.validators.creditcard($value, $cElement);\n });\n $(this.find('.creditCarPayment .actions .primary')).on('click', function (e) {\n var $form = widget.find(\"form[name='apg']\");\n var $this = $('input[data-validate]');\n var $group = $this.closest('.input-group');\n var invalid = commerce.validators.validateField($this, $form);\n var notification = widget.getNotification($group.data('notification'));\n var $message = [];\n if ($('#expYear').val() == '0000') {\n $message.push('year ');\n }\n if ($('#expMonth').val() == '00') {\n $message.push(' month');\n }\n if ($('#expMonth').val() == '00' && $('#expYear').val() == '0000') {\n $message = $message.join('and');\n }\n if ($('#expMonth').val() != '00' && $('#expYear').val() != '0000') {\n $message.push('a valid date');\n }\n if (!notification) {\n return;\n }\n if (invalid) {\n notification.reset();\n notification.setMessage('');\n notification.error();\n notification.show();\n } else {\n notification.reset();\n }\n var inputContainer = $('.creditCarPayment .input-group');\n inputContainer.each(function () {\n var $cont = $(this);\n var $contError = $(this).find('.error');\n if ($contError.length > 0) {\n if ($contError.find('.invalid-cc').length === 0 && !$cont.hasClass('credit-card-date-field')) {\n $contError.find('.field-info').after(\"
- IS MISSING
\");\n } else if ($cont.hasClass('credit-card-date-field')) {\n if ($contError.find('.invalid-cc').length === 0) {\n $contError\n .find('.field-info')\n .after(\"
Please enter \" + $message + '
');\n } else {\n $contError\n .find('.invalid-cc')\n .replaceWith(\"
Please enter \" + $message + '
');\n }\n }\n } else {\n $cont.find('.invalid-cc').remove();\n }\n });\n });\n if (commerce.PaymentWidget.registerAdditionalListeners) commerce.PaymentWidget.registerAdditionalListeners();\n};\nliteratum.widgets.register(commerce.PaymentWidget);\ncommerce.PaymentWidget.registerAdditionalListeners = function () {\n $(document).ready(function () {\n var $confirmOrderMsg = $('.eCommerceCheckoutPaymentWidget .infoMsgBox');\n if ($confirmOrderMsg.is(':visible')) {\n $confirmOrderMsg[0].scrollIntoView();\n }\n if (\n $('.checkout-expand > .errorMsgBox').length > 0 &&\n !$('.checkout-expand > .errorMsgBox').hasClass('d-none')\n ) {\n $('html, body').animate({scrollTop: $('.checkout-expand > .errorMsgBox').offset().top}, 1000);\n }\n });\n};\ncommerce.PurchaseOptionsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.buyingList);\n var $obj = this.find('.scroll-into-view').closest('.purchaseArea');\n if ($obj && $obj.length > 0) {\n literatum.utils.scroll($obj, 1000, 50);\n var $expandSection = this.find(\"*[data-bind='expandSection']\");\n if ($expandSection.length && !$expandSection.hasClass('active')) {\n $expandSection.click();\n }\n }\n};\ncommerce.PurchaseOptionsWidget.prototype = new literatum.Widget();\ncommerce.PurchaseOptionsWidget.id = 'eCommercePurchaseAccessWidget';\ncommerce.PurchaseOptionsWidget.action = '/pb/widgets/commerce/purchaseOptions';\ncommerce.PurchaseOptionsWidget.find = function () {\n var $result = $(\"*[widget-def='\" + commerce.PurchaseOptionsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.PurchaseOptionsWidget.id);\n};\ncommerce.PurchaseOptionsWidget.binders = {\n saveItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-doi');\n commerce.cart.savedItems.saveByDoi(key);\n },\n addItem: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n },\n expandSection: function (e, widget) {\n e.preventDefault();\n widget.find('.purchaseAreaList_expanded').slideUp();\n widget.find('.purchaseAreaList_expand').attr('aria-expanded', false);\n if ($(e.target).hasClass('active')) {\n $(e.target).removeClass('active');\n $(e.target).siblings('.purchaseAreaList_expanded').slideUp();\n $(e.target).attr('aria-expanded', false);\n } else {\n $(e.target).addClass('active');\n widget.find('.purchaseAreaList_expand').not($(e.target)).removeClass('active');\n $(e.target).siblings('.purchaseAreaList_expanded').slideDown();\n $(e.target).attr('aria-expanded', true);\n }\n },\n};\ncommerce.PurchaseOptionsWidget.prototype.update = function (model) {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n};\ncommerce.PurchaseOptionsWidget.infoHandlers = {\n info: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(widget.find(\".purchaseMessage[data-item='\" + key + \"'].info\"));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n notification.$element.siblings('a').find('.add-to-cart-msg').remove();\n setTimeout(function () {\n notification.$element.fadeOut();\n $(widget.find(\"*[data-entity='\" + key + \"']\"))\n .parent()\n .hide();\n $(widget.find(\".addedMessage[data-item='\" + key + \"']\"))\n .removeClass('d-none')\n .addClass('d-flex');\n }, 2000);\n }\n },\n error: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(widget.find(\".purchaseMessage[data-item='\" + key + \"']\"));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n $(widget.find(\"*[data-entity='\" + key + \"']\")).hide();\n },\n savedItemInfo: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n }\n $(widget.find('.save-for-later-link')).hide();\n $(widget.find('.saved-go-cart')).toggleClass('d-none');\n },\n savedItemError: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n nextAction: function (message) {\n if (message == 'refreshPage') {\n setTimeout(function () {\n location.reload();\n }, 5000);\n }\n },\n};\nliteratum.widgets.register(commerce.PurchaseOptionsWidget);\ncommerce.CartIndicatorWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register('quantityIncreased');\n this.register('quantityDecreased');\n this.register('updateQuantity');\n};\ncommerce.CartIndicatorWidget.prototype = new literatum.Widget();\ncommerce.CartIndicatorWidget.id = 'eCommerceCartIndicatorWidget';\ncommerce.CartIndicatorWidget.action = null;\ncommerce.CartIndicatorWidget.prototype.update = function (model) {\n var $cartSize = this.find(\"*[data-id='cart-size']\");\n if (model.size == 0) {\n $cartSize.addClass();\n $cartSize.html(model.size);\n } else {\n $cartSize.removeClass('d-none');\n $cartSize.html(model.size);\n }\n};\ncommerce.CartIndicatorWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.CartIndicatorWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.CartIndicatorWidget.id);\n};\nliteratum.widgets.register(commerce.CartIndicatorWidget);\n\ncommerce.AddToCartWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.buyingList);\n};\ncommerce.AddToCartWidget.prototype = new literatum.Widget();\ncommerce.AddToCartWidget.id = 'eCommerceCheckoutAddToCartWidget';\ncommerce.AddToCartWidget.action = '/pb/widgets/commerce/addToCart';\ncommerce.AddToCartWidget.binders = {\n expand: function (e, widget) {\n e.preventDefault();\n if (widget.find('.add-journal-to-cart-container').length > 0) {\n var addToCart = document.createElement('div');\n $(addToCart).addClass('eCommerceCheckoutAddToCartWidgetExpanded');\n $(addToCart).appendTo('body');\n $('body').css('overflow', 'hidden');\n widget\n .find('.add-journal-to-cart-container')\n .clone()\n .prepend('')\n .appendTo(addToCart)\n .slideToggle()\n .find('a')\n .first()\n .focus();\n var overlay = document.createElement('div');\n $(overlay).addClass('overlay-fixed');\n $(overlay).appendTo('.eCommerceCheckoutAddToCartWidgetExpanded');\n $(overlay).find('a').first().focus();\n }\n widget.registerListeners();\n },\n addItem: function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n },\n};\ncommerce.AddToCartWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.AddToCartWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.AddToCartWidget.id);\n};\ncommerce.AddToCartWidget.infoHandlers = {\n info: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(\n $(\".eCommerceCheckoutAddToCartWidgetExpanded .purchaseMessage[data-item='\" + key + \"'].info\")\n );\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n notification.$element.siblings('a').find('.add-to-cart-msg').remove();\n setTimeout(function () {\n notification.$element.fadeOut();\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-entity='\" + key + \"']\").hide();\n commerce.Notification.get(\".addedMessage[data-item='\" + key + \"']\").showFlex();\n }, 1000);\n }\n },\n error: function (message, widget, model) {\n var key = model.attributes['itemAdded'];\n var notification = commerce.Notification.get(\n $(\".eCommerceCheckoutAddToCartWidgetExpanded .purchaseMessage[data-item='\" + key + \"'].error\")\n );\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-entity='\" + key + \"']\").hide();\n },\n savedItemInfo: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n }\n $('.eCommerceCheckoutAddToCartWidgetExpanded .save-for-later-link').hide();\n },\n savedItemError: function (message, widget) {\n var notification = commerce.Notification.get(widget.find('.savedItem-info'));\n if (notification) {\n notification.setMessage(message);\n notification.error();\n notification.show();\n }\n },\n nextAction: function (message) {\n if (message == 'refreshPage') {\n setTimeout(function () {\n location.reload();\n }, 5000);\n }\n },\n};\ncommerce.AddToCartWidget.prototype.render = function (model, params) {\n params['doi'] = this.find('a[data-doi]').attr('data-doi');\n Object.getPrototypeOf(commerce.AddToCartWidget.prototype).render.call(this, model, params);\n};\ncommerce.AddToCartWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.AddToCartWidget.prototype).registerListeners.call(this);\n $(document).on('click', function (event) {\n if (\n !$(event.target).closest('.eCommerceCheckoutAddToCartWidgetExpanded').length &&\n !$(event.target).closest('.eCommerceCheckoutAddToCartWidget').length &&\n $('.eCommerceCheckoutAddToCartWidgetExpanded').is(':visible')\n ) {\n event.preventDefault();\n $('.eCommerceCheckoutAddToCartWidgetExpanded').remove();\n $('body').css('overflow', 'auto');\n }\n });\n $(document).on('click', '.eCommerceCheckoutAddToCartWidgetExpanded .close', function () {\n $('.eCommerceCheckoutAddToCartWidgetExpanded').remove();\n $('body').css('overflow', 'auto');\n });\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-bind='addItem']\").off();\n $(\".eCommerceCheckoutAddToCartWidgetExpanded *[data-bind='addItem']\").click(function (e) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n var key = $(this).attr('data-key');\n commerce.cart.buyingList.addItem(key);\n });\n};\nliteratum.widgets.register(commerce.AddToCartWidget);\n\ncommerce.CartInfoWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n this.register(commerce.cart.discounts);\n this.register(commerce.cart.buyingList);\n this.register(commerce.cart.savedItems);\n this.register(commerce.cart.billing);\n this.register(commerce.cart.shipping);\n};\ncommerce.CartInfoWidget.prototype = new literatum.Widget();\ncommerce.CartInfoWidget.id = 'eCommerceCartInfoWidget';\ncommerce.CartInfoWidget.action = null;\ncommerce.CartInfoWidget.prototype.update = function () {\n var notification = commerce.Notification.get(this.find('.cartInfo'));\n if (notification) {\n notification.reset();\n }\n};\ncommerce.CartInfoWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.CartInfoWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.CartInfoWidget.id);\n};\nliteratum.widgets.register(commerce.CartInfoWidget);\ncommerce.IdentityBarWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.identity);\n};\ncommerce.IdentityBarWidget.prototype = new literatum.Widget();\ncommerce.IdentityBarWidget.id = 'literatumNavigationLoginBar';\ncommerce.IdentityBarWidget.action = '/pb/widgets/commerce/identityBar';\ncommerce.IdentityBarWidget.binders = {\n expand: function (e, widget) {\n widget.find('.navigation-login-dropdown-container').toggle();\n },\n};\ncommerce.IdentityBarWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.IdentityBarWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.IdentityBarWidget.id);\n};\ncommerce.IdentityBarWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(commerce.RecommendedWidget.prototype).registerListeners.call(this);\n var $popups = $('.popup');\n var $popup = $('.login-popup');\n $('.show-login').off();\n $('.show-login').click(function (event) {\n if ($popups.length) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $('body').addClass('noscroll');\n $('.login-form form .login').focus();\n event.preventDefault();\n }\n });\n};\nliteratum.widgets.register(commerce.IdentityBarWidget);\ncommerce.RestoreAccessWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n this.register(commerce.cart.restoreAccess);\n};\ncommerce.RestoreAccessWidget.prototype = new literatum.Widget();\ncommerce.RestoreAccessWidget.id = 'eCommerceRestoreContentAccessWidget';\ncommerce.RestoreAccessWidget.action = '/pb/widgets/commerce/restoreAccess';\ncommerce.RestoreAccessWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RestoreAccessWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RestoreAccessWidget.id);\n};\ncommerce.RestoreAccessWidget.binders = {\n request: function (e, widget) {\n var loading = new literatum.FullPageLoading();\n loading.start();\n commerce.cart.addCallback(loading.done);\n e.preventDefault();\n commerce.cart.restoreAccess.request(widget.find(\"input[name='email']\").val());\n },\n};\ncommerce.RestoreAccessWidget.prototype.update = function (model) {\n this.triggerInfoHandlers(this, model);\n this.loaded();\n};\ncommerce.RestoreAccessWidget.infoHandlers = {\n restoreError: function (message, widget) {\n widget.find('.restore-info').hide();\n widget.find('.restore-error').hide();\n var notification = commerce.Notification.get(widget.find('.restore-error'));\n notification.setMessage(message);\n notification.error();\n notification.show();\n },\n error: function (message, widget) {\n widget.find('.restore-info').hide();\n var $inputGroup = widget.find(\"input[name='email']\").closest('.input-group');\n var notification = commerce.FieldNotification.get($inputGroup);\n if (notification) {\n notification.error();\n notification.setMessage(message);\n notification.show();\n }\n },\n info: function (message, widget) {\n widget.find('.restore-error').hide();\n var $inputGroup = widget.find(\"input[name='email']\").closest('.input-group');\n var notification = commerce.Notification.get(widget.find('.restore-info'));\n var fieldNotification = commerce.FieldNotification.get($inputGroup);\n if (fieldNotification) {\n fieldNotification.reset();\n fieldNotification.hide();\n }\n if (notification) {\n notification.setMessage(message);\n notification.info();\n notification.show();\n }\n },\n};\nliteratum.widgets.register(commerce.RestoreAccessWidget);\ncommerce.page.cart.checkoutButton = function (data) {\n var $leftCol = $('.checkoutProcessLeftCol');\n if (data.size > 0) {\n $leftCol.addClass('no-buying');\n } else {\n $leftCol.removeClass('no-buying');\n }\n // if (data.size > 0 && $(window).width() < 993 && $('.checkoutStickyBtn').length == 0 && $leftCol.length) {\n // $leftCol.append('
');\n // }\n // if (!data.size || $(window).width() >= 993) {\n // $('.checkoutStickyBtn').remove();\n // }\n};\ncommerce.cart.register(commerce.cart.buyingList, commerce.page.cart.checkoutButton);\ncommerce.cart.register(commerce.cart.savedItems, commerce.page.cart.checkoutButton);\n$(document).ready(function () {\n var checkout = location.hash.indexOf('checkout') > -1 || location.href.indexOf('checkout') > -1;\n if (checkout && $('.shopping-cart-indicator__badge').html() > 0) {\n commerce.page.cart.show();\n }\n if (checkout) {\n literatum.utils.nextCheckoutSection();\n }\n if (commerce.page.cart.checkoutButton !== undefined)\n commerce.page.cart.checkoutButton({size: $('.shopping-cart-indicator__badge').html()});\n $(document).on('click', '.add-journal-to-cart .prevent-fix, .add-journal-to-cart .tab-nav a', function (e) {\n if ($(this).parent().hasClass('disable-click')) {\n return false;\n } else {\n $(this).next('.journal-options-expanded').slideToggle();\n $(this).toggleClass('open');\n setTimeout(function () {\n $(\n '.eCommerceCheckoutSavedForLaterItemsWidget .journal-options-expanded,.eCommerceCheckoutRecommendedItemsWidget .journal-options-expanded,.eCommerceCheckoutRecentlyViewedItemsWidget .journal-options-expanded'\n ).each(function () {\n var expandedMargin = $(this).height() + 21;\n if (expandedMargin > 25 && $(this).is(':visible')) {\n $(this).closest('.add-journal-to-cart').css('margin-bottom', expandedMargin);\n } else {\n $(this).closest('.add-journal-to-cart').css('margin-bottom', '10px');\n }\n });\n }, 400);\n if (\n $(this).closest('.purchaseArea').css('position') == 'absolute' &&\n !$(e.target).closest('.tab-nav').length\n ) {\n $('.add-journal-to-cart').toggleClass('disable-click');\n $(this).closest('.add-journal-to-cart').toggleClass('disable-click');\n }\n }\n return false;\n });\n verifyAddress();\n});\n$(document).ajaxComplete(function () {\n verifyAddress();\n});\n\nfunction verifyAddress() {\n $('form').on('focusout blur', '.js__verifyAddress input', function (e) {\n var pattern1 = new RegExp('^p.*o.*box.*', 'i');\n var pattern2 = new RegExp('^po box[^a-z 0-9]+', 'i');\n var pattern3 = new RegExp('^po[^a-z ]+box', 'i');\n var pattern4 = new RegExp('^po[^a-z 0-9]+ box', 'i');\n var pattern5 = new RegExp('^po [^a-z 0-9]+box', 'i');\n if ($(this).val().match(pattern1)) {\n if (\n $(this).val().match(pattern2) ||\n $(this).val().match(pattern3) ||\n $(this).val().match(pattern4) ||\n $(this).val().match(pattern5)\n ) {\n $(this).addClass('error');\n if ($(this).siblings('.errorMsg').length == 0)\n $(this).after(\"PO BOX addresses should start with 'PO BOX'\");\n } else {\n $(this).removeClass('error');\n $(this).siblings('.errorMsg').remove();\n }\n } else {\n $(this).removeClass('error');\n $(this).siblings('.errorMsg').remove();\n }\n });\n}\n\nif (commerce.page.cart.checkoutButton !== undefined) {\n $(window).resize(function () {\n commerce.page.cart.checkoutButton({size: $('.shopping-cart-indicator__badge').html()});\n });\n}\nliteratum.events.register('user-action', function () {\n literatum.widgets.all().forEach(function (item) {\n item.reset();\n });\n});\nliteratum.events.register('widget-rendered', function () {\n var $document = $(document);\n if (typeof $document.Tabs != 'undefined') {\n $(document).Tabs();\n }\n});\ncommerce.cart.setErrorHandler(function () {\n location.reload();\n});\n\n$(document).ready(function () {\n $('.commerceExplainer .header').click(function () {\n var $header = $(this);\n var $content = $header.next();\n $content.slideToggle(function () {\n if ($('li', $content).length == 0) return;\n if ($content.is(':visible')) {\n $header.removeClass('collapsed');\n $header.addClass('expanded');\n } else {\n $header.removeClass('expanded');\n $header.addClass('collapsed');\n }\n });\n });\n $('.commerceExplainer .content').each(function (index, element) {\n if ($('li', element).length == 0) {\n $(element).closest('.container').children('.header').addClass('empty expanded');\n }\n });\n});\ncommerce.RedeemAllowanceWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\ncommerce.RedeemAllowanceWidget.prototype = new literatum.Widget();\ncommerce.RedeemAllowanceWidget.id = 'eCommerceRedeemOfferWidget';\ncommerce.RedeemAllowanceWidget.action = '/pb/widgets/commerce/redeemAllowance';\ncommerce.RedeemAllowanceWidget.binders = {\n expand: function (e, widget) {\n e.preventDefault();\n widget.find('.expand-purchase-options').toggleClass('expanded');\n widget.find('.add-allowance').slideToggle();\n },\n};\ncommerce.RedeemAllowanceWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + commerce.RedeemAllowanceWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + commerce.RedeemAllowanceWidget.id);\n};\nliteratum.widgets.register(commerce.RedeemAllowanceWidget);\nvar functions = {};\n$(function () {\n var lower = /[a-z]/;\n var upper = /[A-Z]/;\n var special = /[!@#\\$%\\^\\&*\\)\\(+=._-]/;\n var numeric = /[0-9]/;\n functions.getBaseScore = function (value) {\n var score = 0;\n if (lower.test(value)) {\n score++;\n }\n if (upper.test(value)) {\n score++;\n }\n if (special.test(value)) {\n score++;\n }\n if (numeric.test(value)) {\n score++;\n }\n if (score == 1) {\n score = 0;\n }\n return score;\n };\n functions.updateIndicator = function ($indicator, value, min, max, target) {\n var $lang_selector = $('.literatumLocaleChanger .language');\n var too__short = 'Too Short';\n var strong = 'Strong';\n var weak = 'Weak';\n var too__long = 'Too Long';\n if ($lang_selector != null) {\n if ($lang_selector.text() === 'ESP' || $lang_selector.text() === '') {\n too__short = 'Too Short';\n strong = 'Strong';\n weak = 'Weak';\n too__long = 'Too Long';\n } else {\n too__short = 'Muy corta';\n strong = 'Fuerte';\n weak = 'Débil';\n too__long = 'Muy larga';\n }\n }\n $indicator.removeClass('too-short too-long weak strong very-strong');\n var pass_selector = $('.pass-strength-popup');\n pass_selector.removeClass('too-short too-long weak strong very-strong');\n if (!value) {\n pass_selector.find('.strength').text(too__short).hide();\n pass_selector.find('.strength').text(too__long).hide();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n return;\n }\n var length = value.trim().length;\n if (length < min) {\n $indicator.addClass('too-short');\n pass_selector.addClass('too-short');\n pass_selector.find('.strength').text(too__short).show();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n return;\n }\n if (length > max) {\n $indicator.addClass('too-long');\n pass_selector.addClass('too-long');\n pass_selector.find('.strength').text(too__long).show();\n pass_selector.removeClass('weak');\n pass_selector.removeClass('strong');\n pass_selector.addClass('too-long');\n $('.pass-strength-popup').css('display', 'block');\n return;\n }\n var score = functions.getBaseScore(value, min, max);\n if (score != 0) {\n score += Math.floor((length - min) / 2);\n }\n var diff = score - target;\n if (diff < 0) {\n $indicator.addClass('weak');\n pass_selector.addClass('weak');\n pass_selector.removeClass('strong');\n pass_selector.find('.strength').text(weak).show();\n } else if (diff >= 0 && diff <= 2) {\n $indicator.addClass('strong');\n pass_selector.addClass('strong');\n pass_selector.removeClass('weak');\n pass_selector.find('.strength').text(strong).show();\n } else if (diff > 2) {\n $indicator.addClass('very-strong');\n pass_selector.removeClass('weak');\n pass_selector.addClass('strong');\n pass_selector.find('.strength').text(strong).show();\n }\n };\n $('.password-strength-indicator').each(function () {\n if (!$('.pass-hint').length) {\n var $indicator = $(this);\n var $group = $indicator.closest('.input-group');\n var $input = $group.find('input');\n var data = $indicator.data();\n var min = data.min;\n var max = data.max;\n var strength = data.strength;\n functions.updateIndicator($indicator, $input.val(), min, max, strength);\n $input.on('input change', function () {\n functions.updateIndicator($indicator, $input.val(), min, max, strength);\n });\n }\n });\n\n if ($('.checkoutDropZone').length > 0) {\n $('.item__removal__popup__text').addClass('item__removal__cart__text');\n $('.item__removal__cart__text').removeClass('item__removal__popup__text');\n if ($('.item__removal__cart__text').length > 0) {\n $('.item__removal__cart__text').clone().prependTo($('.checkoutDropZone').closest('.row').parent());\n $('.item__removal__cart__text').last().remove();\n }\n }\n setTimeout(function () {\n $('.item__removal__popup__text').fadeOut('slow');\n }, 4000);\n});\n$(document).ready(function () {\n $('.js__mail_verification_widget input').on('keyup', function () {\n if ($(this).val().trim().length > 0) {\n $(this).closest('form').find('.form-btn').addClass('blue-subb-btn');\n $(this).closest('form').find('.form-btn').prop('disabled', false);\n } else {\n $(this).closest('form').find('.form-btn').removeClass('blue-subb-btn');\n $(this).closest('form').find('.form-btn').prop('disabled', true);\n }\n });\n $('.raa-modal-dialog .raa-modal-dialog-cncl').on('click', function (e) {\n e.preventDefault();\n $(this).closest('.raa-modal-dialog').hide();\n });\n $('.raa-modal-dialog.enabled').show();\n var lower = /[a-z]/;\n var upper = /[A-Z]/;\n var special = /[!@#\\$%\\^\\&*\\)\\(+=._-]/;\n var numeric = /[0-9]/;\n\n function translate_msg(lang, pswd_l, pswd_r) {\n var message;\n if (lang === 'ESP' || lang === '') {\n if (pswd_r === 2 || pswd_r === 4 || pswd_r === 5) {\n message = 'Your password must have ' + pswd_l + ' characters or more:';\n } else {\n message =\n 'Your password must have ' +\n pswd_l +\n ' characters or more and contain ' +\n pswd_r +\n ' of the following:';\n }\n } else {\n if (pswd_r === 2 || pswd_r === 4 || pswd_r === 5) {\n message = 'Su contraseña debe tener: ' + pswd_l + ' caracteres o más:';\n } else {\n message =\n 'Su contraseña debe tener: ' +\n pswd_l +\n ' caracteres o más y debe cumplir ' +\n pswd_r +\n ' de los siguientes requisitos:';\n }\n }\n return message;\n }\n\n function strength_list(lang, pswd) {\n var list_items_strength;\n var strength;\n var separator = '';\n if (lang === 'ESP' || lang === '') {\n strength = 'Too short';\n if (pswd === 2) {\n separator = '
  • or an
  • ';\n } else {\n separator = 'an ';\n }\n list_items_strength =\n '' +\n strength +\n '';\n } else {\n strength = 'Muy corta';\n if (pswd === 2) {\n separator = '
  • o
  • ';\n } else {\n separator = '
  • , un
  • ';\n }\n list_items_strength =\n '' +\n strength +\n '';\n }\n return list_items_strength;\n }\n\n if ($('.pass-hint')) {\n $('.pass-hint')\n .on('keyup input focus change', function () {\n var pswd = $(this).val();\n var $indicator = $('.pass-hint').siblings('.password-strength-indicator');\n var pswd_req = $indicator.data('strength');\n var pswd_length = $indicator.data('min');\n var pswd_max = $indicator.data('max');\n var $lang_selector = $('.literatumLocaleChanger .language');\n if (!pswd_req) {\n pswd_req = 3;\n }\n var validator =\n '
    ' +\n '

    ' +\n translate_msg($lang_selector.text(), pswd_length, pswd_req) +\n '

    ' +\n strength_list($lang_selector.text(), pswd_req) +\n '
    ';\n if (!$('.js__pswd_info').length) {\n $(this).closest('.input-group').append(validator);\n }\n functions.updateIndicator($indicator, pswd, pswd_length, pswd_max, pswd_req);\n if (pswd.match(lower)) {\n $('#letter').addClass('valid');\n } else {\n $('#letter').removeClass('valid');\n }\n if (pswd.match(upper)) {\n $('#capital').addClass('valid');\n } else {\n $('#capital').removeClass('valid');\n }\n if (pswd.match(special)) {\n $('#special').addClass('valid');\n } else {\n $('#special').removeClass('valid');\n }\n if (pswd.match(numeric)) {\n $('#number').addClass('valid');\n } else {\n $('#number').removeClass('valid');\n }\n if (\n $('.js__pswd_info').length &&\n $('.js__pswd_info .valid').length >= pswd_req &&\n pswd.length <= pswd_max &&\n pswd.length >= pswd_length\n )\n $('.js__pswd_info').fadeOut('slow');\n else $('.js__pswd_info').fadeIn('slow');\n })\n .blur(function () {\n $('.js__pswd_info').fadeOut('fast');\n });\n }\n var $drawer = $('.emails-wrappers,.phones-wrappers');\n $drawer.on('click', '.make-primary,.remove', function (e) {\n $(\".js__profileForm input[type='submit']\").prop('disabled', false);\n e.preventDefault();\n });\n $(document).on('keypress change', '.js__profileForm input, .js__profileForm select', function (e) {\n if ($(this).val()) {\n $(\".js__profileForm input[type='submit']\").prop('disabled', false);\n } else {\n $(\".js__profileForm input[type='submit']\").prop('disabled', true);\n }\n });\n\n function guestEmail(email) {\n var emailForm = /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\n return emailForm.test(email);\n }\n\n $('#email').on('keyup change', function () {\n if (guestEmail($('#email').val()) && $('#taggedNoGuest').val() == 'true') {\n $('.checkoutMethod input.primary').removeAttr('disabled');\n } else {\n $('.checkoutMethod input.primary').attr('disabled', 'true');\n }\n });\n});\n(function ($) {\n function visible(element) {\n return (\n $.expr.filters.visible(element) &&\n !$(element)\n .parents()\n .addBack()\n .filter(function () {\n return $.css(this, 'visibility') === 'hidden';\n }).length\n );\n }\n\n function focusable(element, isTabIndexNotNaN) {\n var map,\n mapName,\n img,\n nodeName = element.nodeName.toLowerCase();\n if ('area' === nodeName) {\n map = element.parentNode;\n mapName = map.name;\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n return false;\n }\n img = $('img[usemap=#' + mapName + ']')[0];\n return !!img && visible(img);\n }\n return (\n (/input|select|textarea|button|object/.test(nodeName)\n ? !element.disabled\n : 'a' === nodeName\n ? element.href || isTabIndexNotNaN\n : isTabIndexNotNaN) && visible(element)\n );\n }\n\n $.extend($.expr[':'], {\n focusable: function (element) {\n return focusable(element, !isNaN($.attr(element, 'tabindex')));\n },\n });\n})(jQuery);\n\n$(function () {\n var $confirmation = $('.registration-confirmation');\n $confirmation.on('click', '.resend', function () {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n })\n .then(function () {\n $confirmation.html('A link has been resent to your email');\n })\n .fail(function () {\n $confirmation.html('An error has occurred');\n });\n });\n var $popup = $('.societyID-popup');\n $popup.delay(5000).hide(0);\n $popup.on('click', '.close', function () {\n $popup.addClass('d-none');\n });\n});\n\n$(function () {\n $('.login-form').each(function () {\n var $form = $(this);\n var $login = $form.find('.login');\n var $pass = $form.find('.password');\n var $submit = $form.find('.submit');\n $form.on('click', '.resend', function (event) {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n })\n .then(function () {\n $form.find('.message').html('A link has been resent to your email');\n })\n .fail(function () {\n $form.find('.message').html('An error has occurred');\n });\n });\n var change = function () {\n if (!$login.val() || !$pass.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $login.on('keyup input', change);\n $pass.on('keyup input', change);\n change();\n });\n});\n$(function () {\n $('.request-username-form').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $email.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n$(function () {\n var $popups = $('.popup');\n var $popup = $('.login-popup');\n var $login = $popup.find('.login');\n var $password = $popup.find('.password');\n var $eye = $popup.find('.password-eye-icon');\n var $remember = $popup.find('.remember .cmn-toggle');\n var $message = $popup.find('.message');\n var $submit = $popup.find('.submit');\n var items = $popup.find('a, button, input');\n var lastItem,\n revers = false,\n tabKey = 9,\n shift = 16,\n $close = $popup.find('.close');\n items.each(function (index) {\n if (index === items.length - 1) {\n lastItem = $(this);\n }\n });\n $popup.on('keydown', function (e) {\n if (e.keyCode === shift) {\n revers = true;\n }\n if ((e.keyCode || e.which) === tabKey) {\n if (!revers) {\n tabEvent();\n } else {\n tabRevers();\n }\n }\n });\n $('.show-login:not(.userLoginBar__controller)').click(function (event) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $('body').addClass('noscroll');\n event.preventDefault();\n });\n $('.redicrect__close').click(function () {\n $('.redirect__modal .close').click();\n });\n $popup.on('click', '.close', function (e) {\n e.preventDefault();\n $('body').removeClass('noscroll');\n $popup.addClass('d-none');\n $eye.addClass('d-none icon-eye').removeClass('icon-eye-off');\n $submit.attr('disabled', true);\n $remember.attr('checked', false);\n $login.val('');\n $password.val('');\n $message.html('');\n });\n $(document).on('keyup', $popup, function (e) {\n if (e.keyCode == 27) {\n $popup.find('.close').trigger('click');\n }\n if (e.keyCode === shift) {\n revers = false;\n }\n });\n\n function tabEvent() {\n $close.off();\n lastItem.on('focusout', function () {\n $close.focus();\n });\n }\n\n function tabRevers() {\n lastItem.off();\n $close.on('focusout', function () {\n lastItem.focus();\n });\n }\n});\n// $(function () {\n// jcf.setOptions('Select', {\"wrapNativeOnMobile\": false});\n// jcf.replace('.literatumProfileMainWidget .select select:not([multiple=\"multiple\"])');\n// if ($(window).width() < 992) {\n// var $select = $('select[multiple=\"multiple\"]');\n// $select.each(function () {\n// var $this = $(this);\n// var $taxonomy = $this.attr('id').split('.');\n// var $taxonomyCode = $('[name=\"' + $taxonomy[0] + '.code\"]');\n// var $maxTags = $taxonomyCode.data('maxtags').split('.');\n// $maxTags = $maxTags[0];\n// $this.chosen({max_selected_options: $maxTags});\n// });\n// }\n// $(document).ready(function () {\n// var $registrationForm = $('[action=\"/action/registration\"]');\n// if ($registrationForm.length) {\n// $registrationForm.find('.label.error').first().next('input').focus();\n// }\n// });\n// });\n$(function () {\n var pattern = /^([\\w-+]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,9}(?:\\.[a-z]{2})?)$/i;\n $('.loginInformation').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $email2 = $form.find('.email2');\n var change = function () {\n $(this).prevAll('.label').removeClass('error').find('.message').remove();\n };\n var blur = function () {\n var $email = $(this);\n if ($email.val() && !pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n var $lang_selector = $('.literatumLocaleChanger .language');\n var error = ' Is Invalid';\n if ($lang_selector != null) {\n if ($lang_selector.text() === 'ESP' || $lang_selector.text() === '') {\n error = ' Is Invalid';\n } else {\n error = 'Información inválida';\n }\n }\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - ' + error);\n }\n };\n $email.on('blur', blur).on('change', change);\n $email2.on('blur', blur).on('change', change);\n });\n});\n$(function () {\n var $popups = $('.popup');\n var $popup = $('.registration-popup');\n var $email = $popup.find('.email');\n var $submit = $popup.find('.submit');\n var items = $popup.find('a, button, input');\n var lastItem,\n revers = false,\n tabKey = 9,\n shift = 16,\n $close = $popup.find('.close');\n items.each(function (index) {\n if (index === items.length - 1) {\n lastItem = $(this);\n }\n });\n $popup.on('keydown', function (e) {\n if (e.keyCode === shift) {\n revers = true;\n }\n if ((e.keyCode || e.which) === tabKey) {\n if (!revers) {\n tabEvent();\n } else {\n tabRevers();\n }\n }\n });\n $('.show-registration').click(function (event) {\n $popups.addClass('d-none');\n $popup.removeClass('d-none');\n $popup.find('input[type=\"text\"]').focus();\n event.preventDefault();\n });\n $popup.on('click', '.close', function (e) {\n e.preventDefault();\n $popup.addClass('d-none');\n $('body').removeClass('noscroll');\n });\n $popup.on('keyup', function (e) {\n if (e.keyCode == 27) {\n $popup.find('.close').trigger('click');\n }\n if (e.keyCode === shift) {\n revers = false;\n }\n });\n var pattern = /^([\\w-+]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,9}(?:\\.[a-z]{2})?)$/i;\n var change = function (event) {\n var code = event.keyCode ? event.keyCode : event.which;\n if (code == 13) {\n return;\n }\n $email.prevAll('.label').removeClass('error').find('.message').remove();\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $submit.click(function () {\n if (!$email.val()) {\n return false;\n } else if (!pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - Is Invalid');\n return false;\n }\n });\n var blur = function () {\n if ($email.val() && !pattern.test($email.val())) {\n var $label = $email.prevAll('.label');\n $label.addClass('error');\n var $message = $label.find('.message');\n if (!$message.length) {\n $message = $('').appendTo($label);\n }\n $message.html(' - Is Invalid');\n }\n };\n\n function tabEvent() {\n $close.off();\n lastItem.on('focusout', function () {\n $close.focus();\n });\n }\n\n function tabRevers() {\n lastItem.off();\n $close.on('focusout', function () {\n lastItem.focus();\n });\n }\n\n $email.on('keyup input', change);\n $email.on('blur', blur);\n});\n$(function () {\n $('.request-reset-password-form').each(function () {\n var $form = $(this);\n var $email = $form.find('.email');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$email.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $email.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n\n$(function () {\n $('.claim-options li').each(function () {\n var $form = $(this).find('form');\n var $token = $form.find('.token');\n var $submit = $form.find('.submit');\n var change = function () {\n if (!$token.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $token.on('keyup input', change);\n change();\n $form.submit(function (event) {\n if ($submit.attr('disabled')) {\n event.preventDefault();\n }\n });\n });\n});\n\nvar toggleAddButton = list => {\n list.each((key, item) => {\n const addButton = $(item).find('.add');\n if (key === list.length - 1) {\n addButton.removeClass('d-none');\n return;\n }\n addButton.addClass('d-none');\n });\n};\n\n$(function () {\n var start = 1000;\n var $emails = $('.emails-wrappers');\n if (!$emails.length) return;\n var current = $emails.data().count;\n var max = $emails.data().max;\n var $drawers = $('.top-drawer');\n var $drawer = $('.emails-wrappers .verification-confirmation');\n var $content = $drawer.find('.content');\n var $success = $drawer.find('.success-template');\n var $failure = $drawer.find('.failure-template');\n var template = $emails.find('.template').html();\n $emails.on('click', '.add', function () {\n if (current < max) {\n $emails.append(template.replace(/INDEX/g, start++));\n current++;\n $emails.toggleClass('saturated', current >= max);\n }\n toggleAddButton($emails.find('.email'));\n });\n $emails.on('click', '.remove', function () {\n $(this).closest('.email').remove();\n current--;\n $emails.toggleClass('saturated', current >= max);\n toggleAddButton($emails.find('.email'));\n });\n\n $emails.on('click', '.make-primary', function () {\n var $old = $emails.find('.email.primary').find('.value');\n var $new = $(this).closest('.email').find('.value');\n var value = $new.val();\n $new.val($old.val());\n $old.val(value);\n });\n $emails.on('click', '.resend-verification', function (event) {\n event.preventDefault();\n $.ajax({\n method: 'get',\n url: $(this).attr('href') + '&ajaxRequest=true',\n xhrFields: {withCredentials: true},\n }).then(function (data) {\n var $clone;\n if (data.result) {\n $clone = $failure.clone();\n $clone.find('.message').html(data.message);\n } else {\n $clone = $success.clone();\n }\n $content.html($clone.html());\n $drawers.addClass('d-none');\n $drawer.removeClass('d-none');\n $content.slideDown('fast');\n });\n });\n $drawer.on('click', '.cancel', function (event) {\n $content.slideUp('fast');\n $drawer.addClass('d-none');\n event.preventDefault();\n });\n});\n$(function () {\n var start = 1000;\n var $phones = $('.phones-wrappers');\n if (!$phones.length) return;\n var current = $phones.data().count;\n var max = $phones.data().max;\n var template = $phones.find('.template').html();\n $phones.on('click', '.add', function (e) {\n if (current < max) {\n $phones.append(template.replace(/INDEX/g, start++));\n current++;\n $phones.toggleClass('saturated', current >= max);\n }\n toggleAddButton($phones.find('.phone'));\n });\n $phones.on('click', '.remove', function () {\n $(this).closest('.phone').remove();\n current--;\n $phones.toggleClass('saturated', current >= max);\n toggleAddButton($phones.find('.phone'));\n });\n});\n$(function () {\n $('.addresses').each(function () {\n var $widget = $(this);\n var $change = $widget.find('.switch-address');\n var $edit = $widget.find('.edit');\n var $addresses = $widget.find('.address');\n var clear = function () {\n $edit.find('.dynamic').val('');\n $edit.find('.error').removeClass('error');\n $edit.find('.state').attr('disabled', true);\n $edit.find('.state').closest('.input-group').addClass('d-none');\n $edit.find('.message').text('');\n };\n $change.change(function () {\n var uuid = $change.val();\n $edit.addClass('d-none');\n $addresses.addClass('d-none');\n clear();\n if (uuid) {\n $addresses.filter('.' + uuid).removeClass('d-none');\n } else {\n $edit.removeClass('d-none');\n }\n });\n $widget.on('click', '.edit-address', function (e) {\n e.preventDefault();\n var $address = $(this).closest('.address');\n $address.find('[data-name]').each(function () {\n var $this = $(this);\n var $holder = $edit.find('#address\\\\.' + $this.data().name);\n var text = $this.text();\n if ($holder.is('select')) {\n $holder\n .find('option')\n .removeAttr('selected')\n .filter(function () {\n return $(this).val() == text || $(this).text() == text;\n })\n .prop('selected', true);\n } else {\n $holder.val(text);\n }\n });\n var country = $edit.find('.country').val();\n if (country) {\n $edit.find('.state').addClass('d-none');\n var $states = $edit.find('.state.' + country);\n if ($states.length) {\n var state = $address.find('[data-name=\"state\"]').text();\n $states\n .find('option')\n .removeAttr('selected')\n .filter(function () {\n return $(this).val() == state || $(this).text() == state;\n })\n .prop('selected', true);\n $states.removeAttr('disabled');\n $states.closest('.input-group').removeClass('d-none');\n $states.removeClass('d-none');\n }\n }\n $address.addClass('d-none');\n $edit.removeClass('d-none');\n });\n $('.save-profile').click(function () {\n var $editAddress = $('.edit-address');\n if ($editAddress.is(':hidden')) {\n return;\n }\n $editAddress.click();\n $('.edit').addClass('d-none');\n $('.address').removeClass('d-none');\n });\n $widget.on('change', '.country', function () {\n var value = $(this).val();\n var $states = $edit.find('.state');\n $states.attr('disabled', true).val('');\n $states.addClass('d-none');\n var $current = $states.filter('.' + value);\n if ($current.length) {\n $current.removeAttr('disabled');\n $current.removeClass('d-none');\n }\n $states.closest('.input-group').toggleClass('d-none', !$current.length);\n });\n });\n});\n$(function () {\n $('.social-email').each(function () {\n var $social = $(this);\n var $submit = $social.find('.submit');\n var change = function () {\n if (\n $social.find('.required').filter(function () {\n return !$(this).val();\n }).length > 0\n ) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $social.find('.required').on('keyup input', change);\n change();\n });\n});\n$(function () {\n var $section = $('.institutions');\n var $search = $section.find('.search');\n var toggle = function ($link, value) {\n $link.find('a').toggleClass('collapsed', !value);\n $link.next().toggleClass('d-none', value);\n };\n $search.keyup(function () {\n var text = $(this).val().toLowerCase();\n $section.find('.expand-link').each(function () {\n toggle($(this), !text);\n });\n $section.find('.institution').each(function () {\n var $institution = $(this);\n $institution.toggleClass('d-none', $institution.data().value.toLowerCase().indexOf(text) < 0);\n });\n $section.find('.federation').each(function () {\n var $federation = $(this);\n $federation.toggleClass('d-none', !$federation.find('.institution:not(.d-none)').length);\n });\n });\n $section.on('click', '.expand-link', function (event) {\n var collapsed = $(this).next().hasClass('d-none');\n event.preventDefault();\n toggle($(this), !collapsed);\n });\n});\n$(function () {\n $('.identityTokenWidget').each(function () {\n var $form = $(this).find('form');\n var $submit = $form.find('.submit');\n var $token = $form.find('.token');\n var change = function () {\n if (!$token.val()) {\n $submit.attr('disabled', true);\n } else {\n $submit.removeAttr('disabled');\n }\n };\n $token.on('keyup input', change);\n change();\n });\n});\n\n$(function () {\n var $purchase = $('.purchaseArea');\n $purchase.on('click', '.expand-link', function (event) {\n event.preventDefault();\n var $link = $(this);\n var $content = $link.nextAll('.content');\n $link.toggleClass('active');\n $content.toggleClass('d-none');\n });\n $('.save-for-later-link').click(function () {\n $('.save-for-later-link').hide();\n $('.saved-go-cart').toggleClass('d-none');\n });\n $('.add-article-to-cart').click(function () {\n $('.save-for-later-link').hide();\n });\n\n var $deepdyve = $purchase.find('.deep-dyve');\n if ($deepdyve.length) {\n var url = 'https://www.deepdyve.com/rental-link';\n var data = $deepdyve.data();\n if (data.affid && data.issn && data.doi) {\n $.ajax({\n url: url,\n data: {\n docId: data.doi,\n fieldName: 'journal_doi',\n journal: data.issn,\n affiliateId: data.affid,\n format: 'jsonp',\n },\n dataType: 'jsonp',\n jsonp: 'callback',\n }).then(function (json) {\n if (json.status === 'ok') {\n $deepdyve.attr('href', json.url);\n $deepdyve.removeClass('d-none');\n }\n });\n }\n }\n});\n\n$(function () {\n var $drawer = $('.society-id-status');\n var $content = $drawer.find('.content');\n $content.slideDown('fast');\n $drawer.on('click', '.cancel', function (event) {\n $content.slideUp('fast');\n $drawer.addClass('d-none');\n event.preventDefault();\n });\n hideSocietyStatusDialog($drawer);\n});\n\nfunction hideSocietyStatusDialog($drawer) {\n $drawer.delay(8000).hide(0);\n}\n\nvar raa = {};\n\n$(document).ready(function () {\n $('.show-request-reset-password').click(function () {\n if ($('.password-recaptcha-ajax').length && $('.LBD_CaptchaDiv').length < 1)\n $.ajax({\n type: 'GET',\n dataType: 'html',\n url: '/pb/widgets/CaptchaResponseHandler/',\n }).done(function (data) {\n $('.password-recaptcha-ajax').append(data);\n });\n });\n $('.show-request-username').click(function () {\n if ($('.username-recaptcha-ajax').length)\n $.ajax({\n type: 'GET',\n dataType: 'html',\n url: '/pb/widgets/CaptchaResponseHandler/',\n }).done(function (data) {\n $('.username-recaptcha-ajax').append(data);\n });\n });\n});\nraa.EntitlementsWidget = function (widgetDef, element) {\n literatum.Widget.call(this, widgetDef, element);\n};\n\nraa.EntitlementsWidget.prototype = new literatum.Widget();\n\nraa.EntitlementsWidget.id = 'eCommerceAccessEntitlementWidget';\nraa.EntitlementsWidget.action = '/pb/widgets/raa/entitlements';\n\nraa.EntitlementsWidget.prototype.reloadTab = function (tab) {\n var widget = this;\n var loading = new literatum.FullPageLoading().start();\n var $tabContent = this.find(\"#\" + tab);\n var $form = $tabContent.find('form');\n var $query = $form.find(\"input[name='query']\");\n var $sort = $form.find('select');\n literatum.widgets.render(\n widget,\n {},\n {\n sort: $sort.val(),\n query: $query.val(),\n selectedTab: tab.replace('pane-', ''),\n },\n function () {\n loading.done();\n },\n function (html) {\n if(html) {\n let result = $(html.trim());\n $tabContent.html(result.html());\n }\n widget.registerListeners();\n }\n );\n};\n\nraa.EntitlementsWidget.binders = {\n series: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.seriesContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('series');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n groups: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.groupsContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('groups');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n items: function (e, widget) {\n e.preventDefault();\n widget.find('.tab-nav li').removeClass('active');\n $(e.target).closest('li').addClass('active');\n widget.find('.tab-pane').removeClass('active');\n var $tabContent = widget.find('.itemsContent');\n if ($tabContent.children().length == 0) {\n widget.reloadTab('items');\n } else {\n $tabContent.find('.tab-pane').addClass('active');\n }\n },\n submitSearch: function (e, widget) {\n e.preventDefault();\n widget.reloadTab($(e.target).closest('.tab-pane').attr('id'));\n },\n sort: function (e, widget) {\n if (e.type == 'change') {\n widget.reloadTab(widget.find('.tab-pane:visible').attr('id'));\n }\n },\n};\n\nraa.EntitlementsWidget.prototype.registerListeners = function () {\n Object.getPrototypeOf(raa.EntitlementsWidget.prototype).registerListeners.call(this);\n var widget = this;\n this.find(\"input[name='query']\")\n .closest('form')\n .submit(function (e) {\n e.preventDefault();\n raa.EntitlementsWidget.binders.submitSearch(e, widget);\n });\n};\n\nraa.EntitlementsWidget.find = function () {\n var $result = $(\"*[data-widget-def='\" + raa.EntitlementsWidget.id + \"']\");\n if ($result.length > 0) {\n return $result;\n }\n return $('.' + raa.EntitlementsWidget.id);\n};\n\nliteratum.widgets.register(raa.EntitlementsWidget);\ndocument.addEventListener('DOMContentLoaded', twoFactorAuthentication, false);\n\nfunction twoFactorAuthentication() {\n if (document.getElementById('check-if-exist')) {\n setTimeout(function () {\n document.getElementById('hidden-message').style.visibility = 'visible';\n document.getElementById('hidden-message').style.display = 'block';\n }, 30000);\n }\n var submit,\n passPin = document.getElementsByClassName('type-pass-pin')[0];\n if (passPin) {\n passPin.addEventListener('keyup', function () {\n var children = this.form.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].className == 'OK-btn') {\n submit = children[i];\n break;\n }\n }\n submit.disabled = this.value ? false : true;\n });\n }\n var pinForm = document.getElementsByClassName('js__pinCode')[0];\n\n function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n if (pinForm) {\n pinForm.addEventListener('submit', function () {\n var passPin = document.getElementsByClassName('type-pass-pin')[0];\n var pinValue = passPin.value;\n var numeric = isNumeric(pinValue);\n if (!numeric || pinValue == '' || pinValue == 'Type the 6 diget PIN Code') {\n var errorMsg = this.querySelector('.error-msg');\n errorMsg.innerHTML = 'Please fill this field with numbers';\n errorMsg.className = errorMsg.className.replace(/\\bd-none\\b/, '');\n return false;\n }\n });\n }\n}\n\nif (typeof jQuery !== 'undefined') {\n (function ($) {\n var selectElement = $('.scrollableList').siblings('select');\n $('.scrollableList')\n .siblings()\n .each(function () {\n if ($(this).hasClass('sbHolder')) {\n selectElement.selectbox('detach');\n } else if ($(this).hasClass('bootstrap-select')) {\n $(this).hide();\n }\n });\n selectElement.hide();\n })(jQuery);\n jQuery(document).ready(function () {\n jQuery('.pb-collapse').click(function () {\n jQuery('.notAuth-msg-container').toggleClass('collapsed');\n jQuery(this).find('img').toggle();\n });\n });\n}\n\nwindow.tfaResetAuthentication = function () {\n if (document.getElementById('reset-verification-warning').style.display == 'none') {\n document.getElementById('reset-verification-warning').style.display = 'block';\n document.getElementsByClassName('reset-verification-option')[0].style.display = 'none';\n }\n var redirectUri = document.getElementsByName('redirectUri')[0].value;\n document.getElementsByName('redirectUri')[0].value = encodeURI('/action/resetTfaMethod?redirectUri=' + redirectUri);\n};\n\nfunction shibbolethInitSearch() {\n var $el = $('#shibboleth_search');\n var $bottomSection = $('.center-aligned');\n var placeholder = 'Type the name of your institution';\n var userIndicator = placeholder;\n var $lang_selector = $('.language-switcher li .sr-only');\n if ($lang_selector.text() === 'German Language is activeswitch to English language') {\n placeholder = 'Bitte geben Sie den Namen Ihrer Institution ein';\n userIndicator = placeholder;\n }\n if ($el.length) {\n var ms = $el.magicSuggest({\n allowFreeEntries: false,\n data: '/pb/widgets/shibbolethLogin/institutions',\n hideTrigger: true,\n maxSelection: 1,\n method: 'get',\n minChars: 1,\n mode: 'remote',\n minCharsRenderer: function (v) {\n extraMSContent();\n },\n noSuggestionText:\n '
    ' +\n '

    We couldn’t find any result for ' +\n '{{query}}' +\n '

    ' +\n '

    You can search for your Institution via Federation ' +\n 'here' +\n '

    ' +\n '
    ',\n placeholder: placeholder,\n resultsField: 'name',\n renderer: function (data) {\n if (data) {\n return (\n '' +\n data.name +\n ''\n );\n }\n },\n });\n var closeButton = function ($el) {\n return '';\n };\n\n var extraMSContent = function () {\n ms.helper.html(userIndicator);\n ms.helper.addClass('visible');\n ms.helper.show();\n };\n\n function getWidgetId(elem) {\n var widgetEl = elem.parents('[data-widget-id]')[0];\n return widgetEl ? $(widgetEl).data('widget-id') : '';\n }\n\n function renderRecentInstitutionView(item) {\n var recentlyLoggednIn =\n '
    ' +\n '' +\n item.recentName +\n '' +\n ' ' +\n '
    ';\n ms.helper.find('.ms-recently-logged').append(recentlyLoggednIn);\n }\n\n $('.institutional--select').on('click', '.ms-org-remove', function (e) {\n e.preventDefault();\n var el = $(this).closest('.ms-org-row');\n var id = $(this).data('item-id');\n $(this).hide();\n el.append(\"
    \");\n $.ajax({\n url: '/pb/widgets/shibbolethLogin/removeRecentInstitution',\n type: 'GET',\n data: {recentID: id},\n success: function () {\n el.remove();\n },\n });\n });\n var hideExtraMSContent = function () {\n ms.helper.html('');\n ms.helper.removeClass('visible');\n };\n $(ms).on('focus', function () {\n if (ms.input.length) {\n ms.input.attr('placeholder', '');\n $('.ms-sel-ctn').append(closeButton);\n ms.helper.show();\n $bottomSection.hide();\n $('#msBlur').one('click', e => {\n $(ms).blur();\n });\n }\n });\n $(ms).on('blur', function () {\n if (ms.input.length) {\n ms.input.attr('placeholder', placeholder);\n $('#msBlur').remove();\n hideExtraMSContent();\n $bottomSection.show();\n }\n });\n $(ms).on('load', function (e, m) {\n console.warn(JSON.stringify(this.getValue()));\n });\n $(ms).on('selectionchange', function (e, m) {\n e.preventDefault();\n try {\n if (e.currentTarget.getSelection().length > 0) {\n var institutionUrl = e.currentTarget.getSelection()[0].institutionUrl;\n window.location.href = institutionUrl;\n }\n } catch (e) {\n console.log(e);\n }\n });\n }\n}\n\n$('.general-rss-feed-reader').each(function () {\n //Moving literatum to SG\n var $this = $(this);\n var $resultsTarget = $(this).find('.rss-body');\n var url = $(this).data('rss-url');\n var data = {};\n if (url) {\n data.url = url;\n }\n $this.pbAjax({\n type: 'GET',\n url: '/pb/widgets/rssWidget/loadWidget',\n data: data,\n dataType: 'html',\n async: 'false',\n success: function (data) {\n $resultsTarget.html(data);\n },\n });\n});\n\n$(document).ready(function () {\n $('.fancy-tooltip').tooltip({\n show: {\n effect: 'fadeIn',\n delay: 250,\n },\n });\n literatum.widgets.initialize();\n if (document.querySelectorAll('#shibboleth_search, #login_suggestions_org_search').length) {\n import('magicsuggest')\n .then(() => {\n shibbolethInitSearch();\n })\n .catch(e => {\n console.log(e);\n });\n }\n});\n","// import { RadialProgressBar } from 'components/progress-bar/js/main';\nimport { BaseElements, BaseObject, BaseService, BaseInjector } from \"../../js/base\";\nimport { querySelector } from '../../utility/utils';\nimport { focusableElements } from '../../utility/utils';\n\nclass Texts extends BaseObject {\n\n}\nclass ClassList extends BaseObject {\n VISIBLE = 'back-to-top--visible';\n SNAPPED = 'back-to-top--snapped';\n}\n\nclass Selectors extends BaseObject {\n backToTop = '.back-to-top';\n backToTopAction = '.back-to-top__action';\n backToTopRing = '.back-to-top__action__ring';\n}\n\nclass Elements extends BaseElements {\n snapElement: HTMLElement;\n backToTopAction: HTMLElement;\n backToTopRing: SVGPathElement;\n isSquareAction: boolean;\n\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n initElements() {\n this.initElementsByLoop();\n this.isSquareAction = !!this.backToTopAction.dataset.square;\n }\n}\n\n//simple workaround to make typescript understand that these prop do exist.\ninterface BackToTop extends BaseService { }\n\n//Base injector requires object so it can intialized properly\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass BackToTop {\n\n // a class to snap to\n snapElementSelector: string;\n\n // amount of pixels to show the button after\n showAfter: number;\n\n // needed if the snap element is not circular\n borderLength: number;\n\n constructor(protected readonly wrapper: HTMLElement) { }\n\n initialize(): void {\n if (this.elements.backToTopAction.dataset.snap) {\n this.snapElementSelector = this.elements.backToTopAction.dataset.snap;\n }\n this.elements.snapElement = querySelector(`.${this.snapElementSelector}`);\n if (this.elements.snapElement) {\n this.elements.snapElement.style.position = 'relative';\n }\n this.showAfter = Number(this.wrapper.dataset.showAfter);\n\n if (this.elements.isSquareAction) {\n this.borderLength = this.elements.backToTopRing.getTotalLength() + 5;\n this.elements.backToTopRing.setAttribute(\n \"stroke-dasharray\",\n `${this.borderLength}, ${this.borderLength}`\n );\n\n this.elements.backToTopRing.setAttribute(\n \"stroke-dashoffset\",\n String(this.borderLength)\n );\n }\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.backToTopAction.addEventListener('click', this.onClick.bind(this));\n $(window).on(\"scroll\", this.onScroll.bind(this))\n }\n\n onClick(event: Event): void {\n event.preventDefault();\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n const firstFocusable: HTMLElement = document.body.querySelector(focusableElements)\n firstFocusable.focus();\n }\n\n onScroll(e: Event): void {\n const $thisWindow = $(e.currentTarget);\n const scrollTop = $thisWindow.scrollTop();\n\n if (scrollTop > this.showAfter) {\n this.wrapper.classList.add(this.classList.VISIBLE)\n } else if (scrollTop <= this.showAfter) {\n this.wrapper.classList.remove(this.classList.VISIBLE)\n }\n\n if (this.snapElementSelector) {\n if (this.isSnapElScrolledBy()) {\n this.wrapper.classList.add(this.classList.SNAPPED);\n } else {\n this.wrapper.classList.remove(this.classList.SNAPPED);\n }\n }\n const scroll = this.getScrollPercent()\n\n if (this.elements.isSquareAction) {\n const offsetToSet = (scroll / 100) * this.borderLength;\n this.elements.backToTopRing.setAttribute(\n \"stroke-dashoffset\", String(this.borderLength - offsetToSet)\n );\n } else {\n this.elements.backToTopRing.setAttribute('stroke-dasharray', `${this.getScrollPercent()}, 100`)\n }\n }\n\n /*\n * Determine if the scrolling has passed the snap element\n */\n isSnapElScrolledBy(): boolean {\n var snapEl = $(`.${this.snapElementSelector}`);\n var docViewBottom = $(window).scrollTop() + $(window).height();\n var backToTopPos = snapEl.offset().top + snapEl.height();\n return (backToTopPos <= docViewBottom);\n }\n\n getScrollPercent(): number {\n const h = document.documentElement;\n const b = document.body;\n const st = 'scrollTop';\n const sh = 'scrollHeight';\n return ((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight)) * 100;\n }\n}\n\nexport default BackToTop;\n\n\nexport {\n Elements as BackToTopElements,\n Selectors as BackToTopSelectors,\n ClassList as BackToTopClassList,\n Texts as BackToTopTexts,\n}\n\n\n","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelector } from '../../utility/utils';\nimport { EmptyNodeList } from '../../utility/utils/index';\n\nclass Texts extends BaseObject {}\n\nclass ClassList extends BaseObject {\n\n}\n\nclass Selectors extends BaseObject {\n dialogCloseBtn = \".dialog-close\";\n openDialogBtnExample = \".openDialogBtnExample\"\n}\n\nclass Elements extends BaseElements {\n dialogCloseBtn: NodeListOf = new EmptyNodeList();\n openDialogBtnExample: HTMLButtonElement;\n\n constructor(selectors: Selectors) {\n super(selectors, false);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements()\n }\n\n // Loop over all elements and init them\n initElements() {\n this.initElementsByLoop(this.wrapper);\n this.openDialogBtnExample = querySelector(this.selectors.openDialogBtnExample);\n }\n}\n\ninterface Dialog extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass Dialog {\n focusables: Array = [];\n\n constructor(protected readonly wrapper: any) {}\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this.addEventListeners(); \n }\n\n addEventListeners(): void {\n if(this.elements.openDialogBtnExample) {\n this.elements.openDialogBtnExample.addEventListener('click' , ()=> {\n this.showModalHandler(this.wrapper);\n })\n }\n\n // add close functionality to close button\n this.elements.dialogCloseBtn.forEach(button =>{\n button.addEventListener('click' , ()=> {\n this.closeModalHandler(this.wrapper);\n })\n })\n\n // Create Observer \n this.createObserver();\n\n this.onOpenHandler();\n\n this.wrapper.addEventListener('keydown', (event: any) => {\n this.focusTrapHandler(event);\n });\n }\n\n showModalHandler(wrapper : any) {\n wrapper.showModal();\n }\n\n closeModalHandler(wrapper : any) {\n wrapper.close();\n }\n\n createObserver() {\n const ObserverM = new MutationObserver( recs => {\n recs.forEach( ({attributeName: attr, target: dial }) => {\n let observedDialog = dial as any;\n if (attr === 'open' && observedDialog.open ) {\n observedDialog.onOpen();\n } // call onOpen Method... \n })\n });\n ObserverM.observe( this.wrapper , { attributes: true })\n }\n\n onOpenHandler() {\n this.wrapper.onOpen = () => {\n this.focusables = Array.from(this.wrapper.querySelectorAll(\n 'input, button, select, textarea, a[href]'\n ));\n this.elements.dialogCloseBtn[0]?.focus();\n }\n }\n\n focusTrapHandler(event: any) {\n // Trap the focus within the dialog when the Tab key is pressed\n if (event.key === 'Tab') {\n const firstFocusable = this.focusables[0];\n const lastFocusable = this.focusables[this.focusables.length - 1];\n \n if (event.shiftKey) {\n // Shift + Tab: Move focus to the previous element within the dialog\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n } else {\n // Tab: Move focus to the next element within the dialog\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n }\n}\n\nexport default Dialog;\n\nexport {\n Elements as DialogElements,\n Selectors as DialogSelectors,\n ClassList as DialogClassList,\n Texts as DialogTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelector, KeyCodes, querySelectorAll } from '../../utility/utils';\nimport { EmptyNodeList } from '../../utility/utils/index';\n\n\n\nclass Texts extends BaseObject {}\n\nclass ClassList extends BaseObject {\n hideActionsClass = \"article-actionbar__btns--hide\"\n \n}\n\nclass Selectors extends BaseObject {\n form = \"#frmIssueItems\";\n checkboxes = \".card-checkbox\";\n buttons = \".article-actionbar__btn, .article-actionbar__select__option\";\n buttonsContainer = \".article-actionbar__btns\";\n selectAllBox = \".article-actionbar__check-all input\";\n bulkAction = \".article-actionbar__select__btn\";\n exportCitationBtn = \"#exportCitationBtn\";\n exportCitationDialog = \"#exportCitation\";\n}\n\nclass Elements extends BaseElements {\n form: HTMLFormElement;\n checkboxes: NodeListOf;\n buttons: NodeListOf = new EmptyNodeList();\n buttonsContainer: HTMLElement;\n selectAllBox: HTMLInputElement;\n bulkAction: HTMLSelectElement;\n exportCitationBtn: HTMLAnchorElement;\n exportCitationDialog: any;\n\n constructor(selectors: Selectors) {\n super(selectors, false);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements()\n }\n\n // Loop over all elements and init them\n initElements() {\n this.initElementsByLoop(this.wrapper);\n this.checkboxes = querySelectorAll(this.selectors.checkboxes);\n this.form = querySelector(this.selectors.form);\n this.exportCitationDialog = querySelector(this.selectors.exportCitationDialog)\n }\n}\n\ninterface ArticleActionsBar extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass ArticleActionsBar {\n\n constructor(protected readonly wrapper: HTMLElement) {}\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this.hideBtnsOrDisableSelect(); \n this.addEventListeners(); \n }\n\n addEventListeners(): void {\n // config.enableArticleActionbarSelectAll need to check if we need to add this config\n // Select All functionality \n this.elements.selectAllBox.addEventListener('click', () => {\n const isChecked = this.elements.selectAllBox.checked;\n this.elements.checkboxes.forEach(item => (item.checked = isChecked));\n this.hideBtnsOrDisableSelect();\n });\n \n // Select one functionality\n this.elements.checkboxes.forEach(elem => {\n elem.addEventListener('click', () => {\n this.elements.selectAllBox.checked = this.allItemsSelected();\n this.hideBtnsOrDisableSelect();\n });\n });\n\n this.elements.buttons.forEach(elem => {\n let button = elem;\n if (!(this.elements.bulkAction)) {\n button.addEventListener('click', (e) => {\n const _this = button;\n e.preventDefault();\n if (!_this.hasAttribute('data-target') && _this.nodeName !== 'OPTION') {\n this.elements.form.action = _this.href;\n this.elements.form.submit();\n }else {\n this.elements.exportCitationDialog.showModal();\n }\n });\n } else {\n this.elements.bulkAction.addEventListener('change', () => {\n const _this = this.elements.bulkAction;\n if (!this.elements.form.length || !this.hasSelectedItems()) {\n return;\n }\n this.elements.form.action = _this.value;\n this.elements.form.submit();\n });\n }\n });\n }\n\n hideBtnsOrDisableSelect(): void {\n if (!(this.elements.bulkAction)) {\n this.showHideActionBtns();\n } else {\n this.validateBulkActions();\n }\n }\n\n showHideActionBtns(): void {\n if (!this.hasSelectedItems()) {\n this.elements.buttonsContainer.classList.add(this.classList.hideActionsClass);\n } else {\n this.elements.buttonsContainer.classList.remove(this.classList.hideActionsClass);\n }\n }\n\n validateBulkActions(): void {\n this.elements.bulkAction.toggleAttribute('disabled', !this.hasSelectedItems());\n }\n\n allItemsSelected(): boolean {\n return Array.from(this.elements.checkboxes).every(item => {\n return item.checked;\n });\n }\n\n hasSelectedItems(): boolean {\n return Array.from(this.elements.checkboxes).some(item => {\n return item.checked;\n });\n }\n\n\n}\n\n\nexport default ArticleActionsBar;\n\nexport {\n Elements as ArticleActionsBarElements,\n Selectors as ArticleActionsBarSelectors,\n ClassList as ArticleActionsBarClassList,\n Texts as ArticleActionsBarTexts\n}","\n import '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/utility/imports/imports';\n\nimport PopNotification from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/plugins/pop-notification/index';\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/plugins/product/index';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/plugins/cite-proc/cite-engine.external';\n\nimport '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/plugins/maphilight/js/jquery.maphilight';\n\nimport PastIssue from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/components/past-issue/index';\nimport Accordion from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/components/accordion/index';\nimport BackToTop from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/components/back-to-top/index';\nimport Dialog from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/components/dialog/index';\nimport ArticleActionsBar from '/mnt/ssd/na101/home/literatum/sourcegit/ui-products-branches/maint-250107-f18a1bc8/ui-products/app/node_modules/ui-theme/components/article-actions-bar/index';\nconst main = (UX) => {\n const $popNotification = Array.prototype.slice.call(document.getElementsByClassName('pop-notification')),\n $pastIssue = Array.prototype.slice.call(document.getElementsByClassName('past-issue')),\n $accordion = Array.prototype.slice.call(document.getElementsByClassName('toc__book__sections')),\n $backToTop = document.querySelector('.back-to-top'),\n $dialog = Array.prototype.slice.call(document.querySelectorAll('dialog')),\n $articleActionsBar = Array.prototype.slice.call(document.getElementsByClassName('article-actionbar'))\n\ntry {\n if ($popNotification.length ) {\n UX.popNotification = $popNotification\n .map(item=>new PopNotification(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($pastIssue.length ) {\n UX.pastIssue = new PastIssue($pastIssue).initialize()\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($accordion.length ) {\n UX.accordion = $accordion\n .map(item=>new Accordion(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($backToTop ) {\n UX.backToTop = new BackToTop($backToTop).initialize()\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($dialog.length ) {\n UX.dialog = $dialog\n .map(item=>new Dialog(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \ntry {\n if ($articleActionsBar.length ) {\n UX.articleActionsBar = $articleActionsBar\n .map(item=>new ArticleActionsBar(item).initialize())\n }\n } catch (err) {\n console.error(err);\n }\n \n}\n\n export default main;\n ","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelectorAll } from \"../../utility/utils\";\nimport { EmptyNodeList } from '../../utility/utils/index';\nimport { focusableElements as focusableElementsSelector } from '../../utility/utils';\nimport { throttle } from 'lodash'\n\ninterface PopNotificationConstants {\n TIMER: number;\n FOOTER_OFFSET: number;\n TRANSITION: number;\n FLOAT_EL_OFFSET: number;\n}\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n show = 'show';\n relatedContent = 'related-content';\n popupFloatAfter = 'pop-after-passed';\n popupFloatAfterPassed = 'js-sticky';\n popupFloatAfterPlaceholder = 'js-intersection-placeholder';\n transitioned = 'js-transitioned';\n}\n\nclass Selectors extends BaseObject {\n closeBtn = '.pop-notification__close';\n footer = '.footer';\n}\n\nclass Elements extends BaseElements {\n wrapper: HTMLElement;\n popupFloatAfterPlaceholder: HTMLElement;\n closeBtn: NodeListOf = new EmptyNodeList();\n\n constructor(selectors: Selectors) {\n super(selectors, true);\n }\n\n setWrapper(wrapper: HTMLElement) {\n this.wrapper = wrapper;\n this.initElements()\n }\n\n initElements() {\n this.closeBtn = querySelectorAll(this.selectors.closeBtn, this.wrapper);\n }\n}\n\ninterface PopNotification extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass PopNotification {\n protected _popupFloatAfter: boolean;\n protected _constants: PopNotificationConstants;\n protected _visibility: number;\n protected _focusableElements: NodeListOf;\n private _checkVisibilityEvent: (Event) => void;\n private _checkElPassedScrollEvent: (Event) => void;\n\n constructor(readonly wrapper: HTMLElement) { }\n\n get constants() {\n return {\n TIMER: 200,\n FOOTER_OFFSET: 200,\n TRANSITION: 250,\n FLOAT_EL_OFFSET: 200\n };\n }\n\n set visibility(value: string) {\n if (value && value.indexOf('%') > -1) {\n this._visibility = parseFloat(value) / 100.0;\n } else {\n this._visibility = 0;\n }\n }\n\n initialize(): void {\n this.elements.setWrapper(this.wrapper);\n this._constants = this.constants;\n this._popupFloatAfter = this.wrapper.classList.contains(this.classList.popupFloatAfter);\n this.visibility = this.wrapper.dataset.visibleAfter;\n this._focusableElements = querySelectorAll(focusableElementsSelector, this.wrapper);\n\n if (this._popupFloatAfter) {\n this.setPopupFloatAfterPlaceholder();\n this.checkElPassedScroll();\n }\n this.checkVisibility();\n this.checkA11y();\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.closeBtn.forEach(item => {\n item.addEventListener('click', this.onClick.bind(this));\n });\n if (this._visibility) {\n this._checkVisibilityEvent = this.checkVisibility.bind(this);\n window.addEventListener('scroll', this._checkVisibilityEvent);\n }\n\n if (this._popupFloatAfter) {\n this._checkElPassedScrollEvent = this.checkElPassedScroll.bind(this);\n window.addEventListener('scroll', this._checkElPassedScrollEvent);\n }\n\n if (this._visibility || this._popupFloatAfter) {\n window.addEventListener('scroll', throttle(() => {\n this.checkA11y();\n }, 50));\n }\n }\n\n\n setVisibility(visible: boolean): void {\n const { show } = this.classList;\n if (visible) {\n this.wrapper.classList.add(show);\n } else {\n this.wrapper.classList.remove(show);\n }\n }\n\n\n checkVisibility(): void {\n const pageHeight = document.body.getBoundingClientRect().height;\n const destinationHeight = pageHeight * this._visibility;\n const scroll = window.pageYOffset;\n const footerRect = document.querySelector(this.selectors.footer)?.getBoundingClientRect();\n const footerDist = footerRect?.height - footerRect?.top + this._constants.FOOTER_OFFSET || -1;\n this.setVisibility(scroll > destinationHeight && footerDist < 0);\n }\n\n checkElPassedScroll(): void {\n const scroll = window.scrollY;\n const elOffset =\n this.elements.popupFloatAfterPlaceholder.offsetTop +\n this.elements.popupFloatAfterPlaceholder.offsetHeight +\n this._constants.FLOAT_EL_OFFSET;\n this.setFloat(scroll > elOffset);\n }\n\n checkA11y(): void {\n const { show: showFloated, popupFloatAfterPassed } = this.classList;\n const shouldShow = this._popupFloatAfter\n ? this.wrapper.classList.contains(showFloated) || !this.wrapper.classList.contains(popupFloatAfterPassed)\n : this.wrapper.classList.contains(showFloated);\n\n this.setA11yState(shouldShow ? 'show' : 'hide');\n }\n\n setFloat(passed: boolean): void {\n if (passed) {\n this.wrapper.classList.add(this.classList.popupFloatAfterPassed);\n setTimeout(() => this.wrapper.classList.add(this.classList.transitioned), this._constants.TRANSITION);\n\n } else {\n this.wrapper.classList.remove(this.classList.popupFloatAfterPassed);\n this.wrapper.classList.remove(this.classList.transitioned);\n }\n }\n\n setA11yState(state: 'hide' | 'show'): void {\n this.wrapper.setAttribute('aria-hidden', state === 'hide' ? 'true' : 'false');\n this._focusableElements?.forEach(el => {\n state === 'hide' ? el.setAttribute('tabindex', '-1') : el.removeAttribute('tabindex');\n })\n }\n\n onClick(e: Event): void {\n e.preventDefault();\n this.wrapper.classList.remove('show');\n if (this._popupFloatAfter) {\n window.removeEventListener('scroll', this._checkVisibilityEvent);\n window.removeEventListener('scroll', this._checkElPassedScrollEvent);\n this.wrapper.classList.remove(this.classList.popupFloatAfterPassed);\n this.wrapper.classList.remove(this.classList.transitioned);\n return;\n }\n setTimeout(() => {\n this.wrapper.remove();\n }, this._constants.TIMER);\n }\n\n /**\n * Set a dummy placeholder for the popup to measure the actual position of the element scroll intersection on\n */\n setPopupFloatAfterPlaceholder(): void {\n const popupPlaceholder = document.createElement('div');\n popupPlaceholder.classList.add(this.classList.popupFloatAfterPlaceholder);\n const popupFloatAfterDummyId = `pop-after-passed-placeholder-${Math.floor(Math.random() * 10000)}`;\n popupPlaceholder.setAttribute('id', popupFloatAfterDummyId);\n this.wrapper.insertAdjacentElement('afterend', popupPlaceholder);\n this.elements.popupFloatAfterPlaceholder = document.getElementById(popupFloatAfterDummyId);\n }\n\n\n\n}\n\nexport default PopNotification;\n\nexport {\n PopNotificationConstants,\n Elements as PopNotificationElements,\n Selectors as PopNotificationSelectors,\n ClassList as PopNotificationClassList,\n Texts as PopNotificationTexts\n}","import { BaseElements, BaseObject, BaseService, BaseInjector } from '../../js/base';\nimport { querySelector } from '../../utility/utils';\nimport { EmptyNodeList } from '../../utility/utils/index';\n\nclass Texts extends BaseObject { }\n\nclass ClassList extends BaseObject {\n baseClass = 'past-issue__content'\n}\n\nclass Selectors extends BaseObject { }\n\nclass Elements extends BaseElements {\n\n items: NodeListOf = new EmptyNodeList();\n\n constructor(selectors: Selectors) {\n super(selectors, false)\n }\n\n setItems(items: NodeListOf) {\n this.items = items;\n }\n\n}\n\ninterface PastIssue extends BaseService { }\n\n@BaseInjector(Selectors, Elements, ClassList, Texts)\nclass PastIssue {\n get directions(): string[] {\n return ['top', 'right', 'bottom', 'left'];\n }\n\n \n constructor(readonly items:NodeListOf) {}\n\n initialize(): void {\n this.elements.setItems(this.items);\n this.addEventListeners();\n }\n\n addEventListeners(): void {\n this.elements.items.forEach(item => {\n item.addEventListener('mouseenter', this.onHover.bind(this, item, true));\n item.addEventListener('mouseleave', this.onHover.bind(this, item, false));\n });\n }\n\n \n getDirection(event: MouseEvent, item: HTMLElement): number {\n const { width, height, top, left } = item.getBoundingClientRect();\n const offset = {\n top: top + window.scrollY,\n left: left + window.scrollX,\n };\n const x = (event.pageX - offset.left - (width / 2)) * (width > height ? (height / width) : 1),\n y = (event.pageY - offset.top - (height / 2)) * (height > width ? (width / height) : 1);\n\n return Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;\n }\n\n onHover(item: HTMLElement, didEnter: Boolean, event: MouseEvent): void {\n const dir = this.getDirection(event, item);\n const classNamePath = this.base.classList.baseClass;\n const content = querySelector(`.${classNamePath}`, item);\n if (!content) {\n return;\n }\n const className = this.clearClasses(content);\n const newClassName = didEnter ? this.getDirectionPrefix(dir, 'in') : this.getDirectionPrefix(dir, 'out');\n content.className = `${className} ${classNamePath}${newClassName}`;\n }\n\n clearClasses(content: HTMLElement): string {\n return content.className\n .replace(/(^|\\s)past-issue__content--\\S+/gm, '');\n }\n\n getDirectionPrefix(key: number, access: string): string {\n return `--${access}-${this.directions[key]}`;\n }\n\n}\n\nexport default PastIssue;\n\nexport {\n Elements as PastIssueElements,\n Selectors as PastIssueSelectors,\n ClassList as PastIssueClassList,\n Texts as PastIssueTexts\n}","export default function scrollToTarget() {\n $('body').on('click keydown', '.scroll-to-target', function (e) {\n e.preventDefault();\n const target = $(e.currentTarget.hash);\n if (target.length) {\n $('html, body').animate({\n scrollTop: $(target).offset().top\n }, 300, function () {\n return window.history.pushState(null, null, e.currentTarget.hash);\n });\n }\n })\n}\n","import { querySelectorAll } from \"../utils\";\n\nconst customFileHandler = () => {\n querySelectorAll('.custom-file-input').forEach(input => {\n input.addEventListener('change', (e: Event) => {\n const currentTarget = e.currentTarget as HTMLInputElement\n const target = e.target as HTMLInputElement\n const fileName = currentTarget.files[0].name;\n const nextSibling = target.nextElementSibling as HTMLElement;\n nextSibling.innerText = fileName;\n });\n });\n}\n\nexport default customFileHandler;\n","// add a class .collapse-lock-screen for the toggled element to make it lock the screen using bootstraps\n// collapse\nconst LOCK = 'modal-open';\nconst REQUIRES_LOCK = 'collapse-lock-screen';\n\nconst lockScreenOnToggle = () => {\n $(document).on('show.bs.collapse hidden.bs.collapse', e => {\n if (e.target instanceof HTMLElement && e.target.classList.contains(REQUIRES_LOCK) && e.type === 'show') {\n document.body.classList.add(LOCK);\n } else {\n document.body.classList.remove(LOCK);\n }\n });\n}\n\nexport default lockScreenOnToggle;\n","const links = [].slice.call(document.querySelectorAll('link'));\nconst resourcePath = links.map(node => node.href).filter(href => href.indexOf('releasedAssets') > -1)[0];\nconst releasedAssetsPath = resourcePath && `${resourcePath.split('releasedAssets')[0]}releasedAssets/`;\n__webpack_public_path__ = releasedAssetsPath;\n"],"sourceRoot":""}