mmRequestCallbacks[1]({"Scripts":[],"Campaigns":[{"Name":"T001_Opt-In-Radio-Button","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.13","PagePrefix":"MDU1NTM2","Scripts":[{"Name":"Qualifying","Type":"script","Attrs":{"type":"text/javascript"},"Data":"function isQualified() {\n      var def = Deferred();\n      var fail = false;\n      setTimeout(function() {\n          fail = true;\n      }, 3000)\n      when(function() {\n        // Insert after the \"return\" the elements you are checking for on page.\n        // Those elements must be present for the script to\n        // qualify the user within the campaign.\n        // In this example, we wait for jQuery and an specific element to be on the page.\n          return document.querySelector('#contactus');\n      }, function() {\n          return fail;\n      }).done(function() {\n          def.resolve();\n      }).fail(function() {\n          def.reject();\n      });\n      return def.promise();\n  };\n\ncampaign.scope.qualificationRules = campaign.scope.qualificationRules || [];\ncampaign.scope.qualificationRules.push(isQualified);","Order":5000,"HighLevelApiVersion":"1.13"},{"Name":"Google Universal","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n    \"trackerName\": \"\",\n    \"customDimensions\": \"\"\n}\ntry { if (window.self !== window.top) { return; } }\ncatch (e) { return; }\ncampaign.events.on('lastRequest', function() {\n    if (!isNewGeneration()) { return; }\n    waitForGA(function() {\n        if (config.customDimensions) { setDimension(); }\n        sendEvent();\n    });\n});\nfunction isNewGeneration() {\n    var experienceData = getExperienceData();\n    if (campaign.getData('GoogleUniversalExperience') === experienceData) {\n        return false;\n    }\n    campaign.setData('GoogleUniversalExperience', experienceData);\n    return true;\n}\nfunction waitForGA(callback) {\n    var timeout = false;\n    when(function(){\n        return typeof window[window['GoogleAnalyticsObject']] === 'function';\n    }, function(){\n        return timeout;\n    }).done(function(){\n        callback();\n    });\n    setTimeout(function(){\n        timeout = true;\n    }, 10e3);\n}\nfunction setDimension(){\n    var set = (config.trackerName ? config.trackerName + '.' : '') + 'set';\n    var name = campaign.getName() + (isProduction() ? '' : ' QA');\n    window[window['GoogleAnalyticsObject']](set, 'dimension' + config.customDimensions, name + '=' + getExperienceData());\n}\nfunction sendEvent(){\n    var send = (config.trackerName ? config.trackerName + '.' : '') + 'send';\n    var category = 'Maxymiser' + (isProduction() ? '': ' QA');\n    var action = campaign.getName();\n    window[window['GoogleAnalyticsObject']](send, 'event', category, action, getExperienceData(), {'nonInteraction': 1});\n}\nfunction getExperienceData(){\n    var experience = campaign.getExperience();\n    var variants = [];\n    for(var element in experience) {\n        variants.push(element + ':' + experience[element]);\n    }\n    return variants.join('|');\n}\nfunction isProduction(){\n    if (location.search.toLowerCase().indexOf('mmcore.') > -1) {\n        return false;\n    }\n    function removeExpiration(v) {\n        return v ? v.replace(/^\\d\\|/, '') : '';\n    }\n    var storage = mmsystem.getConfig().storageType;\n    if (storage === 'cookie-key-value' || storage === 'cookie-key-value-secure') {\n        if (/mmapi.p.cfgid/i.test(document.cookie) || /mmapi.p.un/i.test(document.cookie)) {\n            return false;\n        } else {\n            return true;\n        }\n    }\n    var mmcoreP = readCookieStorage('mmcore.store.p.') || {};\n    var mmcoreS = readCookieStorage('mmcore.store.s.') || {};\n    var mmapiP = readCookieStorage('mmapi.store.p.') || {};\n    var mmapiS = readCookieStorage('mmapi.store.s.') || {};\n    var storageTypes = [mmcoreP, mmcoreS, mmapiP, mmapiS];\n    var storageKeys = {\n        'mmparams.p': 1,\n        'mmparams.d': 1\n    };\n    var utils = {\n        'un': 1,\n        'cfgID': 1,\n        'pruh': 1\n    };\n    for (var l = storageTypes.length; l--;) {\n        var storageType = storageTypes[l];\n        for (var storageKey in (storageKeys || {})) {\n            for (var util in (utils || {})) {\n                if ((storageType[storageKey] || {})[util]) {\n                    return false;\n                }\n            }\n        }\n    }\n    function readCookieStorage(name) {\n        var res = {},\n            whole = '',\n            i = 0,\n            chunk;\n        while ((chunk = getCookie(name + i++))) {\n            whole += chunk;\n        }\n        whole = decodeURIComponent(whole);\n        try {\n            res = JSON.parse(whole);\n        } catch (e) {}\n        return res;\n    }\n    function getCookie(name) {\n        var r = new RegExp('(?:^|; )' + encodeURIComponent(name).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g, '\\\\$1') + '=([^;]+)'),\n            value = (document.cookie.match(r) || ['', ''])[1];\n        return value;\n    }\n    return true;\n}","Order":5000,"HighLevelApiVersion":"1.13"},{"Name":"formSub_actionScript","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//insert script code here\n\nvar fail = false;\nsetTimeout(function(){\n  fail = true;\n}, 3000);\n\nwhen(/*d1*/function(){\n  return document.querySelector('#ctl00_MainContent_ctl00_ctl00_ValidationSummaryAYS') || document.querySelector('.aysIntro') || document.querySelector('.ays-end p');\n}, function(){\n  return fail;\n})\n.done(function(){\n  //document.querySelector('.ays-end p').innerText.includes('Thank you')\n        var checkboxSelected = visitor.getData('checkbox');\n        var experience = visitor.getData('exp');\n        var radioButtonSelected = visitor.getData('radio');\n                if(radioButtonSelected === 'yes' || checkboxSelected === 'yes' ){\n                      actions.send('OptIn',1,\"yes\");\n                      visitor.clearData('radio');\n                      visitor.clearData('checkbox');\n                }else if(radioButtonSelected === 'no'){\n                      actions.send('OptIn',1,\"no\");\n                      visitor.clearData('radio');\n                 \t  visitor.clearData('checkbox');\n                }else{\n                      actions.send('OptIn',1,\"NotSelected\");\n                }\n})\n","Order":5000,"HighLevelApiVersion":"1.13"},{"Name":"actionScript","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//insert script code here\n  var fail = false;\nsetTimeout(function(){\n  fail = true;\n}, 3000);\n\nwhen(/*d1*/function(){\n  return document.querySelector('#ctl00_MainContent_ctl00_ctl00_CheckboxMarketingOptIn') || document.querySelector('#mm-radio-no') ;\n}, function(){\n  return fail;\n})\n.done(function(){\n\t var radioYes = document.querySelector('#mm-radio-yes')\n     var radioNo = document.querySelector('#mm-radio-no')\n     var checkbox = document.querySelector('#ctl00_MainContent_ctl00_ctl00_CheckboxMarketingOptIn')\n     var submitBtn = document.querySelector('#ctl00_MainContent_ctl00_ctl00_ButtonSubmit');\n     \t\t\tcheckbox.addEventListener('click',function(){\n                      visitor.clearData('checkbox')\n                      if(checkbox.checked === true){\n                         visitor.setData('checkbox','yes');\n                      }else{\n                          visitor.clearData('checkbox')\n                      }\n                })         \n})\n","Order":5000,"HighLevelApiVersion":"1.13"},{"Name":"Rendering","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var config = {\n    \"selectorsToHide\": \"\",\n    \"useSecondRequest\": true,\n    \"elements\": null\n};\n\nif (config.useSecondRequest) {\n    activateCampaign();\n} else {\n    render();\n}\n\ncampaign.events.on('urlChange', activateCampaign);\n\nfunction activateCampaign() {\n    if (isRenderRequired()) {\n        var selectorsToHide = getSelectorsToHide();  \n        hide(selectorsToHide);\n        when(isVisitorQualified())\n            .done(function () {\n                renderer.getContent().always(function () {\n                    render();\n                    show(selectorsToHide);\n                })\n            })\n            .fail(function () {\n                show(selectorsToHide);\n            });\n    }\n}\n\nfunction isRenderRequired() {\n    if (config.elements === null) { return true; }\n\n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction hide(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.hide(selectorsToHide, 'ucb');\n    }\n}\n\nfunction show(selectorsToHide) {\n    if (selectorsToHide) {\n        renderer.show('ucb');\n    }\n}\n\nfunction getSelectorsToHide() {\n    if (config.elements === null) { return config.selectorsToHide; }\n    \n    var url = window.deproxy ? window.deproxy(window.location).href : window.location.href;\n    var selectors = \"\";\n    for (var i = 0; i < config.elements.length; i++) {\n        if (isUrlMatched(url, config.elements[i].includedUrls, config.elements[i].excludedUrls)) {\n            selectors += \" \" + config.elements[i].selectors;\n        }\n    }\n    return selectors;\n}\n\nfunction render() {\n    renderCss();\n    renderJs();\n    campaign.events.trigger('lastRequest');\n}\n\nfunction renderJs() {\n    var elementsToRender = campaign.getElements();\n    for (var i in elementsToRender) {\n        if (elementsToRender.hasOwnProperty(i)) {\n            var element = elementsToRender[i];\n            renderer.runVariantJs(element);\n        }\n    }\n}\n\nfunction renderCss() {\n    var styles = campaign.getStyles();\n    if (styles.length) {\n        dom.addCss(styles);\n    }\n}\n\nfunction isVisitorQualified() {\n    if (window.isCampaignDesignMode) {\n        return true;\n    }\n    var rules = campaign.scope.qualificationRules || [];\n    var results = [];\n    for (var i = 0; i < rules.length; i++) {\n        var result = rules[i]();\n        if (typeof result.then !== 'function') {\n            result = Deferred()[result ? 'resolve' : 'reject']().promise();\n        }\n        results.push(result);\n    }\n    return when.apply(this, results);\n}\n\nfunction isUrlMatched(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n}\n\nfunction isMasksMatch(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n    var matchedMasks = 0;\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy({\n                href: mask\n            }).href)) {\n            matchedMasks = matchedMasks + 1;\n        }\n    };\n    return matchedMasks > 0;\n}\n\nfunction isMaskMatch(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n}","Order":5999,"HighLevelApiVersion":"1.13"},{"Name":"C1364035818","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*configuration block begin*/\nvar config = {\n\t\"actionName\": \"OptIn\",\n\t\"selectorsDefault\": {\n\t\t\"\": {\n\t\t\t\"value\": 1,\n\t\t\t\"attr\": \"default\"\n\t\t}\n\t},\n\t\"selectorsAfter\": {},\n\t\"urls\": null\n};\n/*configuration block end*/\n\nvar domReadyDeferred = Deferred();\nevents.domReady(function(){\n    domReadyDeferred.resolve();\n});\n\nvar isUrlMatched = function(url, includedUrls, excludedUrls) {\n    var isIncluded = isMasksMatch(url, includedUrls);\n    var isExcluded = isMasksMatch(url, excludedUrls);\n    return isIncluded && !isExcluded;\n};\n\nvar isMasksMatch = function(url, masks) {\n    if (!url) {\n        return false;\n    }\n    url = url.toLowerCase();\n\n    for (var i = 0; i < masks.length; i++) {\n        var mask = masks[i].toLowerCase();\n        if (isMaskMatch(url, window.deproxy ? window.deproxy({\n            href: mask\n        }).href : mask)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar isMaskMatch = function(url, originalMask) {\n    var mask = '^';\n    var pos = 0;\n    while (originalMask.length > pos) {\n        var char = originalMask[pos];\n        if (char == '*') {\n            mask = mask + '.*';\n            pos = pos + 1;\n        } else if (char == '(') {\n            var posClosing = originalMask.indexOf(')', pos + 1);\n            var posNextOpening = originalMask.indexOf('(', pos + 1);\n            if (posClosing > pos && (posNextOpening < 0 || posClosing < posNextOpening)) {\n                mask = mask + '.*';\n                pos = posClosing + 1;\n            } else {\n                return false;\n            }\n        } else {\n            mask = mask + char;\n            pos = pos + 1;\n        }\n    }\n    mask = mask + '$';\n    mask = mask.replace('?', \"\\\\?\");\n    var r = new RegExp(mask);\n    return r.test(url);\n};\n\nvar waitForElement = function(elementSelector, timeoutValue){\n    var elementDeferred = Deferred();\n    var timeout = false;\n    domReadyDeferred.promise().then(function(){\n        setTimeout(function () {\n            timeout = true;\n        }, timeoutValue);\n    });\n\n    renderer.when(function(){\n        return timeout || dom.find(elementSelector).length;\n    })\n        .done(function(){ elementDeferred.resolve(); })\n        .fail(function(){ elementDeferred.reject(); });\n\n    return elementDeferred.promise();\n};\n\nvar getActionElement = function(selector, data) {\n    var deferred = Deferred();\n\n    if (selector) {\n        waitForElement(selector, 2000)\n            .done(function(){\n                var elements = dom.find(selector);\n                if (elements.length) {\n                    var elementData = {\n                        selector: selector,\n                        data: data\n                    };\n                    deferred.resolveWith(this, [elements[0], elementData]);\n                } else {\n                    deferred.reject();\n                }\n            })\n            .fail(function(){\n                deferred.reject();\n            });\n    } else {\n        deferred.reject();\n    }\n\n    return deferred.promise();\n};\n\nvar getCurrentUrl = function() {\n    return window.deproxy\n        ? window.deproxy(window.location).href\n        : window.location.href;\n};\n\nvar isActionRequired = function() {\n    return !config.urls\n        ? true\n        : !!isUrlMatched(\n            getCurrentUrl(),\n            config.urls.includedUrls,\n            config.urls.excludedUrls);\n};\n\nvar trackClicksAction = function(selectors) {\n    if (isActionRequired()) {\n        for(var selector in selectors){\n            getActionElement(selector, selectors[selector]).done(function (element, elementData){\n                if(element && (!element.attachedActions || !element.attachedActions[config.actionName])){\n                    actions.trackClicks(elementData.selector, {name: config.actionName, value:elementData.data.value, attribute:elementData.data.attr});\n                    if (!element.attachedActions) { element.attachedActions = {}; }\n                    element.attachedActions[config.actionName] = true;\n                }\n            });\n        }\n    }\n};\n\ntrackClicksAction(config.selectorsDefault);\n\ncampaign.events.on('urlChange', function(){ trackClicksAction(config.selectorsDefault); });\n\ncampaign.events.variantJsExecuted(function(elementName, variantName){\n    var selectorsAfter = (config.selectorsAfter[elementName] || {})[variantName.toLowerCase()] || {};\n    trackClicksAction(selectorsAfter);\n});\n","Order":4000,"HighLevelApiVersion":"1.13"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"nycvwcgus06","Expiration":365},{"Name":"pd","IsGlobal":false,"Value":"-115999029|AQAAAApVAwCimaMAwxAYXwABEQABQj0LWFgBAC2HpR/DJ9ZILYelH8Mn1kgAAAAA//////////8ABkRpcmVjdAHDEAEAAAAAAAAAAAD///////////////8AAAEA8NgAAFwAAAABRQ==","Expiration":365}],"SiteInfo":[{"Url":"gallup.com","ID":1557}],"SystemData":[{"Version":"1.0","RequestId":1,"ResponseId":1}],"GenInfo":{},"ServerAttributes":{},"Iteration":"QildTEKyKV5Kg4Un8ctJ1y_xvyw","Packages":["mmpackage-1.13.js"]});