(function() {
    if (!window.console) {
        window.console = {}; 
    };
    if (!window.console.debug) {
        window.console.debug = function() {};
    };
    var blacklist = ["@","%2540","%40","user=","email=","emailaddress=","password=","pw=","un=","username="];
var url = (window.location.search || window.location.href).toLowerCase();
for (var i = 0; i < blacklist.length; i++) {
    var word = blacklist[i];
    if (url.indexOf(word) !== -1 || decodeURIComponent(url).indexOf(word) !== -1) {
        console.debug("[CAN] aborted load after finding "+word);
        aborted = true;
        return;
    };
};

var sizes = [160,600];
var sizeMappings = [{"minWidth":0,"sizes":[160,600]}];

window._canStore = window._canStore || {'units': {}};
var adunit = "supersky";
window._canStore['units'][adunit] = window._canStore['units'][adunit] || 0;
window._canStore['units'][adunit]++;
var div_id = "div-gpt-ad-southamptonc-supersky-"+window._canStore['units'][adunit];

var before = "",
    div = '<div style="display:inline-block"><div><div id="'+div_id+'"></div></div></div>',
    after = "",
    uri = "\/code\/southamptonc\/supersky\/public";
var slotContent = before+div+after;

var findScript = function() {
    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
        if (!scripts[i].hasAttribute("data-can-ad")) {
            continue;
        };
        if (scripts[i].getAttribute("data-can-ad") != "") {
            continue;
        };
        if (scripts[i].getAttribute("src").indexOf(uri) !== -1) {
            return scripts[i];
        };
    };
    return null;
};

var cScript = document.currentScript || findScript();

if (cScript) {
    cScript.setAttribute('data-can-ad', 'loading');
    cScript.insertAdjacentHTML('beforeBegin', before+div+after);
    var adSlot = document.getElementById(div_id);
} else {
    console.debug("[CAN] could not determine document.currentScript!");
    return;
};

var PREBID_TIMEOUT = 1000;
var can_render_at = null;
var can_bidding = true;
var gpt_slot = null;
var aborted = false;
var gdpr_code = null;

var adUnits = [{
    code: div_id,
    sizeMapping: sizeMappings,
    bids: [{"bidder":"rubicon","params":{"accountId":"13950","siteId":"169414","zoneId":"821174","position":"atf"}},{"bidder":"criteo","params":{"zoneId":"1122358","publisherSubId":"can_southamptonc"}},{"bidder":"indexExchange","params":{"id":"supersky","siteID":"246205"}},{"bidder":"pubmatic","params":{"publisherId":"156752","adSlot":"can_southamptonc_160x600@160x600"}}],
}];

if (!window.pbjs) {
    window.pbjs = window.pbjs || {};
    window.pbjs.que = window.pbjs.que || [];

    var canpb = document.createElement('script');
    canpb.async = true;
    canpb.type = 'text/javascript';
    canpb.src = 'https://assets.counciladvertising.net/v3/prebid/1527171597.js';
    var pbnode = document.getElementsByTagName('script')[0];
    pbnode.parentNode.insertBefore(canpb, pbnode);
};

if (!window.googletag) {
    window.googletag = window.googletag || {};
    window.googletag.cmd = window.googletag.cmd || [];

    var gads = document.createElement('script');
    gads.async = true;
    gads.type = 'text/javascript';
    var useSSL = 'https:' == document.location.protocol;
    gads.src = (useSSL ? 'https:' : 'http:') +
        '//www.googletagservices.com/tag/js/gpt.js';
    var gan = document.getElementsByTagName('script')[0];
    gan.parentNode.insertBefore(gads, gan);
};

window.googletag.cmd.push(function() {
    window.googletag.pubads().disableInitialLoad();
    googletag.pubads().addEventListener('slotRenderEnded', function(render) {
        if (render.slot.getSlotElementId() == div_id) {
            can_render_at = Date.now();
        };
    });
});

var addScript = function(url) {
    var script = document.createElement("script");

    script.type = "text/javascript";
    script.src = url;
    script.async = 'async';
    var head = document.head || document.getElementsByTagName('head')[0];
    head.appendChild(script);

    return script;
};

var notifyAll = function() {
    if (window.dispatchEvent) {
        var evt = document.createEvent('Event');
        evt.initEvent('canBidFinshed', true, true);
        window.dispatchEvent(evt);
    } else if (window.fireEvent) {
        window.fireEvent('oncanBidFinshed');
    };
};

var handleBids = function() {
    if (!can_bidding) {
        return;
    };
    console.debug('[can] handleBids(): ' + div_id);
    if (prebid_timeout != null) {
        clearTimeout(prebid_timeout);
    };

    notifyAll();
};

var can_firstLoad = function(adUnitCode) {
    if (aborted) {
        return;
    };
    can_bidding = true;
    can_render_at = null;
    var opts = {
        bidsBackHandler: handleBids,
        timeout: PREBID_TIMEOUT,
    };
    if (adUnitCode != null) {
        opts.adUnitCodes = [adUnitCode];
    };

    window.pbjs.que.push(function() {
        window.pbjs.requestBids(opts);
    });
};

var can_refresh = function(adUnitCode) {
    if (aborted) {
        return;
    };
    can_bidding = true;
    can_render_at = null;
    var opts = {
        bidsBackHandler: can_refreshSlot,
        timeout: PREBID_TIMEOUT,
    };
    opts.adUnitCodes = [adUnitCode];

    window.pbjs.que.push(function() {
        window.pbjs.requestBids(opts);
    });
};

var allLoaded = function() {
    var scripts = document.getElementsByTagName("script");
    try {
        for (var k = 0; k < scripts.length; k++) {
            var script = scripts[k];
            if (script.hasAttribute('data-can-ad')) {
                if (script.getAttribute('data-can-ad') != 'loaded') {
                    return false;
                };
            };
        };
    } catch (e) {
        console.debug("[can] error", e);
    };
    return true;
};

var prebid_timeout = null;

window.pbjs.que.push(function() {
    if (!aborted) {
        window.pbjs.addAdUnits(adUnits);
        window.pbjs.setConfig({
            enableSendAllBids: true,
            priceGranularity: {
                'buckets': [{
                        'min': 0.01,
                        'max': 5,
                        'increment': 0.01,
                    },
                    {
                        'min': 5,
                        'max': 20,
                        'increment': 0.05,
                    },
                    {
                        'min': 20,
                        'max': 50,
                        'increment': 0.50,
                    },
                ],
            },
        });
    } else {
        adSlot.parentNode.parentNode.parentNode.removeChild(adSlot.parentNode.parentNode);
    };

    var documentReady = function() {
        if (allLoaded()) {
            if (window._canStore.loaded) {
                return;
            };
            window._canStore.loaded = true;
            console.debug('[can] firstLoad: ' + div_id);
            prebid_timeout = setTimeout(function() {
                console.debug('[can] dfp timeout reached');
                handleBids();
            }, PREBID_TIMEOUT);
            can_firstLoad();
        };
    };

    var bootstrap = function() {
        cScript.setAttribute('data-can-ad', 'loaded');
        if (document.readyState == 'interactive' || document.readyState == 'complete') {
            documentReady();
        } else {
            document.addEventListener('readystatechange', function() {
                if (document.readyState == 'interactive' || document.readyState == 'complete') {
                    documentReady();
                };
            });
        };
    };

    if (gdpr_code == null) {
        bootstrap();
    } else {
        window.addEventListener('canGdprConsent', function(e) {
            if (e.consent) {
                bootstrap();
            }
        });
        if (!window._canStore['gdpr']) {
            addScript(gdpr_code);
            window._canStore['gdpr'] = true;
        };
    };
});

var can_refreshSlot = function() {
    if (!can_bidding || aborted) {
        return;
    };
    console.debug('[can] event notification: ' + div_id);
    can_bidding = false;
    if (prebid_timeout != null) {
        clearTimeout(prebid_timeout);
    };
    window.googletag.cmd.push(function() {
        window.pbjs.que.push(function() {
            window.pbjs.setTargetingForGPTAsync();
            window.googletag.pubads().refresh([gpt_slot]);
            can_render_at = Date.now();
        });
    });
};

window.addEventListener('canBidFinshed', can_refreshSlot);

window.googletag.cmd.push(function() {
    if (aborted) {
        return;
    };
    var mapping = window.googletag.sizeMapping();
    for (var k = 0; k < sizeMappings.length; k++) {
        mapping.addSize([sizeMappings[k].minWidth, 0], sizeMappings[k].sizes);
    };
    mapping = mapping.build();

    gpt_slot = window.googletag.defineSlot('/31781941/can_southamptonc', sizes, div_id)
        .addService(window.googletag.pubads())
        .defineSizeMapping(mapping);

        window.googletag.pubads().enableSingleRequest();
    window.googletag.pubads().enableAsyncRendering();
    window.googletag.enableServices();
    console.debug('[can] display: ' + div_id);
    window.googletag.display(div_id);
});

if (window.ga === undefined) {
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
}


if (!window._canStore.analytics) {
    // Creates an adblock detection plugin.
    ga('provide', 'adblockTracker', function(tracker, opts) {
        var ad = document.createElement('ins');
        ad.className = 'AdSense';
        ad.style.display = 'block';
        ad.style.position = 'absolute';
        ad.style.top = '-1px';
        ad.style.height = '1px';
        document.body.appendChild(ad);
        tracker.set('dimension' + opts.dimensionIndex, !ad.clientHeight);
        document.body.removeChild(ad);
    });
    
    ga('create', 'UA-90094505-1', 'auto', 'CANTracker');
    ga('CANTracker.set', 'location', document.location);
    ga('CANTracker.set', 'referrer', document.referrer);
    ga('CANTracker.set', 'campaignSource', '"southamptonc"');
    ga('CANTracker.set', 'campaignMedium', '"supersky"');
    ga('CANTracker.set', 'dimension1', '"southamptonc"');
    ga('CANTracker.set', 'dimension2', '"supersky"');
    ga('CANTracker.set', 'dimension3', '""');
    ga('CANTracker.require', 'adblockTracker', {dimensionIndex: 4});
    ga('CANTracker.send', 'pageview');
    
    window._canStore.analytics = true;
}

window._qevents = window._qevents || [];
(function() {
    var elem = document.createElement('script');
    elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge")
                + ".quantserve.com/quant.js";
    elem.async = true;
    elem.type = "text/javascript";
    var scpt = document.getElementsByTagName('script')[0];
    scpt.parentNode.insertBefore(elem, scpt);
})();

    window._qevents.push({
        qacct:"p-mjq2rgU4Jj7VF"
    });
    
var can_ad_refresh_enabled = true,
    can_ad_refresh_num = 0,
    can_ad_visible = false,
    can_ad_visible_at = false,
    can_ad_visible_time = 0,
    can_ad_refresh_max = 99,
    can_ad_refresh_time = 60000,
    premiumCampaigns = [2278264783,2285206478,2264117448,2324876295,2334004446];

var can_isVisible = function() {
    return !document.hidden && adSlot.getBoundingClientRect().top <= window.innerHeight && adSlot.getBoundingClientRect().bottom >= 0;
};

var can_visibleDuration = function() {
    if (!can_render_at) {
        return 0;
    };
    var extra = 0;
    if (can_ad_visible) {
        extra = Date.now()-(Math.max(can_ad_visible_at, can_render_at));
    };
    return can_ad_visible_time + extra;
};

var can_setVisible = function(status) {
    console.debug('[can] ad visible: '+status);
    if (status) {
        can_ad_visible = true;
        can_ad_visible_at = Date.now();
    } else {
        can_ad_visible_time += Date.now()-Math.max(can_ad_visible_at, can_render_at);
    }
};

if (can_isVisible()) {
    can_setVisible(true);
};

var can_scrollHandler = function() {
    if (!can_ad_refresh_enabled && can_ad_refresh_max != -1 && can_ad_refresh_num >= can_ad_refresh_max) {
        console.debug('[can] removing scrollhandler');
        window.removeEventListener('scroll', can_scrollHandler);
    };
    if (can_ad_visible && !can_isVisible()) {
        can_ad_visible = false;
        if (can_ad_visible_at != false) {
            can_setVisible(false);
        };
    };
    if (!can_ad_visible && can_isVisible()) {
        can_setVisible(true);
    };
};

var can_visibilityHandler = function() {
    if (!can_ad_refresh_enabled && can_ad_refresh_max != -1 && can_ad_refresh_num >= can_ad_refresh_max) {
        console.debug('[can] removing visibilityHandler');
        window.removeEventListener('visibilitychange', can_visibilityHandler);
    };
    can_setVisible(!document.hidden && can_isVisible());
};

window.addEventListener('scroll', can_scrollHandler, { passive: true });
window.addEventListener('visibilitychange', can_visibilityHandler, { passive: true });

window.googletag.cmd.push(function () {
    googletag.pubads().addEventListener('slotRenderEnded', function (render) {
        if (render.slot.getSlotElementId() == div_id) {
            if (premiumCampaigns.indexOf(render.campaignId) !== -1) {
                console.debug('[can] premium served; disabling refresh');
                can_ad_refresh_enabled = false;
                window.removeEventListener('scroll', can_scrollHandler);
                window.removeEventListener('visibilitychange', can_visibilityHandler);
                clearTimeout(can_ad_refresh_timer);
            }
        }
    });
});
var can_ad_refresh_timer = setInterval(function() {
    if (!can_ad_refresh_enabled && can_ad_refresh_max != -1 && can_ad_refresh_num >= can_ad_refresh_max) {
        console.debug('[can] removing refresh timer');
        clearTimeout(can_ad_refresh_timer);
        return;
    };

    if (can_ad_refresh_enabled && can_isVisible() && can_render_at != false && Date.now()-can_render_at >= can_ad_refresh_time && can_visibleDuration() >= can_ad_refresh_time) {
        console.debug('[can] refresh time exceeded: '+(can_visibleDuration())+" ms");
        can_ad_refresh_num++;
        can_setVisible(true);
        can_ad_visible_time = 0;
        can_refresh(adSlot.id);
    };
}, 700);

var script = document.createElement('script');
script.setAttribute('async', 'async');
    script.setAttribute('src', "\/\/p.cpx.to\/p\/12187\/px.js");
document.head.appendChild(script);
})();
