! function() { const domain = "paymentez.com"; let listServers = ["http://localhost:3000", "http://localhost:8080", `https://ccapi-dev.${domain}`, `https://ccapi-stg.${domain}`, `https://ccapi-qa.${domain}`, `https://ccapi.${domain}`]; window.addEventListener("message", function(event) { if (new RegExp(listServers.join("|")).test(event.origin) && ("close-payment-popup" === event.data && document.querySelectorAll(".payment-checkout-modal__closeIcon")[0].click(), "resize-payment-popup" === event.data)) { let el = document, event = document.createEvent("HTMLEvents"); event.initEvent("resize", !0, !1), el.dispatchEvent(event) } }) }(), Array.prototype.forEach || (Array.prototype.forEach = function(fun) { "use strict"; if (void 0 === this || null === this || "function" != typeof fun) throw new TypeError; let t = Object(this), len = t.length >>> 0, thisArg = arguments.length >= 2 ? arguments[1] : void 0; for (let i = 0; i < len; i++) i in t && fun.call(thisArg, t[i], i, t) }), Function.prototype.bind || (Function.prototype.bind = function(oThis) { if ("function" != typeof this) throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); let aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function() {}, fBound = function() { return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))) }; return fNOP.prototype = this.prototype, fBound.prototype = new fNOP, fBound }), Array.prototype.forEach || (Array.prototype.forEach = function(callback, thisArg) { if (null === this) throw new TypeError(" this is null or not defined"); if ("function" != typeof callback) throw new TypeError(callback + " is not a function"); let O = Object(this), len = O.length >>> 0; for (let k = 0; k < len; k++) k in O && callback.call(thisArg, O[k], k, O) }), function(undefined) { "use strict"; if ("undefined" == typeof window) return; let count = 0, logEnabled = !1, hiddenCheckEnabled = !1, msgHeaderLen = "message".length, msgId = "[iFrameSizer]", msgIdLen = msgId.length, pagePosition = null, requestAnimationFrame = window.requestAnimationFrame, resetRequiredMethods = { max: 1, scroll: 1, bodyScroll: 1, documentElementScroll: 1 }, settings = {}, timer = null, logId = "Host Page", defaults = { autoResize: !0, bodyBackground: null, bodyMargin: null, bodyMarginV1: 4, /** CAMBIADO 8*/ bodyPadding: null, checkOrigin: !0, inPageLinks: !1, enablePublicMethods: !0, heightCalculationMethod: "bodyOffset", id: "iFrameResizer", interval: 32, log: !1, maxHeight: 1 / 0, maxWidth: 1 / 0, minHeight: 0, minWidth: 0, resizeFrom: "parent", scrolling: !0, sizeHeight: !0, sizeWidth: !1, warningTimeout: 5e3, tolerance: 0, widthCalculationMethod: "scroll", closedCallback: function() {}, initCallback: function() {}, messageCallback: function() { warn("MessageCallback function not defined") }, resizedCallback: function() {}, scrollCallback: function() { return !0 } }; function addEventListener(obj, evt, func) { "addEventListener" in window ? obj.addEventListener(evt, func, !1) : "attachEvent" in window && obj.attachEvent("on" + evt, func) } function removeEventListener(el, evt, func) { "removeEventListener" in window ? el.removeEventListener(evt, func, !1) : "detachEvent" in window && el.detachEvent("on" + evt, func) } function formatLogHeader(iframeId) { return msgId + "[" + function(iframeId) { let retStr = "Host page: " + iframeId; return window.top !== window.self && (retStr = window.parentIFrame && window.parentIFrame.getId ? window.parentIFrame.getId() + ": " + iframeId : "Nested host page: " + iframeId), retStr }(iframeId) + "]" } function isLogEnabled(iframeId) { return settings[iframeId] ? settings[iframeId].log : logEnabled } function log(iframeId, msg) { output("log", iframeId, msg, isLogEnabled(iframeId)) } function info(iframeId, msg) { output("info", iframeId, msg, isLogEnabled(iframeId)) } function warn(iframeId, msg) { output("warn", iframeId, msg, !0) } function output(type, iframeId, msg, enabled) { !0 === enabled && "object" == typeof window.console && console[type](formatLogHeader(iframeId), msg) } function iFrameListener(event) { function resizeIFrame() { ensureInRange("Height"), ensureInRange("Width"), syncResize(function() { setSize(messageData), setPagePosition(iframeId), callback("resizedCallback", messageData) }, messageData, "init") } function ensureInRange(Dimension) { let max = Number(settings[iframeId]["max" + Dimension]), min = Number(settings[iframeId]["min" + Dimension]), dimension = Dimension.toLowerCase(), size = Number(messageData[dimension]); log(iframeId, "Checking " + dimension + " is in range " + min + "-" + max), size < min && (size = min, log(iframeId, "Set " + dimension + " to min value")), size > max && (size = max, log(iframeId, "Set " + dimension + " to max value")), messageData[dimension] = "" + size } function getMsgBody(offset) { return msg.substr(msg.indexOf(":") + msgHeaderLen + offset) } function sendPageInfoToIframe(iframe, iframeId) { debouce(function() { trigger("Send Page Info", "pageInfo:" + function() { let bodyPosition = document.body.getBoundingClientRect(), iFramePosition = messageData.iframe.getBoundingClientRect(); return JSON.stringify({ iframeHeight: iFramePosition.height, iframeWidth: iFramePosition.width, clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0), clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0), offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10), offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10), scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset }) }(), iframe, iframeId) }, 32) } function getElementPosition(target) { let iFramePosition = target.getBoundingClientRect(); return getPagePosition(iframeId), { x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)), y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y)) } } function scrollRequestFromChild(addOffset) { let offset = addOffset ? getElementPosition(messageData.iframe) : { x: 0, y: 0 }, newPosition = { x: Number(messageData.width) + offset.x, y: Number(messageData.height) + offset.y }; log(iframeId, "Reposition requested from iFrame (offset x:" + offset.x + " y:" + offset.y + ")"), window.top !== window.self ? window.parentIFrame ? window.parentIFrame["scrollTo" + (addOffset ? "Offset" : "")](newPosition.x, newPosition.y) : warn(iframeId, "Unable to scroll to requested position, window.parentIFrame not found") : (pagePosition = newPosition, scrollTo(), log(iframeId, "--")) } function scrollTo() { !1 !== callback("scrollCallback", pagePosition) ? setPagePosition(iframeId) : unsetPagePosition() } function callback(funcName, val) { return chkCallback(iframeId, funcName, val) } let msg = event.data, messageData = {}, iframeId = null; "[iFrameResizerChild]Ready" === msg ? function() { for (let iframeId in settings) trigger("iFrame requested init", createOutgoingMsg(iframeId), document.getElementById(iframeId), iframeId) }() : msgId === ("" + msg).substr(0, msgIdLen) && msg.substr(msgIdLen).split(":")[0] in settings ? (messageData = function() { let data = msg.substr(msgIdLen).split(":"); return { iframe: settings[data[0]] && settings[data[0]].iframe, id: data[0], height: data[1], width: data[2], type: data[3] } }(), iframeId = logId = messageData.id, settings[iframeId] && (settings[iframeId].loaded = !0), ! function() { let retCode = messageData.type in { true: 1, false: 1, undefined: 1 }; return retCode && log(iframeId, "Ignoring init message from meta parent page"), retCode }() && function(iframeId) { let retBool = !0; return settings[iframeId] || (retBool = !1, warn(messageData.type + " No settings for " + iframeId + ". Message was: " + msg)), retBool }(iframeId) && (log(iframeId, "Received: " + msg), function() { let retBool = !0; return null === messageData.iframe && (warn(iframeId, "IFrame (" + messageData.id + ") not found"), retBool = !1), retBool }() && function() { let origin = event.origin, checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin; if (checkOrigin && "" + origin != "null" && !(checkOrigin.constructor === Array ? function() { let i = 0, retCode = !1; for (log(iframeId, "Checking connection is from allowed list of origins: " + checkOrigin); i < checkOrigin.length; i++) if (checkOrigin[i] === origin) { retCode = !0; break } return retCode }() : function() { let remoteHost = settings[iframeId] && settings[iframeId].remoteHost; return log(iframeId, "Checking connection is from: " + remoteHost), origin === remoteHost }())) throw new Error("Unexpected message received from: " + origin + " for " + messageData.iframe.id + ". Message was: " + event.data + ". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains."); return !0 }() && function() { switch (settings[iframeId] && settings[iframeId].firstRun && settings[iframeId] && (settings[iframeId].firstRun = !1), messageData.type) { case "close": settings[iframeId].closeRequestCallback ? chkCallback(iframeId, "closeRequestCallback", settings[iframeId].iframe) : closeIFrame(messageData.iframe); break; case "message": msgBody = getMsgBody(6), log(iframeId, "MessageCallback passed: {iframe: " + messageData.iframe.id + ", message: " + msgBody + "}"), callback("messageCallback", { iframe: messageData.iframe, message: JSON.parse(msgBody) }), log(iframeId, "--"); break; case "scrollTo": scrollRequestFromChild(!1); break; case "scrollToOffset": scrollRequestFromChild(!0); break; case "pageInfo": sendPageInfoToIframe(settings[iframeId] && settings[iframeId].iframe, iframeId), function() { function setListener(type, func) { function sendPageInfo() { settings[id] ? sendPageInfoToIframe(settings[id].iframe, id) : stop() }["scroll", "resize"].forEach(function(evt) { log(id, type + evt + " listener for sendPageInfo"), func(window, evt, sendPageInfo) }) } function stop() { setListener("Remove ", removeEventListener) } let id = iframeId; setListener("Add ", addEventListener), settings[id] && (settings[id].stopPageInfo = stop) }(); break; case "pageInfoStop": settings[iframeId] && settings[iframeId].stopPageInfo && (settings[iframeId].stopPageInfo(), delete settings[iframeId].stopPageInfo); break; case "inPageLink": ! function(location) { let hash = location.split("#")[1] || "", hashData = decodeURIComponent(hash), target = document.getElementById(hashData) || document.getElementsByName(hashData)[0]; target ? function() { let jumpPosition = getElementPosition(target); log(iframeId, "Moving to in page link (#" + hash + ") at x: " + jumpPosition.x + " y: " + jumpPosition.y), pagePosition = { x: jumpPosition.x, y: jumpPosition.y }, scrollTo(), log(iframeId, "--") }() : window.top !== window.self ? window.parentIFrame ? window.parentIFrame.moveToAnchor(hash) : log(iframeId, "In page link #" + hash + " not found and window.parentIFrame not found") : log(iframeId, "In page link #" + hash + " not found") }(getMsgBody(9)); break; case "reset": resetIFrame(messageData); break; case "init": resizeIFrame(), callback("initCallback", messageData.iframe); break; default: resizeIFrame() } var msgBody }())) : info(iframeId, "Ignored: " + msg) } function chkCallback(iframeId, funcName, val) { let func = null, retVal = null; if (settings[iframeId]) { if ("function" != typeof(func = settings[iframeId][funcName])) throw new TypeError(funcName + " on iFrame[" + iframeId + "] is not a function"); retVal = func(val) } return retVal } function closeIFrame(iframe) { let iframeId = iframe.id; log(iframeId, "Removing iFrame: " + iframeId), iframe.parentNode && iframe.parentNode.removeChild(iframe), chkCallback(iframeId, "closedCallback", iframeId), log(iframeId, "--"), delete settings[iframeId] } function getPagePosition(iframeId) { null === pagePosition && log(iframeId, "Get page position: " + (pagePosition = { x: window.pageXOffset !== undefined ? window.pageXOffset : document.documentElement.scrollLeft, y: window.pageYOffset !== undefined ? window.pageYOffset : document.documentElement.scrollTop }).x + "," + pagePosition.y) } function setPagePosition(iframeId) { null !== pagePosition && (window.scrollTo(pagePosition.x, pagePosition.y), log(iframeId, "Set page position: " + pagePosition.x + "," + pagePosition.y), unsetPagePosition()) } function unsetPagePosition() { pagePosition = null } function resetIFrame(messageData) { log(messageData.id, "Size reset requested by " + ("init" === messageData.type ? "host page" : "iFrame")), getPagePosition(messageData.id), syncResize(function() { setSize(messageData), trigger("reset", "reset", messageData.iframe, messageData.id) }, messageData, "reset") } function setSize(messageData) { function chkZero(dimension) { hiddenCheckEnabled || "0" !== messageData[dimension] || (hiddenCheckEnabled = !0, log(iframeId, "Hidden iFrame detected, creating visibility listener"), function() { function checkIFrames() { function checkIFrame(settingId) { function chkDimension(dimension) { return "0px" === (settings[settingId] && settings[settingId].iframe.style[dimension]) } settings[settingId] && null !== settings[settingId].iframe.offsetParent && (chkDimension("height") || chkDimension("width")) && trigger("Visibility change", "resize", settings[settingId].iframe, settingId) } for (let settingId in settings) checkIFrame(settingId) } function mutationObserved(mutations) { log("window", "Mutation observed: " + mutations[0].target + " " + mutations[0].type), debouce(checkIFrames, 16) } let MutationObserver = window.MutationObserver || window.WebKitMutationObserver; MutationObserver && function() { let target = document.querySelector("body"); new MutationObserver(mutationObserved).observe(target, { attributes: !0, attributeOldValue: !1, characterData: !0, characterDataOldValue: !1, childList: !0, subtree: !0 }) }() }()) } function processDimension(dimension) { ! function(dimension) { messageData.iframe.style[dimension] = messageData[dimension] + "px", log(messageData.id, "IFrame (" + iframeId + ") " + dimension + " set to " + messageData[dimension] + "px") }(dimension), chkZero(dimension) } let iframeId = messageData.iframe.id; settings[iframeId] && (settings[iframeId].sizeHeight && processDimension("height"), settings[iframeId].sizeWidth && processDimension("width")) } function syncResize(func, messageData, doNotSync) { doNotSync !== messageData.type && requestAnimationFrame ? (log(messageData.id, "Requesting animation frame"), requestAnimationFrame(func)) : func() } function trigger(calleeMsg, msg, iframe, id, noResponseWarning) { let errorShown = !1; id = id || iframe.id, settings[id] && (iframe && "contentWindow" in iframe && null !== iframe.contentWindow ? function() { let target = settings[id] && settings[id].targetOrigin; log(id, "[" + calleeMsg + "] Sending msg to iframe[" + id + "] (" + msg + ") targetOrigin: " + target), iframe.contentWindow.postMessage(msgId + msg, target) }() : warn(id, "[" + calleeMsg + "] IFrame(" + id + ") not found"), noResponseWarning && settings[id] && settings[id].warningTimeout && (settings[id].msgTimeout = setTimeout(function() { !settings[id] || settings[id].loaded || errorShown || (errorShown = !0, warn(id, "IFrame has not responded within " + settings[id].warningTimeout / 1e3 + " seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ingored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.")) }, settings[id].warningTimeout))) } function createOutgoingMsg(iframeId) { return iframeId + ":" + settings[iframeId].bodyMarginV1 + ":" + settings[iframeId].sizeWidth + ":" + settings[iframeId].log + ":" + settings[iframeId].interval + ":" + settings[iframeId].enablePublicMethods + ":" + settings[iframeId].autoResize + ":" + settings[iframeId].bodyMargin + ":" + settings[iframeId].heightCalculationMethod + ":" + settings[iframeId].bodyBackground + ":" + settings[iframeId].bodyPadding + ":" + settings[iframeId].tolerance + ":" + settings[iframeId].inPageLinks + ":" + settings[iframeId].resizeFrom + ":" + settings[iframeId].widthCalculationMethod } function setupIFrame(iframe, options) { let iframeId = function(iframeId) { return logId = iframeId, "" === iframeId && (iframe.id = iframeId = function() { let id = options && options.id || defaults.id + count++; return null !== document.getElementById(id) && (id += count++), id }(), logEnabled = (options || {}).log, logId = iframeId, log(iframeId, "Added missing iframe ID: " + iframeId + " (" + iframe.src + ")")), iframeId }(iframe.id); var msg; iframeId in settings && "iFrameResizer" in iframe ? warn(iframeId, "Ignored iFrame, already setup.") : (! function(options) { var remoteHost; options = options || {}, settings[iframeId] = { firstRun: !0, iframe: iframe, remoteHost: iframe.src.split("/").slice(0, 3).join("/") }, function(options) { if ("object" != typeof options) throw new TypeError("Options is not an object") }(options), function(options) { for (let option in defaults) defaults.hasOwnProperty(option) && (settings[iframeId][option] = options.hasOwnProperty(option) ? options[option] : defaults[option]) }(options), settings[iframeId] && (settings[iframeId].targetOrigin = !0 === settings[iframeId].checkOrigin ? "" === (remoteHost = settings[iframeId].remoteHost) || "file://" === remoteHost ? "*" : remoteHost : "*") }(options), function() { switch (log(iframeId, "IFrame scrolling " + (settings[iframeId] && settings[iframeId].scrolling ? "enabled" : "disabled") + " for " + iframeId), iframe.style.overflow = !1 === (settings[iframeId] && settings[iframeId].scrolling) ? "hidden" : "auto", settings[iframeId] && settings[iframeId].scrolling) { case !0: iframe.scrolling = "yes"; break; case !1: iframe.scrolling = "no"; break; default: iframe.scrolling = settings[iframeId] ? settings[iframeId].scrolling : "no" } }(), function() { function addStyle(style) { 1 / 0 !== settings[iframeId][style] && 0 !== settings[iframeId][style] && (iframe.style[style] = settings[iframeId][style] + "px", log(iframeId, "Set " + style + " = " + settings[iframeId][style] + "px")) } function chkMinMax(dimension) { if (settings[iframeId]["min" + dimension] > settings[iframeId]["max" + dimension]) throw new Error("Value for min" + dimension + " can not be greater than max" + dimension) } chkMinMax("Height"), chkMinMax("Width"), addStyle("maxHeight"), addStyle("minHeight"), addStyle("maxWidth"), addStyle("minWidth") }(), "number" != typeof(settings[iframeId] && settings[iframeId].bodyMargin) && "0" !== (settings[iframeId] && settings[iframeId].bodyMargin) || (settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin, settings[iframeId].bodyMargin = settings[iframeId].bodyMargin + "px"), msg = createOutgoingMsg(iframeId), addEventListener(iframe, "load", function() { trigger("iFrame.onload", msg, iframe, undefined, !0), function() { let firstRun = settings[iframeId] && settings[iframeId].firstRun, resetRequertMethod = settings[iframeId] && settings[iframeId].heightCalculationMethod in resetRequiredMethods; !firstRun && resetRequertMethod && resetIFrame({ iframe: iframe, height: 0, width: 0, type: "init" }) }() }), trigger("init", msg, iframe, undefined, !0), Function.prototype.bind && settings[iframeId] && (settings[iframeId].iframe.iFrameResizer = { close: closeIFrame.bind(null, settings[iframeId].iframe), resize: trigger.bind(null, "Window resize", "resize", settings[iframeId].iframe), moveToAnchor: function(anchor) { trigger("Move to anchor", "moveToAnchor:" + anchor, settings[iframeId].iframe, iframeId) }, sendMessage: function(message) { trigger("Send Message", "message:" + (message = JSON.stringify(message)), settings[iframeId].iframe, iframeId) } })) } function debouce(fn, time) { null === timer && (timer = setTimeout(function() { timer = null, fn() }, time)) } function resizeIFrames(event) { log("window", "Trigger event: " + event), debouce(function() { sendTriggerMsg("Window " + event, "resize") }, 16) } function tabVisible() { "hidden" !== document.visibilityState && (log("document", "Trigger event: Visiblity change"), debouce(function() { sendTriggerMsg("Tab Visable", "resize") }, 16)) } function sendTriggerMsg(eventName, event) { for (let iframeId in settings) settings[iframeId = iframeId] && "parent" === settings[iframeId].resizeFrom && settings[iframeId].autoResize && !settings[iframeId].firstRun && trigger(eventName, event, document.getElementById(iframeId), iframeId); var iframeId } function factory() { function init(options, element) { element && (! function() { if (!element.tagName) throw new TypeError("Object is not a valid DOM element"); if ("IFRAME" !== element.tagName.toUpperCase()) throw new TypeError("Expected