{"version":3,"file":"lifeblood.min.js","sources":["lifeblood.min.js"],"sourcesContent":["/*\r\n * Watch Event Listener\r\n *\r\n * @author Darcy Clarke\r\n *\r\n * Copyright (c) 2014 Darcy Clarke\r\n * Dual licensed under the MIT and GPL licenses.\r\n *\r\n * Usage:\r\n * watch(element, 'width height', function(){\r\n * console.log(this.style.width, this.style.height);\r\n * });\r\n */\r\n\r\n(function (window) {\r\n\r\n var _watch = function (elements, props, options, callback){\r\n\r\n // Setup\r\n var self = this;\r\n var check;\r\n var toArray;\r\n\r\n // Object to Array\r\n toArray = function (obj) {\r\n\r\n var arr = [];\r\n\r\n for (var i = obj.length >>> 0; i--;) {\r\n arr[i] = obj[i];\r\n }\r\n\r\n return arr;\r\n\r\n };\r\n\r\n // Check if we should fire callback\r\n check = function (e) {\r\n\r\n var self = this;\r\n\r\n for (var i = 0; i < self.watching.length; i++) {\r\n\r\n var data = self.watching[i];\r\n var changed = true;\r\n var temp;\r\n\r\n // Iterate through properties\r\n for (var j = 0; j < data.props.length; j++) {\r\n temp = self.attributes[data.props[j]] || self.style[data.props[j]];\r\n if (data.vals[j] != temp) {\r\n data.vals[j] = temp;\r\n data.changed[j] = true;\r\n }\r\n }\r\n\r\n // Check changed attributes\r\n for (var k = 0; k < data.props.length; k++) {\r\n if (!data.changed[k]) {\r\n changed = false;\r\n break;\r\n }\r\n }\r\n\r\n // Run callback if property has changed\r\n if (changed && data.callback) {\r\n data.callback.apply(self, e);\r\n }\r\n\r\n };\r\n\r\n };\r\n\r\n // Elements from node list to array\r\n elements = toArray(elements);\r\n\r\n // Type check options\r\n if (typeof(options) == 'function') {\r\n callback = options;\r\n options = {};\r\n }\r\n\r\n // Type check callback\r\n if (typeof(callback) != 'function') {\r\n callback = function(){};\r\n }\r\n\r\n // Set throttle\r\n options.throttle = options.throttle || 10;\r\n\r\n // Iterate over elements\r\n for (var i = 0; i < elements.length; i++) {\r\n\r\n var element = elements[i];\r\n var data = {\r\n props: props.split(' '),\r\n vals: [],\r\n changed: [],\r\n callback: callback\r\n };\r\n\r\n // Grab each property's initial value\r\n for (var j = 0; j < data.props.length; j++) {\r\n data.vals[j] = element.attributes[data.props[j]] || element.style[data.props[j]];\r\n data.changed[j] = false;\r\n }\r\n\r\n // Set watch array\r\n if (!element.watching) {\r\n element.watching = [];\r\n }\r\n\r\n // Store data in watch array\r\n element.watching.push(data);\r\n\r\n // Create new Mutation Observer\r\n var observer = new MutationObserver(function (mutations) {\r\n // console.log(mutations);\r\n for (var k = 0; k < mutations.length; k++) {\r\n check.call(mutations[k].target, mutations[k]);\r\n }\r\n });\r\n\r\n // Start observing\r\n observer.observe(element, { subtree: false, attributes: true });\r\n\r\n }\r\n\r\n // Return elements to enable chaining\r\n return self;\r\n\r\n };\r\n\r\n // Expose watch to window\r\n window.watch = function () {\r\n return _watch.apply(arguments[0], arguments);\r\n };\r\n\r\n // Expose watch to jQuery\r\n (function ($) {\r\n $.fn.watch = function () {\r\n Array.prototype.unshift.call(arguments, this);\r\n return _watch.apply(this, arguments);\r\n };\r\n })(jQuery);\r\n\r\n})(window);\r\n\r\n/*\r\n * Copyright 2012 The Polymer Authors. All rights reserved.\r\n * Use of this source code is governed by a BSD-style\r\n * license that can be found in the LICENSE file.\r\n */\r\n\r\nif (typeof WeakMap === 'undefined') {\r\n (function() {\r\n var defineProperty = Object.defineProperty;\r\n var counter = Date.now() % 1e9;\r\n\r\n var WeakMap = function() {\r\n this.name = '__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');\r\n };\r\n\r\n WeakMap.prototype = {\r\n set: function(key, value) {\r\n var entry = key[this.name];\r\n if (entry && entry[0] === key)\r\n entry[1] = value;\r\n else\r\n defineProperty(key, this.name, {value: [key, value], writable: true});\r\n },\r\n get: function(key) {\r\n var entry;\r\n return (entry = key[this.name]) && entry[0] === key ?\r\n entry[1] : undefined;\r\n },\r\n delete: function(key) {\r\n var entry = key[this.name];\r\n if (!entry) return false;\r\n var hasValue = entry[0] === key;\r\n entry[0] = entry[1] = undefined;\r\n return hasValue;\r\n },\r\n has: function(key) {\r\n var entry = key[this.name];\r\n if (!entry) return false;\r\n return entry[0] === key;\r\n }\r\n };\r\n\r\n window.WeakMap = WeakMap;\r\n })();\r\n}\r\n\r\n/*\r\n * Copyright 2012 The Polymer Authors. All rights reserved.\r\n * Use of this source code is goverened by a BSD-style\r\n * license that can be found in the LICENSE file.\r\n */\r\n\r\n(function(global) {\r\n\r\n var registrationsTable = new WeakMap();\r\n\r\n // We use setImmediate or postMessage for our future callback.\r\n var setImmediate = window.msSetImmediate;\r\n\r\n // Use post message to emulate setImmediate.\r\n if (!setImmediate) {\r\n var setImmediateQueue = [];\r\n var sentinel = String(Math.random());\r\n window.addEventListener('message', function(e) {\r\n if (e.data === sentinel) {\r\n var queue = setImmediateQueue;\r\n setImmediateQueue = [];\r\n queue.forEach(function(func) {\r\n func();\r\n });\r\n }\r\n });\r\n setImmediate = function(func) {\r\n setImmediateQueue.push(func);\r\n window.postMessage(sentinel, '*');\r\n };\r\n }\r\n\r\n // This is used to ensure that we never schedule 2 callas to setImmediate\r\n var isScheduled = false;\r\n\r\n // Keep track of observers that needs to be notified next time.\r\n var scheduledObservers = [];\r\n\r\n /**\r\n * Schedules |dispatchCallback| to be called in the future.\r\n * @param {MutationObserver} observer\r\n */\r\n function scheduleCallback(observer) {\r\n scheduledObservers.push(observer);\r\n if (!isScheduled) {\r\n isScheduled = true;\r\n setImmediate(dispatchCallbacks);\r\n }\r\n }\r\n\r\n function wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill &&\r\n window.ShadowDOMPolyfill.wrapIfNeeded(node) ||\r\n node;\r\n }\r\n\r\n function dispatchCallbacks() {\r\n // http://dom.spec.whatwg.org/#mutation-observers\r\n\r\n isScheduled = false; // Used to allow a new setImmediate call above.\r\n\r\n var observers = scheduledObservers;\r\n scheduledObservers = [];\r\n // Sort observers based on their creation UID (incremental).\r\n observers.sort(function(o1, o2) {\r\n return o1.uid_ - o2.uid_;\r\n });\r\n\r\n var anyNonEmpty = false;\r\n observers.forEach(function(observer) {\r\n\r\n // 2.1, 2.2\r\n var queue = observer.takeRecords();\r\n // 2.3. Remove all transient registered observers whose observer is mo.\r\n removeTransientObserversFor(observer);\r\n\r\n // 2.4\r\n if (queue.length) {\r\n observer.callback_(queue, observer);\r\n anyNonEmpty = true;\r\n }\r\n });\r\n\r\n // 3.\r\n if (anyNonEmpty)\r\n dispatchCallbacks();\r\n }\r\n\r\n function removeTransientObserversFor(observer) {\r\n observer.nodes_.forEach(function(node) {\r\n var registrations = registrationsTable.get(node);\r\n if (!registrations)\r\n return;\r\n registrations.forEach(function(registration) {\r\n if (registration.observer === observer)\r\n registration.removeTransientObservers();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * This function is used for the \"For each registered observer observer (with\r\n * observer's options as options) in target's list of registered observers,\r\n * run these substeps:\" and the \"For each ancestor ancestor of target, and for\r\n * each registered observer observer (with options options) in ancestor's list\r\n * of registered observers, run these substeps:\" part of the algorithms. The\r\n * |options.subtree| is checked to ensure that the callback is called\r\n * correctly.\r\n *\r\n * @param {Node} target\r\n * @param {function(MutationObserverInit):MutationRecord} callback\r\n */\r\n function forEachAncestorAndObserverEnqueueRecord(target, callback) {\r\n for (var node = target; node; node = node.parentNode) {\r\n var registrations = registrationsTable.get(node);\r\n\r\n if (registrations) {\r\n for (var j = 0; j < registrations.length; j++) {\r\n var registration = registrations[j];\r\n var options = registration.options;\r\n\r\n // Only target ignores subtree.\r\n if (node !== target && !options.subtree)\r\n continue;\r\n\r\n var record = callback(options);\r\n if (record)\r\n registration.enqueue(record);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var uidCounter = 0;\r\n\r\n /**\r\n * The class that maps to the DOM MutationObserver interface.\r\n * @param {Function} callback.\r\n * @constructor\r\n */\r\n function JsMutationObserver(callback) {\r\n this.callback_ = callback;\r\n this.nodes_ = [];\r\n this.records_ = [];\r\n this.uid_ = ++uidCounter;\r\n }\r\n\r\n JsMutationObserver.prototype = {\r\n observe: function(target, options) {\r\n target = wrapIfNeeded(target);\r\n\r\n // 1.1\r\n if (!options.childList && !options.attributes && !options.characterData ||\r\n\r\n // 1.2\r\n options.attributeOldValue && !options.attributes ||\r\n\r\n // 1.3\r\n options.attributeFilter && options.attributeFilter.length &&\r\n !options.attributes ||\r\n\r\n // 1.4\r\n options.characterDataOldValue && !options.characterData) {\r\n\r\n throw new SyntaxError();\r\n }\r\n\r\n var registrations = registrationsTable.get(target);\r\n if (!registrations)\r\n registrationsTable.set(target, registrations = []);\r\n\r\n // 2\r\n // If target's list of registered observers already includes a registered\r\n // observer associated with the context object, replace that registered\r\n // observer's options with options.\r\n var registration;\r\n for (var i = 0; i < registrations.length; i++) {\r\n if (registrations[i].observer === this) {\r\n registration = registrations[i];\r\n registration.removeListeners();\r\n registration.options = options;\r\n break;\r\n }\r\n }\r\n\r\n // 3.\r\n // Otherwise, add a new registered observer to target's list of registered\r\n // observers with the context object as the observer and options as the\r\n // options, and add target to context object's list of nodes on which it\r\n // is registered.\r\n if (!registration) {\r\n registration = new Registration(this, target, options);\r\n registrations.push(registration);\r\n this.nodes_.push(target);\r\n }\r\n\r\n registration.addListeners();\r\n },\r\n\r\n disconnect: function() {\r\n this.nodes_.forEach(function(node) {\r\n var registrations = registrationsTable.get(node);\r\n for (var i = 0; i < registrations.length; i++) {\r\n var registration = registrations[i];\r\n if (registration.observer === this) {\r\n registration.removeListeners();\r\n registrations.splice(i, 1);\r\n // Each node can only have one registered observer associated with\r\n // this observer.\r\n break;\r\n }\r\n }\r\n }, this);\r\n this.records_ = [];\r\n },\r\n\r\n takeRecords: function() {\r\n var copyOfRecords = this.records_;\r\n this.records_ = [];\r\n return copyOfRecords;\r\n }\r\n };\r\n\r\n /**\r\n * @param {string} type\r\n * @param {Node} target\r\n * @constructor\r\n */\r\n function MutationRecord(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n this.addedNodes = [];\r\n this.removedNodes = [];\r\n this.previousSibling = null;\r\n this.nextSibling = null;\r\n this.attributeName = null;\r\n this.attributeNamespace = null;\r\n this.oldValue = null;\r\n }\r\n\r\n function copyMutationRecord(original) {\r\n var record = new MutationRecord(original.type, original.target);\r\n record.addedNodes = original.addedNodes.slice();\r\n record.removedNodes = original.removedNodes.slice();\r\n record.previousSibling = original.previousSibling;\r\n record.nextSibling = original.nextSibling;\r\n record.attributeName = original.attributeName;\r\n record.attributeNamespace = original.attributeNamespace;\r\n record.oldValue = original.oldValue;\r\n return record;\r\n };\r\n\r\n // We keep track of the two (possibly one) records used in a single mutation.\r\n var currentRecord, recordWithOldValue;\r\n\r\n /**\r\n * Creates a record without |oldValue| and caches it as |currentRecord| for\r\n * later use.\r\n * @param {string} oldValue\r\n * @return {MutationRecord}\r\n */\r\n function getRecord(type, target) {\r\n return currentRecord = new MutationRecord(type, target);\r\n }\r\n\r\n /**\r\n * Gets or creates a record with |oldValue| based in the |currentRecord|\r\n * @param {string} oldValue\r\n * @return {MutationRecord}\r\n */\r\n function getRecordWithOldValue(oldValue) {\r\n if (recordWithOldValue)\r\n return recordWithOldValue;\r\n recordWithOldValue = copyMutationRecord(currentRecord);\r\n recordWithOldValue.oldValue = oldValue;\r\n return recordWithOldValue;\r\n }\r\n\r\n function clearRecords() {\r\n currentRecord = recordWithOldValue = undefined;\r\n }\r\n\r\n /**\r\n * @param {MutationRecord} record\r\n * @return {boolean} Whether the record represents a record from the current\r\n * mutation event.\r\n */\r\n function recordRepresentsCurrentMutation(record) {\r\n return record === recordWithOldValue || record === currentRecord;\r\n }\r\n\r\n /**\r\n * Selects which record, if any, to replace the last record in the queue.\r\n * This returns |null| if no record should be replaced.\r\n *\r\n * @param {MutationRecord} lastRecord\r\n * @param {MutationRecord} newRecord\r\n * @param {MutationRecord}\r\n */\r\n function selectRecord(lastRecord, newRecord) {\r\n if (lastRecord === newRecord)\r\n return lastRecord;\r\n\r\n // Check if the the record we are adding represents the same record. If\r\n // so, we keep the one with the oldValue in it.\r\n if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord))\r\n return recordWithOldValue;\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Class used to represent a registered observer.\r\n * @param {MutationObserver} observer\r\n * @param {Node} target\r\n * @param {MutationObserverInit} options\r\n * @constructor\r\n */\r\n function Registration(observer, target, options) {\r\n this.observer = observer;\r\n this.target = target;\r\n this.options = options;\r\n this.transientObservedNodes = [];\r\n }\r\n\r\n Registration.prototype = {\r\n enqueue: function(record) {\r\n var records = this.observer.records_;\r\n var length = records.length;\r\n\r\n // There are cases where we replace the last record with the new record.\r\n // For example if the record represents the same mutation we need to use\r\n // the one with the oldValue. If we get same record (this can happen as we\r\n // walk up the tree) we ignore the new record.\r\n if (records.length > 0) {\r\n var lastRecord = records[length - 1];\r\n var recordToReplaceLast = selectRecord(lastRecord, record);\r\n if (recordToReplaceLast) {\r\n records[length - 1] = recordToReplaceLast;\r\n return;\r\n }\r\n } else {\r\n scheduleCallback(this.observer);\r\n }\r\n\r\n records[length] = record;\r\n },\r\n\r\n addListeners: function() {\r\n this.addListeners_(this.target);\r\n },\r\n\r\n addListeners_: function(node) {\r\n var options = this.options;\r\n if (options.attributes)\r\n node.addEventListener('DOMAttrModified', this, true);\r\n\r\n if (options.characterData)\r\n node.addEventListener('DOMCharacterDataModified', this, true);\r\n\r\n if (options.childList)\r\n node.addEventListener('DOMNodeInserted', this, true);\r\n\r\n if (options.childList || options.subtree)\r\n node.addEventListener('DOMNodeRemoved', this, true);\r\n },\r\n\r\n removeListeners: function() {\r\n this.removeListeners_(this.target);\r\n },\r\n\r\n removeListeners_: function(node) {\r\n var options = this.options;\r\n if (options.attributes)\r\n node.removeEventListener('DOMAttrModified', this, true);\r\n\r\n if (options.characterData)\r\n node.removeEventListener('DOMCharacterDataModified', this, true);\r\n\r\n if (options.childList)\r\n node.removeEventListener('DOMNodeInserted', this, true);\r\n\r\n if (options.childList || options.subtree)\r\n node.removeEventListener('DOMNodeRemoved', this, true);\r\n },\r\n\r\n /**\r\n * Adds a transient observer on node. The transient observer gets removed\r\n * next time we deliver the change records.\r\n * @param {Node} node\r\n */\r\n addTransientObserver: function(node) {\r\n // Don't add transient observers on the target itself. We already have all\r\n // the required listeners set up on the target.\r\n if (node === this.target)\r\n return;\r\n\r\n this.addListeners_(node);\r\n this.transientObservedNodes.push(node);\r\n var registrations = registrationsTable.get(node);\r\n if (!registrations)\r\n registrationsTable.set(node, registrations = []);\r\n\r\n // We know that registrations does not contain this because we already\r\n // checked if node === this.target.\r\n registrations.push(this);\r\n },\r\n\r\n removeTransientObservers: function() {\r\n var transientObservedNodes = this.transientObservedNodes;\r\n this.transientObservedNodes = [];\r\n\r\n transientObservedNodes.forEach(function(node) {\r\n // Transient observers are never added to the target.\r\n this.removeListeners_(node);\r\n\r\n var registrations = registrationsTable.get(node);\r\n for (var i = 0; i < registrations.length; i++) {\r\n if (registrations[i] === this) {\r\n registrations.splice(i, 1);\r\n // Each node can only have one registered observer associated with\r\n // this observer.\r\n break;\r\n }\r\n }\r\n }, this);\r\n },\r\n\r\n handleEvent: function(e) {\r\n // Stop propagation since we are managing the propagation manually.\r\n // This means that other mutation events on the page will not work\r\n // correctly but that is by design.\r\n e.stopImmediatePropagation();\r\n\r\n switch (e.type) {\r\n case 'DOMAttrModified':\r\n // http://dom.spec.whatwg.org/#concept-mo-queue-attributes\r\n\r\n var name = e.attrName;\r\n var namespace = e.relatedNode.namespaceURI;\r\n var target = e.target;\r\n\r\n // 1.\r\n var record = new getRecord('attributes', target);\r\n record.attributeName = name;\r\n record.attributeNamespace = namespace;\r\n\r\n // 2.\r\n var oldValue =\r\n e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;\r\n\r\n forEachAncestorAndObserverEnqueueRecord(target, function(options) {\r\n // 3.1, 4.2\r\n if (!options.attributes)\r\n return;\r\n\r\n // 3.2, 4.3\r\n if (options.attributeFilter && options.attributeFilter.length &&\r\n options.attributeFilter.indexOf(name) === -1 &&\r\n options.attributeFilter.indexOf(namespace) === -1) {\r\n return;\r\n }\r\n // 3.3, 4.4\r\n if (options.attributeOldValue)\r\n return getRecordWithOldValue(oldValue);\r\n\r\n // 3.4, 4.5\r\n return record;\r\n });\r\n\r\n break;\r\n\r\n case 'DOMCharacterDataModified':\r\n // http://dom.spec.whatwg.org/#concept-mo-queue-characterdata\r\n var target = e.target;\r\n\r\n // 1.\r\n var record = getRecord('characterData', target);\r\n\r\n // 2.\r\n var oldValue = e.prevValue;\r\n\r\n\r\n forEachAncestorAndObserverEnqueueRecord(target, function(options) {\r\n // 3.1, 4.2\r\n if (!options.characterData)\r\n return;\r\n\r\n // 3.2, 4.3\r\n if (options.characterDataOldValue)\r\n return getRecordWithOldValue(oldValue);\r\n\r\n // 3.3, 4.4\r\n return record;\r\n });\r\n\r\n break;\r\n\r\n case 'DOMNodeRemoved':\r\n this.addTransientObserver(e.target);\r\n // Fall through.\r\n case 'DOMNodeInserted':\r\n // http://dom.spec.whatwg.org/#concept-mo-queue-childlist\r\n var target = e.relatedNode;\r\n var changedNode = e.target;\r\n var addedNodes, removedNodes;\r\n if (e.type === 'DOMNodeInserted') {\r\n addedNodes = [changedNode];\r\n removedNodes = [];\r\n } else {\r\n\r\n addedNodes = [];\r\n removedNodes = [changedNode];\r\n }\r\n var previousSibling = changedNode.previousSibling;\r\n var nextSibling = changedNode.nextSibling;\r\n\r\n // 1.\r\n var record = getRecord('childList', target);\r\n record.addedNodes = addedNodes;\r\n record.removedNodes = removedNodes;\r\n record.previousSibling = previousSibling;\r\n record.nextSibling = nextSibling;\r\n\r\n forEachAncestorAndObserverEnqueueRecord(target, function(options) {\r\n // 2.1, 3.2\r\n if (!options.childList)\r\n return;\r\n\r\n // 2.2, 3.3\r\n return record;\r\n });\r\n\r\n }\r\n\r\n clearRecords();\r\n }\r\n };\r\n\r\n global.JsMutationObserver = JsMutationObserver;\r\n\r\n if (!global.MutationObserver)\r\n global.MutationObserver = JsMutationObserver;\r\n\r\n\r\n})(this);\r\n\nvar ARCLB2C = ARCLB2C || {};\r\nARCLB2C.Passwords = ARCLB2C.Passwords || {};\r\n\r\n(function (ARCLB2C, $, window, document, undefined) {\r\n\r\n /*------Show/Hide Password Toggler ------*/\r\n\r\n function makePwdToggler(pwd) {\r\n // Create show-password checkbox\r\n var checkbox = document.createElement('input');\r\n checkbox.setAttribute('type', 'checkbox');\r\n var id = pwd.id + 'togglercheckbox';\r\n checkbox.setAttribute('id', id);\r\n checkbox.setAttribute('class', 'password-toggler-checkbox sr-only');\r\n checkbox.setAttribute('tabindex', '-1');\r\n\r\n var label = document.createElement('label');\r\n label.setAttribute('for', id);\r\n\r\n var icon = document.createElement('i');\r\n icon.setAttribute('class', 'fa fa-eye');\r\n icon.setAttribute('aria-hidden', 'true');\r\n label.appendChild(icon);\r\n\r\n var container = document.createElement('span');\r\n container.id = id + 'icon';\r\n container.className = 'password-toggler';\r\n container.appendChild(checkbox);\r\n container.appendChild(label);\r\n\r\n // Add show-password checkbox under password input\r\n pwd.insertAdjacentElement('afterend', container);\r\n\r\n // Add toggle password callback\r\n function toggle(e) {\r\n if (e.keyCode !== 32 && e.keyCode !== 9) { // spacebar and tab fires the 'onclick' event (as well as 'onkeydown' event), and because this function handles both, we ignore the spacebar and tab key onkeydown event here\r\n if (pwd.type === 'password') {\r\n pwd.type = 'text';\r\n } else {\r\n pwd.type = 'password';\r\n }\r\n icon.classList.toggle('fa-eye-slash');\r\n }\r\n }\r\n checkbox.onclick = toggle;\r\n // For non-mouse usage\r\n checkbox.onkeydown = toggle;\r\n }\r\n\r\n function setupPwdTogglers() {\r\n var pwdInputs = document.querySelectorAll('input[type=password]');\r\n for (var i = 0; i < pwdInputs.length; i++) {\r\n makePwdToggler(pwdInputs[i]);\r\n }\r\n }\r\n\r\n setupPwdTogglers();\r\n\r\n/*------ Change Password Validation ------*/\r\n\r\n function delay(callback, ms) {\r\n var timer = 0;\r\n return function () {\r\n var context = this, args = arguments;\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n callback.apply(context, args);\r\n }, ms || 0);\r\n };\r\n }\r\n\r\n var newPasswordInput = $('#newPassword');\r\n var reenterPasswordInput = $('#reenterPassword');\r\n\r\n function handlePasswordChange(e) {\r\n\r\n var validIconHtml = '
';\r\n if (newPasswordInput.val()) {\r\n if (!newPasswordInput.hasClass('invalid')) {\r\n if (!newPasswordInput.next('.password-valid').length) {\r\n newPasswordInput.after(validIconHtml);\r\n }\r\n } else {\r\n newPasswordInput.next('.password-valid').remove();\r\n }\r\n } else {\r\n newPasswordInput.next('.password-valid').remove(); // remove tick it if it has been added via the other part of this if/else statement\r\n }\r\n\r\n if (reenterPasswordInput.val()) {\r\n if (reenterPasswordInput.val() !== newPasswordInput.val()) {\r\n reenterPasswordInput.removeClass('valid');\r\n reenterPasswordInput.addClass('invalid');\r\n reenterPasswordInput.next('.password-valid').remove();\r\n } else {\r\n reenterPasswordInput.removeClass('invalid');\r\n reenterPasswordInput.addClass('valid');\r\n if (!reenterPasswordInput.next('.password-valid').length) {\r\n reenterPasswordInput.after(validIconHtml);\r\n }\r\n }\r\n } else {\r\n reenterPasswordInput.next('.password-valid').remove();\r\n }\r\n }\r\n\r\n reenterPasswordInput.keyup(delay(handlePasswordChange, 2000));\r\n newPasswordInput.keyup(delay(handlePasswordChange, 2000)); // we need it on the newPassword input in case they change the new password after already successfully confirming the password\r\n\r\n})(ARCLB2C, jQuery, window, document);\r\n\nvar ARCLB2C = ARCLB2C || {};\r\nARCLB2C.BypassScreens = ARCLB2C.BypassScreens || {};\r\n\r\n(function (ARCLB2C, $, window, document, undefined) {\r\n\r\n /*------START - Bypass redundant screens ------*/\r\n\r\n // skip the redundant screens where you confirm the email address to send the verification code to in the 'log in' and 'password reset flows'\r\n $(\"#readOnlyEmailVerificationControl_but_send_code\").addClass('js-enabled').click(); // this JS works in tandem with the SCSS in bypass-screens.scss - the CSS shows a spinner, and this JS automatically clicks the button for the user. Also add's a 'JS-enabled' class, so that the corresponding CSS only shows the spinner (and makes the button appear disabled) when JS is enabled - this is to support older versions of the app where JS is not enabled/available\r\n \r\n //skip screen or rename button text\r\n // we have to do a watch on the continue button becoming visible/not disabled, because the 'continue' button is simply 'shown' in the UI (via AJAX), rather than being made visible by a new page load\r\n $('#continue').watch('disabled', function () {\r\n // skip the (redundant) screen 'continue' (to confirm your account/email address) in the 'log in' and 'password reset flows' \r\n if (!$(\"#continue\").attr(\"disabled\") && $(\"input#email-Readonly\").length && $(\"input#email-Readonly\").is(\":visible\")) { // check if continue button is not disabled, and \"input#email-Readonly\" exists and is visible\r\n $(\"#continue\").click();\r\n }\r\n });\r\n\r\n // change the text of the continue button on the email verification and password reset flows\r\n if ($(\"input#radioVerify_email\").is(\":visible\") || $(\"input#email\").is(\":visible\")) { //check if \"input#radioVerify_email\" (email verification flow) is visible or \"input#email\" is visible (pwd reset flow)\r\n $(\"#continue\").html('SEND CODE').attr('aria-label', 'SEND CODE');\r\n }\r\n\r\n\r\n/*------END - Bypass redundant screens ------*/\r\n\r\n})(ARCLB2C, jQuery, window, document);\nvar ARCLB2C = ARCLB2C || {};\r\nARCLB2C.Validation = ARCLB2C.Validation || {};\r\n\r\n(function (ARCLB2C, $, window, document, undefined) {\r\n\r\n/*------ Hide the 'This info is required.'
s (since they don't really add much value, plus aren't in line with ARCL UX beliefs) ------*/\r\n \r\n $('div.error').watch('aria-hidden', function () {\r\n $('div.error:contains(\"This information is required.\")').hide();\r\n });\r\n\r\n})(ARCLB2C, jQuery, window, document);\nvar ARCLB2C = ARCLB2C || {};\r\nARCLB2C.ResetLink = ARCLB2C.ResetLink || {};\r\n\r\n(function (ARCLB2C, $, window, document, undefined) {\r\n\r\n /*------ Prevent user email address being appended to the Forgot Password link (since ARCL don't want PII logged anywhere) ------*/\r\n\r\n $(\"#forgotPassword\").mousedown(function () {\r\n $(\"#signInName\").val(\"\");\r\n });\r\n\r\n})(ARCLB2C, jQuery, window, document);\r\n"],"names":["window","_watch","elements","props","options","callback","check","e","self","this","i","watching","length","temp","data","changed","j","attributes","style","vals","k","apply","obj","arr","toArray","throttle","element","split","push","MutationObserver","mutations","call","target","observe","subtree","watch","arguments","jQuery","fn","Array","prototype","unshift","WeakMap","name","Math","random","counter","defineProperty","Object","Date","now","set","key","value","entry","writable","get","undefined","delete","hasValue","has","global","setImmediateQueue","sentinel","registrationsTable","setImmediate","msSetImmediate","String","addEventListener","queue","forEach","func","postMessage","isScheduled","scheduledObservers","dispatchCallbacks","observers","sort","o1","o2","uid_","anyNonEmpty","observer","takeRecords","nodes_","node","registrations","registration","removeTransientObservers","callback_","forEachAncestorAndObserverEnqueueRecord","parentNode","record","enqueue","currentRecord","recordWithOldValue","uidCounter","JsMutationObserver","records_","MutationRecord","type","addedNodes","removedNodes","previousSibling","nextSibling","attributeName","attributeNamespace","oldValue","getRecord","getRecordWithOldValue","original","slice","selectRecord","lastRecord","newRecord","Registration","transientObservedNodes","ShadowDOMPolyfill","wrapIfNeeded","childList","characterData","attributeOldValue","attributeFilter","characterDataOldValue","SyntaxError","removeListeners","addListeners","disconnect","splice","copyOfRecords","records","recordToReplaceLast","addListeners_","removeListeners_","removeEventListener","addTransientObserver","handleEvent","stopImmediatePropagation","attrName","namespace","relatedNode","namespaceURI","attrChange","MutationEvent","ADDITION","prevValue","indexOf","changedNode","ARCLB2C","Passwords","$","document","delay","ms","timer","context","args","clearTimeout","setTimeout","pwdInputs","querySelectorAll","pwd","checkbox","createElement","setAttribute","id","label","icon","appendChild","container","toggle","keyCode","classList","className","insertAdjacentElement","onclick","onkeydown","makePwdToggler","setupPwdTogglers","newPasswordInput","reenterPasswordInput","handlePasswordChange","validIconHtml","val","hasClass","next","remove","after","removeClass","addClass","keyup","BypassScreens","click","attr","is","html","Validation","hide","ResetLink","mousedown"],"mappings":"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"}