{"version":3,"file":"SharedScripts.min.js","sources":["SharedScripts.js"],"sourcesContent":[" /*!----------------------------------------------\r\n DO NOT EDIT THIS FILE!\r\n\r\n This file is compiled from the CertifySite Solution and any changes\r\n made here will be lost the next time it is re-compiled. If you need to\r\n make a change and don't have access to the CertifySite solution, ask\r\n someone who does.\r\n\r\n DO NOT EDIT THIS FILE!\r\n ----------------------------------------------*/\r\n\r\nvar localStorageSupported = (function() {\r\n\ttry {\r\n\t\tlocalStorage.setItem('test', 1);\r\n\t\tlocalStorage.removeItem('test');\r\n\t\tsessionStorage.setItem('test', 1);\r\n\t\tsessionStorage.removeItem('test', 1);\r\n\t\treturn true;\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n})();\r\n\r\nif (!(window.console)) {\r\n\tconsole = {\r\n\t\tlog: function() { },\r\n\t\tdebug: function() { },\r\n\t\tinfo: function() { },\r\n\t\twarn: function() { },\r\n\t\terror: function() { }\r\n\t};\r\n}\r\n\r\n// Date.now polyfill for Less than IE9\r\nDate.now = Date.now || function() { return +new Date(); };\n\r\n// Bind polyfill\r\nFunction.prototype.bind = function() {\r\n\tvar fn = this,\r\n args = Array.prototype.slice.call(arguments),\r\n object = args.shift();\r\n\treturn function() {\r\n\t\treturn fn.apply(object,\r\n args.concat(Array.prototype.slice.call(arguments)));\r\n\t};\r\n};\r\n\r\n// Array indexOf polyfill\r\nif (!Array.prototype.indexOf) {\r\n\tArray.prototype.indexOf = function(obj, start) {\r\n\t\tfor (var i = (start || 0), j = this.length; i < j; i++) {\r\n\t\t\tif (this[i] === obj) { return i; }\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n}\r\n\r\n\r\n// **************************************************************************************************\r\n// Local + session storage polyfill. Always use these methods to access localstorage because\r\n// LocalStorage is not available on older browsers, and there is some weird behavior on safari\r\n// when browsingin private mode.\r\n// **************************************************************************************************\r\nvar Storage = {\r\n\tlocal: {\r\n\t\tset: function(key, value) {\r\n\t\t\ttry {\r\n\t\t\t\tlocalStorage[key] = value;\r\n\t\t\t}\r\n\t\t\tcatch (error) {\r\n\t\t\t\tdocCookies.setItem(key, value);\r\n\t\t\t}\r\n\t\t},\r\n\t\tget: function(key) {\r\n\t\t\ttry {\r\n\t\t\t\treturn localStorage[key];\r\n\t\t\t}\r\n\t\t\tcatch (error) {\r\n\t\t\t\treturn docCookies.getItem(key);\r\n\t\t\t}\r\n\t\t},\r\n\t\tkeys: function() {\r\n\t\t\tvar lsKeys = [];\r\n\t\t\ttry {\r\n\t\t\t\tfor (var key in localStorage) {\r\n\t\t\t\t\tlsKeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t\treturn lsKeys;\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error);\r\n\r\n\t\t\t\treturn docCookies.keys();\r\n\t\t\t}\r\n\t\t},\r\n\t\tremove: function(key) {\r\n\t\t\ttry {\r\n\t\t\t\tlocalStorage.removeItem(key);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tdocCookies.removeItem(key);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsession: {\r\n\t\tset: function(key, value) {\r\n\t\t\ttry {\r\n\t\t\t\tsessionStorage[key] = value;\r\n\t\t\t}\r\n\t\t\tcatch (error) {\r\n\t\t\t\t// Clear cookie after 2 minutes in lieu of being able to clear at end of session.\r\n\t\t\t\tdocCookies.setItem(key, value, 120000);\r\n }\r\n },\r\n\r\n\t\tkeys: function() {\r\n\t\t\tvar ssKeys = [];\r\n\t\t\ttry {\r\n\t\t\t\tfor (var key in sessionStorage) {\r\n\t\t\t\t\tssKeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t\treturn ssKeys;\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error);\r\n\r\n\t\t\t\treturn docCookies.keys();\r\n\t\t\t}\r\n\t\t},\r\n\t\tget: function(key) {\r\n\t\t\ttry {\r\n\t\t\t\treturn sessionStorage[key];\r\n\t\t\t}\r\n\t\t\tcatch (error) {\r\n\t\t\t\treturn docCookies.getItem(key);\r\n\t\t\t}\r\n\t\t},\r\n\t\tremove: function(key) {\r\n\t\t\ttry {\r\n\t\t\t\tsessionStorage.removeItem(key);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tdocCookies.removeItem(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n// ES6 Promise polyfill\r\n!function(e) { function n() { } function t(e, n) { return function() { e.apply(n, arguments) } } function o(e) { if (\"object\" != typeof this) throw new TypeError(\"Promises must be constructed via new\"); if (\"function\" != typeof e) throw new TypeError(\"not a function\"); this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], s(e, this) } function i(e, n) { for (; 3 === e._state;)e = e._value; return 0 === e._state ? void e._deferreds.push(n) : (e._handled = !0, void o._immediateFn(function() { var t = 1 === e._state ? n.onFulfilled : n.onRejected; if (null === t) return void (1 === e._state ? r : u)(n.promise, e._value); var o; try { o = t(e._value) } catch (i) { return void u(n.promise, i) } r(n.promise, o) })) } function r(e, n) { try { if (n === e) throw new TypeError(\"A promise cannot be resolved with itself.\"); if (n && (\"object\" == typeof n || \"function\" == typeof n)) { var i = n.then; if (n instanceof o) return e._state = 3, e._value = n, void f(e); if (\"function\" == typeof i) return void s(t(i, n), e) } e._state = 1, e._value = n, f(e) } catch (r) { u(e, r) } } function u(e, n) { e._state = 2, e._value = n, f(e) } function f(e) { 2 === e._state && 0 === e._deferreds.length && o._immediateFn(function() { e._handled || o._unhandledRejectionFn(e._value) }); for (var n = 0, t = e._deferreds.length; n < t; n++)i(e, e._deferreds[n]); e._deferreds = null } function c(e, n, t) { this.onFulfilled = \"function\" == typeof e ? e : null, this.onRejected = \"function\" == typeof n ? n : null, this.promise = t } function s(e, n) { var t = !1; try { e(function(e) { t || (t = !0, r(n, e)) }, function(e) { t || (t = !0, u(n, e)) }) } catch (o) { if (t) return; t = !0, u(n, o) } } var a = setTimeout; o.prototype[\"catch\"] = function(e) { return this.then(null, e) }, o.prototype.then = function(e, t) { var o = new this.constructor(n); return i(this, new c(e, t, o)), o }, o.all = function(e) { var n = Array.prototype.slice.call(e); return new o(function(e, t) { function o(r, u) { try { if (u && (\"object\" == typeof u || \"function\" == typeof u)) { var f = u.then; if (\"function\" == typeof f) return void f.call(u, function(e) { o(r, e) }, t) } n[r] = u, 0 === --i && e(n) } catch (c) { t(c) } } if (0 === n.length) return e([]); for (var i = n.length, r = 0; r < n.length; r++)o(r, n[r]) }) }, o.resolve = function(e) { return e && \"object\" == typeof e && e.constructor === o ? e : new o(function(n) { n(e) }) }, o.reject = function(e) { return new o(function(n, t) { t(e) }) }, o.race = function(e) { return new o(function(n, t) { for (var o = 0, i = e.length; o < i; o++)e[o].then(n, t) }) }, o._immediateFn = \"function\" == typeof setImmediate && function(e) { setImmediate(e) } || function(e) { a(e, 0) }, o._unhandledRejectionFn = function(e) { \"undefined\" != typeof console && console && console.warn(\"Possible Unhandled Promise Rejection:\", e) }, o._setImmediateFn = function(e) { o._immediateFn = e }, o._setUnhandledRejectionFn = function(e) { o._unhandledRejectionFn = e }, \"undefined\" != typeof module && module.exports ? module.exports = o : e.Promise || (e.Promise = o) }(this);\r\n\r\n\n\r\n// ***********\r\n// UTILITIES\r\n// ***********\r\n/*\r\n\tmaps query string parameters to the urlParams object for easy access.\r\n\tURLinfo object provides formatted, easier access to commonly used properties\r\n\tof the window.location object.\r\n*/\r\nvar URLinfo = {\r\n\thref: window.location.href.toLowerCase(),\r\n\tpath: window.location.pathname.substring(1).toLowerCase(),\r\n\thost: window.location.host.toLowerCase()\r\n};\r\n\r\nvar urlParams = {};\r\n\r\n(function() {\r\n\tvar queryString = window.location.search.substring(1);\r\n\tvar params = queryString.split('&');\r\n\tvar pairs;\r\n\r\n\tif (queryString) {\r\n\t\tvar i = 0;\r\n\t\tvar numParams = params.length;\r\n\t\twhile (i < numParams) {\r\n\t\t\tpairs = params[i].split('=');\r\n\t\t\tswitch (pairs[0]) {\r\n\t\t\t\tcase 's':\r\n\t\t\t\t\tpairs[0] = 'campaign';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'r':\r\n\t\t\t\t\tpairs[0] = 'resourceRequested';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'ls':\r\n\t\t\t\t\tpairs[0] = 'leadSource';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'lt':\r\n\t\t\t\t\tpairs[0] = 'leadType';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'rt':\r\n\t\t\t\t\tpairs[0] = 'resourceType';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'rp':\r\n\t\t\t\t\tpairs[0] = 'referralPartner';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'p':\r\n\t\t\t\t\tpairs[0] = 'pardotUrl';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'c':\r\n\t\t\t\t\tpairs[0] = 'completionUrl';\r\n\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\t\tpairs[0] = 'productRequested';\r\n\t\t\t\t\t\tpairs[1] = pairs[1] ? decodeURIComponent(pairs[1]) : pairs[1];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\turlParams[pairs[0]] = pairs[1];\r\n\t\t\ti++;\r\n\t\t}\r\n\t}\r\n})();\r\n\r\n// math helpers\r\nfunction pxToPercent(pxValue, percent) {\r\n\treturn pxValue * (percent / 100);\r\n}\n\r\n\r\n// check browser + browser version\r\nvar browser = (function() {\r\n\tvar ua = navigator.userAgent, tem,\r\n\tM = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n\tif (/trident/i.test(M[1])) {\r\n\t\ttem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n\t\treturn 'IE ' + (tem[1] || '');\r\n\t}\r\n\tif (M[1] === 'Chrome') {\r\n\t\ttem = ua.match(/\\bOPR\\/(\\d+)/);\r\n\t\tif (tem !== null) {\r\n\t\t\treturn 'Opera ' + tem[1];\r\n\t\t}\r\n\t}\r\n\tM = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n\tif ((tem = ua.match(/version\\/(\\d+)/i)) !== null) {\r\n\t\tM.splice(1, 1, tem[1]);\r\n\t}\r\n\treturn M.join(' ');\r\n})();\r\n\r\n// identify legacy IE browser\r\nvar isLegacyIE = (function() {\r\n\tvar legacyStrings = ['IE 8', 'IE 7', 'IE 6', 'MSIE 8', 'MSIE 7', 'MSIE 6'];\r\n\tbrowser = browser.toUpperCase();\r\n\treturn $.inArray(browser, legacyStrings) > -1;\r\n})();\r\n\r\n\r\n// Window width detection functions\r\n\r\nvar verticalScrollPresent = function() {\r\n\treturn (document.documentElement.scrollHeight !== document.documentElement.clientHeight);\r\n};\r\n\r\nvar scrollBarWidth = (function() {\r\n\tvar $outer = $('