
/* Controltag Loader for Bell Media */
(function(){
  var debugging = /kxdebug/.test(location);
  var log = function() {
    // It's a flag, so if it's there, then it means debug.
    debugging && window.console && console.log([].slice.call(arguments).join(' '));
  };

  var load = function(url, callback) {
    log('Loading script from:', url);
    var node = document.createElement('script');
    node.async = true;  // This is just to be friendly.
    node.src = url;

    // Connect to both in case we're in older IE.
    node.onload = node.onreadystatechange = function() {
      var state = node.readyState;
      if (!callback.done && (!state || /loaded|complete/.test(state))) {
        log('Script loaded from:', url);
        callback.done = true;  // Mark the callback, so we don't load it twice on accident.
        callback();
      }
    };

    // Fetch the first script element, so we can insert the
    // controltag before it. There *must* be at least one
    // script element, or this code would never be called
    var sibling = document.getElementsByTagName('script')[0];
    sibling.parentNode.insertBefore(node, sibling);
  };

  // ControlTag simply crashes when opening a website from Twitter browser on
  // iOS, temporarily disable CT when Twitter for iPhone is detected until they
  // fix this (works fine with other twitter client though)
  if (/Twitter for iPhone/.test(window.navigator.userAgent || '')) return;

  var config = {"partner_segment_map": {}, "context_terms": [], "tags": [{"content": "<script type=\"text/javascript\">\r\n(function(require) {\r\n    var config = require('config')();\r\n    var store = require('store');\r\n    var _ = require('util');\r\n    var segments;\r\n\r\n    function handleUserDataResponse(r) {\r\n        // Handle the response as usual.\r\n        segments.handleUserDataResponse(r);\r\n\r\n        // Override localStorage.kxuser with a case-insensitive value for DFP premium.\r\n        // This will get read by the interchange direct snippet for Krux.user\r\n        // and Krux.dfpKeyValues\r\n        if(r.kuid_long) {\r\n            store.set('user', r.kuid_long, store.DAYS*30);\r\n        }\r\n    }\r\n\r\n    function useFirstPartyCookie() {\r\n        // Older versions of CT don't have feature.\r\n        try {\r\n            var feature = Krux('require:feature');\r\n            // If they don't have 3rd party cookies, then we rely on 1st party.\r\n            return !feature.hasThirdPartyCookies();\r\n        } catch (e){\r\n            return false;\r\n        }\r\n    }\r\n\r\n    // Our own fetch uses our own handleResponse\r\n    function fetch() {\r\n        var data = {pub: _.get('pubid')};\r\n\r\n        // Skip \r\n        if (useFirstPartyCookie() && Krux('get', 'user')) {\r\n            data._kuid = Krux('get', 'user');\r\n        }\r\n        var options = {\r\n            url: _.get('url_userdata'),\r\n            data: data,\r\n            callback: 'kxjsonp_userdata',\r\n            done: handleUserDataResponse\r\n        };\r\n\r\n        // SEE: SCRUM-1129\r\n        var orgUserId = _.get('org_user_id');\r\n        if(orgUserId) {\r\n            options.data._kuid = orgUserId;\r\n        }\r\n\r\n        var fpId, fp;\r\n        var useFingerprint = config.get('params.fingerprint', false);\r\n        if (useFingerprint) {\r\n            fpId = _.get('fp_id');\r\n            options.data.kxfp = fp = _.get('fp');\r\n            // Ensure we don't send the fingerprint as the id (it mascarades in fallback mode)\r\n            if (fpId && fpId.length !== fp.length) {\r\n                options.data.kfuid = fpId;\r\n            }\r\n        }\r\n\r\n        if(!segments.readTechFromStore()) {\r\n            options.data.technographics = 1;\r\n        }\r\n        require('http').jsonp(options);\r\n    }\r\n\r\n    if (!useFirstPartyCookie()) {\r\n        Krux('set', 'user', Krux('require:store').get('kuid'));\r\n    }\r\n\r\n    if(!store.get('segWait')) {\r\n        // disable segments.fetch and use our own\r\n        _.set('segWait', 1, store.MINUTES*5);\r\n        _.onOnce('dom:load', fetch);\r\n        _.fire('user_data_fetch_scheduled');\r\n    }\r\n\r\n    // Finally, require segments as usual.\r\n    segments = require('segments');\r\n}(Krux.require));\r\n</script>", "target": "", "target_action": null, "require": "", "docwrite": null, "template_replacement": 1, "execution_results": {"onloadSafe": true, "docwrite": false, "listeners": []}, "tier": 2, "internal": 1, "content_type": "html", "timing": "asap", "method": "document", "type": "publisher", "id": 48806, "name": "Load Segments V4 (auto upgrade)"}, {"content": "<img src=\"//adadvisor.net/adscores/g.js?sid=9212244187&_kdpid=2111c0af-fc3a-446f-ab07-63aa74fbde8e\" />", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 22, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "data provider", "id": 22310, "name": "AdAdvisor S2S provider tag"}, {"content": "<script>\r\n(function() {\r\n  var sniff;\r\n  try {\r\n    sniff = Krux('require:sniff');\r\n  } catch(e) {} \r\n\r\n  // krxd.nexac.com throws SSL cert errors so only fire this tag\r\n  // on HTTP pages\r\n  if (location.protocol == \"http:\") {\r\n      var kuid = Krux('get', 'user');\r\n      if (kuid) {\r\n         var u = \"http://krxd.nexac.com/dlx.gif?_kdpid=2dd640a6-6ebd-4d4f-af30-af8baa441a0d&kuid=\" + kuid;\r\n         (new Image()).src = u;\r\n         var di = \"http://beacon.krxd.net/event.gif?event_id=Jo7PIOui&type=regular&event_type=cnt\";\r\n         (new Image()).src = di;   \r\n      }\r\n      else if (sniff && sniff.browser === sniff.Browsers.SAFARI) {\r\n        var u = \"http://krxd.nexac.com/dlx.gif?_kdpid=2dd640a6-6ebd-4d4f-af30-af8baa441a0d&browser=safari&kuid=\" + kuid;\r\n        (new Image()).src = u;\r\n      }\r\n   } else {\r\n       var di = \"https://beacon.krxd.net/event.gif?event_id=Jo7PIOui&type=secure&event_type=cnt\";\r\n       (new Image()).src = di;   \r\n   }\r\n})();\r\n</script>", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 8, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "data provider", "id": 22311, "name": "DataLogix provider tag"}, {"content": "<script>\r\n(function(){\r\n  var kuid = Krux('get', 'user');\r\n  if (kuid) {\r\n      var liveramp_url = 'https://idsync.rlcdn.com/379708.gif?partner_uid=' + kuid;\r\n      var i = new Image();\r\n      i.src = liveramp_url;      \r\n  }\r\n})();\r\n</script>", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 21, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "data provider", "id": 24630, "name": "Acxiom S2S provider tag"}, {"content": "<script type=\"text/javascript\">Krux('social.init');</script>", "target": null, "target_action": "append", "require": "", "docwrite": null, "internal": 1, "template_replacement": 1, "execution_results": null, "tier": 1, "library_tag_config": {}, "content_type": "html", "timing": "onload", "method": "document", "type": "library", "id": 21148, "name": "Krux Track Social"}, {"content": "<script>\r\n// this tag is intentionally blank\r\n</script>", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 6, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "data provider", "id": 21149, "name": "Technographic Data provider tag"}, {"content": "", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 14, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "id": 21150, "name": "Krux Geographic Data provider tag"}, {"content": "<script>\r\n  Krux('require:http').pixel({\r\n    url: \"//s.ixiaa.com/digi/C726AB29-0470-440B-B8D2-D552CED3A3DC/a.gif\"\r\n  });\r\n</script>", "target": null, "target_action": "append", "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 28, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "data provider", "id": 29355, "name": "IXI Digital (Open Market) provider tag"}, {"content": "<script>\r\n\r\n(function() {\r\n\r\n// Using Omniture channel to produce page attribute omniture_channel\r\nKrux('set', 'page_attr_omniture_channel', typeof window.s =='object' && window.s['channel']);\r\n\r\n// Using Omniture eVar3 to produce page attribute omniture_evar3\r\nKrux('set', 'page_attr_omniture_evar3', typeof window.s =='object' && window.s['eVar3']);\r\n\r\n// Using Omniture eVar5 to produce page attribute omniture_evar5\r\nKrux('set', 'page_attr_omniture_evar5', typeof window.s =='object' && window.s['eVar5']);\r\n\r\n// Using Omniture prop7 to produce page attribute omniture_prop7\r\nKrux('set', 'page_attr_omniture_prop7', typeof window.s =='object' && window.s['prop7']);\r\n\r\n// Using Omniture prop8 to produce page attribute omniture_prop8\r\nKrux('set', 'page_attr_omniture_prop8', typeof window.s =='object' && window.s['prop8']);\r\n\r\n// Using Omniture prop9 to produce page attribute omniture_prop9\r\nKrux('set', 'page_attr_omniture_prop9', typeof window.s =='object' && window.s['prop9']);\r\n\r\n// Using Omniture prop10 to produce page attribute omniture_prop10\r\nKrux('set', 'page_attr_omniture_prop10', typeof window.s =='object' && window.s['prop10']);\r\n\r\n// Using Omniture eVar24 to produce page attribute omniture_evar24\r\nKrux('set', 'page_attr_omniture_evar24', typeof window.s =='object' && window.s['eVar24']);\r\n\r\n// url_domain and host \r\nKrux('scrape',{ \r\n          \"page_attr_host\": {url_host: \"3\"},\r\n  \t  \"page_attr_domain\": {url_domain: 2} }\r\n);\r\n\r\n// Using Meta keywords to produce page attribute keywords\r\nKrux('scrape', { \"page_attr_keywords\": {meta_name: \"keywords\"}} );\r\n\r\n// Using UrlPath attributes\r\nKrux('scrape', { \"page_attr_url_path_1\": {url_path: \"1\"}} );\r\nKrux('scrape', { \"page_attr_url_path_2\": {url_path: \"2\"}} );\r\nKrux('scrape', { \"page_attr_url_path_3\": {url_path: \"3\"}} );\r\n\r\n\r\n})();\r\n</script>", "target": "", "target_action": null, "require": "", "docwrite": null, "template_replacement": 1, "execution_results": {"onloadSafe": true, "docwrite": false, "listeners": []}, "tier": 1, "internal": 1, "content_type": "html", "timing": "onload", "method": "document", "type": "publisher", "id": 22469, "name": "Bell DTC"}, {"content": "<script>\r\n(function(){\r\n  var kuid = Krux('get', 'user');\r\n  if (kuid) {\r\n      var liveramp_url = 'https://idsync.rlcdn.com/379708.gif?partner_uid=' + kuid;\r\n      var i = new Image();\r\n      i.src = liveramp_url;     \r\n  }\r\n})();\r\n</script>", "target": "", "target_action": null, "require": "", "docwrite": null, "template_replacement": 1, "execution_results": null, "tier": 1, "internal": 1, "content_type": "html", "freq_cap": 3, "timing": "onload", "method": "document", "type": "publisher", "id": 43209, "name": "LiveRamp"}], "segments": [], "publisher": {"uuid": "ca46aa22-e6b4-464e-9077-7215dc98bc0a", "id": 11737, "name": "Bell Media"}, "controltag_options": {"async": "true", "render": true}, "site": {"id": 15025, "name": "CP24"}, "prioritized_segments": ["o2odcj65d", "os2vfnac8", "os2qi51b0", "onkfu26zs", "onkdet5md", "omgxibipn", "omgxfaxtm", "onopyw4xb", "oojalkvs7", "os2p890v4", "ov2i6p28r", "ooiyb9pyt", "os2qnlpn9", "os2p5nopq", "onka81g7w", "okot8h72e", "onoppxxlx", "om4nq7a4c", "ooix46ydc", "onkavjydg", "oan8zbaqm", "ooix77elr", "opvc0yvtm", "ooixsrcrk", "om4o77odh", "om4p39npn", "ott0eh4dl", "op7knemff", "onkky5s95", "otuukcsdn", "om4qu690b", "onkk9slao", "olo4vfmup", "opvc4gilk", "ooixksdn8", "om43mm2mm", "om44ltfy9", "onoshz52a", "om44docri", "nclrfn9sr", "olo7evqdj", "os52qmkoh", "om43xg0v3", "olo29i56r", "ooixxu5ns", "olpam8hrn", "oi1242pr7", "nmype76fg", "onoozuxsy", "onoq7041b", "oo7ggyze5", "onr905wks", "oorji5nig", "olo7ouzr8", "ogxmfyuvw", "ooixcat4x", "ooj7az0h4", "ooixotar4", "onomvzoh7", "olo6rq2ad", "om44y5xwr", "op7kf2vnj", "n1yzw7ygk", "om45wn1ht", "onr8le5h9", "om45igwip", "onketvtvd", "op63n6tfz", "onkac4b8z", "oc7bokjug", "ooix1rbmr", "on0mabdb2", "om449zao6", "onsfsgo7e", "onsexiw1x", "olo8vcufk", "onsht9qf8", "oihajpira", "ojpf2ewki", "onwcge5hi", "okgrjq8qo", "oob5lhkep", "olo88n3d0", "ot6y7da7i", "ot6zr9czv", "ot60a7ghn", "o2fl2dvny", "o2fmbhcf5", "o2fmfjubc", "o2fmq3vw7", "o2fm4d5bl", "o2fm6nrtr", "o2n4uhtya", "o2n4y38z4", "o2n5zyqiz", "o2n6otw50", "o2n6skfzh", "o2op87208", "o2oqbxahu", "o2oqeg1m5", "o2oqhygvw", "o2oqkdwbb", "o2oqnn2ji", "o2oqp53ts", "o2oqsc9nh", "o2oqu9m1f", "o2oqzdme8", "o2oq1yrsh", "o2oq34yv4", "o2oq6bllf", "o2oq8kc9y", "o2orau3a6", "o2orewiie", "o23g9n2c3", "o27fmfyql", "o27fl5m5u", "nmype9bdq", "nmype7naa", "nmype8lwy", "nmype60i6", "nmype656f", "nmype8fzy", "nmype9cy7", "nmype8i4g", "nmype7lr2", "nmype897n", "nmype770s", "nmype72u3", "nmype7ods", "nmype8g6a", "nmype64su", "nmype80gl", "nmype8dsn", "nmype6wsb", "nmype7dum", "nmype86vi", "nmype73zf", "nmype8yep", "nmype9ltx", "nmype7840", "nmype88it", "nmype8s9g", "nmype7q19", "nmype6vxw", "nmype848v", "nmype6xtp", "nmype796i", "nmype82a7", "nmype7o2v", "nmype9f35", "nmype6uk0", "nmype83u2", "nmype8j2h", "nmype7bss", "nmype65m1", "nmype6yqt", "nmype7vfb", "nmype7sf6", "nmype81ac", "onja4q1xw", "onja4qqqb", "nmype7gxt", "nmype9ku6", "nmype7k43", "nmype9m1r", "nmype6p1n", "nmype609v", "nmype7isj", "o3brpsq7z", "o3b2u3deq", "o3b6y73eg", "o3b7p77vi", "o3b7vwcx1", "o3b9c2vkm", "o3b9lpmnj", "o3fj4e57o", "o3flhs2wx", "o3fmdddbz", "o3fmhb415", "o3fmkiv9z", "o3fmnqfb8", "o3fmrxr81", "o3fmwfqey", "o6y40efj5", "o6y46xzmv", "o6y8dndg8", "o6y8mh2pl", "o7m845a94", "o7m9ctdgc", "o8izymp1r", "o8i1u11or", "o8i3b8g2z", "o8i3njad0", "o8i332ixp", "o8mhalt9v", "o8mhj0os9", "o8mhn05ec", "o8mhq0z2t", "o8517w4xw", "o853i6vkk", "o86ag6i0v", "o86asqgnd", "o86a28g50", "o86bmgo52", "o86bzwlt9", "pbo9fs8ly", "pb95ioob2", "pc5w0kk3b", "pc5w4y6vt", "pc5w85btn", "pc5xb8md3", "pc5xephry", "pc8mplrgq", "pd87nwsoz"], "dnt": null, "params": {"connector_host": "connector.krxd.net", "control_tag_load_sync": "false", "fingerprint": false, "disable_http_compression": false, "remove_kxhead": true, "supertag_requires_approval": false, "config_source": 1, "control_tag_stats_prefix": null, "beacon_host": "beacon.krxd.net", "control_tag_pixel_throttle": null, "user_id_cookie": null, "max_segments": "35", "no_pii": 0, "recommend": false, "revenue_optimization": false, "context_terms": "false", "jslog_host": "jslog.krxd.net", "site_level_supertag_config": "site", "max_slot_time": 1000, "services_host": "apiservices.krxd.net", "capture_leakage": true, "client_side_storage": "localStorage,cookie", "userData_host": "cdn.krxd.net", "control_tag_namespace": null, "control_tag_version": "stable", "capture_js_errors": "true", "datatag_version": "3", "dfp_premium": "true", "userdata_host": "cdn.krxd.net", "target_fingerprint": false}, "services": {"impression": "//beacon.krxd.net/ad_impression.gif", "stats": "//apiservices.krxd.net/stats", "userdata": "//cdn.krxd.net/userdata/get", "userData": "//cdn.krxd.net/user_data/segments/3", "um": "//apiservices.krxd.net/um", "optout": "//beacon.krxd.net/optout_check", "pixel": "//beacon.krxd.net/pixel.gif", "contentConnector": "//connector.krxd.net/content_connector/", "is_optout": "//beacon.krxd.net/optout_check", "set_optin": "//apiservices.krxd.net/consumer/optin", "social": "//beacon.krxd.net/social.gif", "set_optout": "//apiservices.krxd.net/consumer/optout", "data": "//beacon.krxd.net/data.gif", "event": "//beacon.krxd.net/event.gif", "log": "//jslog.krxd.net/jslog.gif"}, "geo": {}, "realtime_segments": [], "confid": "InJgKD0f"};

  // Wrap in a function and comment, then toString the func and replace
  // everything that's not the beginning or end of a JSON object, so we get a
  // string that's either empty or JSON.
  var esiGeo = String(function(){/*
    {"CONTINENT":"EU", "COUNTRY":"NO", "REGION":"", "CITY":"", "DMA":"0", "AREACODE":"0", "ZIP":"", "LATITUDE":"59.950", "LONGITUDE":"10.750"}
  */}).replace(/^.*\/\*[^{]+|[^}]+\*\/.*$/g, '');

  if (esiGeo) {
    log('Got a request for:', esiGeo, 'adding geo to config.');
    try {
      config.geo = window.JSON.parse(esiGeo);
    } catch (__) {
      // Couldn't parse, so setting to {}
      log('Unable to parse geo from:', config.geo);
      config.geo = {};
    }
  }

  
  
  

  load('//cdn.krxd.net/ctjs/controltag.js.cf94643484cc8654373adf5516beca11', function() {
    
    
    log('Loading krux configuration.');

    Krux('config', config);

    
  });
})();
