var SERVpopupFn = { aid: 'SERV-popupeStore', options: { popupid: 'myBannerId', template: 'modal', dismiss: ['timeout', 1], targetId: 'mytarget', css: { size: ['810px', '360px'], background: '#ffffff', closeBtColor: '#000000' }, html: 'You’re seeing this experience because you told us that you’re on prepaid. Return to the home page. Return to the home page' }, init: function () { if (SERVpopupFn.options.dismiss[0] === 'session' && sessionStorage.getItem(SERVpopupFn.options.popupid + 'currentTabOnly')) { //do nothing } else { if (document.cookie.split(';').filter(function (item) { return item.indexOf('SERV_popupDismissTimeSpan=') >= 0 }).length) { //do nothing } else { var popupHolder = SERVpopupFn.createContainer(); SERVpopupFn.position(SERVpopupFn.options, popupHolder); SERVpopupFn.applyTemplateCssOptions(SERVpopupFn.options, popupHolder); var elModal = document.querySelector('.popup-content'); if (elModal) { window.onclick = function (event) { if (event.target == elModal) { SERVpopupFn.closePopup(SERVpopupFn.options.popupid) } } } } } }, createContainer: function () { var popupDiv = document.getElementById(SERVpopupFn.options.popupid); if (!popupDiv) { var popupDiv = document.createElement('div'); popupDiv.className = 'SERVpopupeStoreHolder'; popupDiv.id = SERVpopupFn.options.popupid; popupDiv.innerHTML = SERVpopupFn.temlates(SERVpopupFn.options); } return popupDiv; }, position: function (options, popupHolder) { switch (options.template) { case 'modal': document.body.appendChild(popupHolder); break; case 'bannerTop': var element = document.getElementById('spl-nav-wrapper'); var node = document.getElementsByClassName('spl-topnav-container')[0]; element.insertBefore(popupHolder, node); break; case 'bannerFloat': var node = document.getElementById('spl-topnav-new'); node.appendChild(popupHolder); break; case 'bannerTarget': var target = document.getElementById(options.targetId); var parentTarget = target.parentNode; parentTarget.insertBefore(popupHolder, target); break; } }, temlates: function (options) { var markup = ''; switch (options.template) { case 'modal': markup = ''; break; case 'bannerTop': markup = '
<%this.html%>
'; break; case 'bannerFloat': markup = '
<%this.html%>
'; break; case 'bannerTarget': markup = '
<%this.html%>
'; break; } var finalTemplate = SERVpopupFn.templateEngine(markup, options); return finalTemplate; }, templateEngine: function (html, options) { var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g, code = 'var r=[];\n', cursor = 0, match; var add = function (line, js) { js ? (code += line.match(reExp) ? line + '\n' : 'r.push(' + line + ');\n') : (code += line != '' ? 'r.push("' + line.replace(/"/g, '\\"') + '");\n' : ''); return add; } while (match = re.exec(html)) { add(html.slice(cursor, match.index))(match[1], true); cursor = match.index + match[0].length; } add(html.substr(cursor, html.length - cursor)); code += 'return r.join("");'; return new Function(code.replace(/[\r\t\n]/g, '')).apply(options); }, openPopup: function () { SERVpopupFn.init(); }, closePopup: function (id) { var bannerTop = document.querySelector('#' + id + ' .bannerTop'); var bannerFloat = document.querySelector('#' + id + ' .bannerFloat'); if (typeof croWD != 'undefined') { croWD.utils.sendTracking(id, id + '_popup_close', ''); } if (bannerTop) { bannerTop.classList.remove('open'); setTimeout(function () { bannerTop.remove(); }, 3000); } else if (bannerFloat) { bannerFloat.classList.remove('open'); setTimeout(function () { bannerFloat.remove(); }, 3000); } else { document.querySelector('#' + id).remove(); } SERVpopupFn.dismissTimeSpan(SERVpopupFn.options); }, closeOnOff: function () { var closeBt = document.getElementsByClassName('SERV-popupeStore-close')[0]; closeBt.classList.add('off'); }, dismissTimeSpan: function (options) { var timeout = parseInt(options.dismiss[1]); switch (options.dismiss[0]) { case 'session': sessionStorage.setItem(options.popupid + 'currentTabOnly', true); break; case 'timeout': var now = new Date(); var expireTime = now.setSeconds(now.getSeconds() + timeout); now.setTime(expireTime); document.cookie = 'SERV_popupDismissTimeSpan=1;expires=' + now.toUTCString() + ';path=/'; break; } }, applyTemplateCssOptions: function (options, popupHolder) { popupHolder.innerHTML = SERVpopupFn.temlates(SERVpopupFn.options); var el = document.querySelector('#' + options.popupid + ' .' + options.template); switch (options.template) { case 'modal': el.style.backgroundColor = options.css.background; el.style.width = options.css.size[0]; el.style.height = options.css.size[1]; break; case 'bannerTop': setTimeout(function () { el.classList.add('open'); }, 500); break; case 'bannerFloat': setTimeout(function () { el.classList.add('open'); }, 500); break; case 'bannerTarget': el.style.backgroundColor = options.css.background; break; } if (options.dismiss[0] === 'off') { var closeBt = document.querySelector('.' + options.popupid + ' .SERV-popupeStore-close'); closeBt.classList.add('off'); } } }