Skip to content

Instantly share code, notes, and snippets.

@lovitt
Forked from banderson623/snippet.js
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lovitt/719c36179ae068bc5538 to your computer and use it in GitHub Desktop.
Save lovitt/719c36179ae068bc5538 to your computer and use it in GitHub Desktop.
OX.AdRequest = OX.AdRequest || function(C, q) {
var F = OX.utils,
s = F.rand(),
J, a = {},
E, H = 0,
g, l, h = {},
x = {},
m, n, D, c, d, y = {
o: s
},
f = {
mode: null,
auid: null,
record_tmpl: null,
ad_units: []
},
w = "OX_" + s,
b = "ox_" + OX.Resources.ACJ + "_" + s,
u = "<iframe src='{src}' width='0' height='0' style='display:none;'></iframe>",
v = this,
j = OX.Hooks,
e = OX.Modes;
function G() {
return (y.rm > 0) && (y.rd > 0) && (y.rc < y.rm)
}
function r() {
if ((y.rd > 0) && (y.rm > 0) && (!y.rc)) {
y.rc = 0
}
}
function I() {
var k = v.createAdRequestURL(),
L = y.rc && ("_" + y.rc),
K = b + (L || ""),
i = F.createScript({
id: K,
src: k
});
return i
}
function A(N, M) {
var k = x[N] || [],
K = OX.getHooksByType(N) || [],
P = K.concat(k),
O;
if (P) {
for (var L = 0; L < P.length; L++) {
O = P[L];
O.apply(this, M)
}
}
}
function p(K) {
var i, k;
if (K) {
i = F.template(u, {
src: K
});
k = F.create(i)
}
D = F.replaceOrRemove(k, D, m)
}
function o() {
y.rc++;
setTimeout(function() {
v.refreshAds()
}, 1000 * y.rd)
}
function t(k) {
var i;
if (k) {
i = document.createComment(" " + k.replace(/--/g, "- -"))
}
n = F.replaceOrRemove(i, n, m)
}
v.addAdUnit = function(i) {
v.getOrCreateAdUnit(i);
if (!y.auid) {
y.auid = []
}
y.auid.push(i)
};
v.addContentTopic = function(i) {
y.tid = y.tid || [];
y.tid.push(i)
};
v.addHook = function(k, i) {
if (!x[i]) {
x[i] = []
}
x[i].push(k)
};
v.addPage = function(i) {
y.pgid = y.pgid || [];
y.pgid.push(i)
};
v.addVariable = function(k, L, K, i) {
var M = (K || "c") + "." + k;
if (i || !h[M]) {
h[M] = []
}
h[M].push(L)
};
v.createAdRequestURL = function() {
var oldCreateAdRequestURL = function() {
var k, i, K = "";
r();
i = F.merge([y, h, F.contextArgs(), OX._customVars, OX._requestArgs]);
K && (K += "&");
K += F.serialize(i);
if (c) {
K += "&r=" + escape(c)
}
k = F.template(F.Templates.GW_URL, {
gw: J,
v: "1.0",
r: OX.Resources.ACJ,
q: K
});
return k
}
return 'http://localhost:9292/mock?url=' + encodeURIComponent(oldCreateAdRequestURL());
};
v.dflt = function(K, i) {
var k = a[K];
k && k.dflt(i)
};
v.disableFeature = function(i) {
y.df = y.df || [];
y.df.push(i)
};
v.disableMarket = function() {
v.disableFeature("m")
};
v.disableSegmentation = function() {
y.ns = 1
};
v.enableFeature = function(i) {
y.ef = y.ef || [];
y.ef.push(i)
};
v.enableMarket = function() {
v.enableFeature("m")
};
v.enableSegmentation = function() {
y.ns = null
};
v.fetchAds = function() {
var k, i;
A(j.ON_AD_REQUEST, [v]);
k = v.createAdRequestURL();
i = F.template(F.Templates.SCRIPT, {
src: k,
id: b
});
F.write(i)
};
v.fetchAdsComplete = function() {
switch (f.mode) {
case e.IMMEDIATE:
v.showAdUnit(f.auid);
break;
case e.DEFERRED:
for (var i in a) {
if (a.hasOwnProperty(i)) {
if (a[i].get("anchor")) {
v.showAdUnit(i)
}
}
}
break;
default:
}
if (y.auid && y.auid.length == 1) {
if (y.rc == 0) {
v.addHook(function() {
G() && o()
}, OX.Hooks.ON_ADUNIT_RENDER_FINISH)
}
} else {
G() && o()
}
};
v.frameCreatives = function(i) {
E = i
};
v.getOrCreateAdUnit = function(i) {
if (!a[i]) {
a[i] = new OX.AdUnit(i, v.get("o"));
f.ad_units.push(a[i]);
A(j.ON_ADUNIT_CREATED, [a[i]])
}
return a[i]
};
v.get = function(i) {
return f.hasOwnProperty(i) ? f[i] : y[i]
};
v.getQueryArgs = function() {
return y
};
v.getProperties = function() {
return f
};
v.isResponseEmpty = function() {
if (!(d && d.ads && d.ads.adunits && d.ads.adunits[0])) {
return true
} else {
return false
}
};
v.loadAdResponse = function(K) {
var M = K.ads,
O = K.ads.adunits,
k, N;
m = m || F.get(b);
d = K;
p(M.pixels);
t(f.debug = M.debug);
for (var L = 0; L < O.length; L++) {
k = O[L];
if (k.refresh_delay) {
y.rd = k.refresh_delay
}
if (k.refresh_max) {
y.rm = k.refresh_max
}
r();
if (G()) {
E = 1
}
N = function(i) {
A(j.ON_ADUNIT_INITIALIZED, [i])
};
v.getOrCreateAdUnit(k.auid).load({
adunit: k,
rt: M.record_tmpl,
oninit: N,
chain: M.chain
})
}
};
v.load = function() {
var i;
A(j.ON_AD_REQUEST, [v]);
i = I();
E = 1;
m = F.append(F.lastScript(), i)
};
v.refreshAds = function() {
var i;
A(j.ON_AD_REQUEST, [v]);
i = I();
m = F.replace(m, i)
};
v.setAdUnitFallback = function(k, i) {
v.getOrCreateAdUnit(k).set("fallback", i)
};
v.setAdUnitImpBeacon = function(k, i) {
v.getOrCreateAdUnit(k).set("imp_beacon", i)
};
v.setAdUnitMarketFloor = function(k, i) {
v.getOrCreateAdUnit(k);
y.aumf = y.aumf || [];
y.aumf.push(k + ":" + i)
};
v.setAdUnitNGFloor = function(k, i) {
v.getOrCreateAdUnit(k);
y.aungf = y.aungf || [];
y.aungf.push(k + ":" + i)
};
v.setAdUnitSlotId = function(k, i) {
v.getOrCreateAdUnit(k).set("anchor", F.get(i))
};
v.setAnchorTarget = function(i) {
y.tg = i
};
v.setClickRedirectURL = function(i) {
c = i
};
v.setGateway = function(i) {
J = F.ensureRightProtocol(i)
};
v.setMode = function(i) {
f.mode = i
};
v.setPageURL = function(i) {
y.ju = F.ensureRightProtocol(i)
};
v.setRefererURL = function(i) {
y.jr = i
};
v.setRefreshDelay = function(i) {
y.rd = i
};
v.setRefreshMax = function(i) {
y.rm = i
};
v.setTest = function(i) {
y.test = i ? "true" : null
};
v.setUserID = function(i) {
y.xid = i
};
v.showAdUnit = function(K) {
var k = a[K],
i;
if (k) {
i = function() {
if (H) {
return 0
}
if (k.get("framed")) {
return 1
}
if (F.defined(E)) {
return E
}
return !!OX.getFramed()
}();
k.render({
framed: i,
onAdUnitRenderStart: function() {
A(j.ON_ADUNIT_RENDER_START, [k])
},
onAdUnitRenderFinish: function() {
A(j.ON_ADUNIT_RENDER_FINISH, [k])
},
onAdRenderStart: function() {
A(j.ON_AD_RENDER_START, [k])
},
onAdRenderFinish: function(M, N, L) {
A(j.ON_AD_RENDER_FINISH, [M, N, L])
},
onAdDefaulted: function(M, N, L) {
A(j.ON_AD_DEFAULTED, [M, N, L])
},
onAdNotDefaulted: function(M, N, L) {
A(j.ON_AD_NOT_DEFAULTED, [M, N, L])
}
})
}
};
window[w] = function(i) {
v.loadAdResponse(i);
A(j.ON_AD_RESPONSE, [v]);
v.fetchAdsComplete()
};
y.callback = w;
v.setGateway(C && C.gw || q.gw);
v.setPageURL(C && C.url || q.url);
v.setRefererURL(C && C.ref || q.ref);
if (!window.postMessage) {
v.disableFeature("c")
}
if (C) {
v.setMode(e.IMMEDIATE);
f.auid = C.auid;
C.auid && v.addAdUnit(f.auid);
C.tid && v.addContentTopic(C.tid);
C.aumf && v.setAdUnitMarketFloor(f.auid, C.aumf);
C.aungf && v.setAdUnitNGFloor(f.auid, C.aungf);
C.tg && v.setAnchorTarget(C.tg);
C.imp_beacon && v.setAdUnitImpBeacon(f.auid, C.imp_beacon);
C.slot_id && v.setAdUnitSlotId(f.auid, C.slot_id);
C.fallback && v.setAdUnitFallback(f.auid, C.fallback);
C.test && v.setTest(C.test);
C.userid && v.setUserID(C.userid);
C.r && v.setClickRedirectURL(C.r);
C.rd && v.setRefreshDelay(C.rd);
C.rm && v.setRefreshMax(C.rm);
C.md && v.disableMarket();
C.ns && v.disableSegmentation();
if (C.vars) {
for (var z in C.vars) {
C.vars.hasOwnProperty(z) && v.addVariable(z, C.vars[z])
}
}
if (C.ef) {
for (var B = 0; B < C.ef.length; B++) {
v.enableFeature(C.ef[B])
}
}
if (C.df) {
for (var B = 0; B < C.df.length; B++) {
v.disableFeature(C.df[B])
}
}
if (F.defined(C.frameCreatives)) {
E = C.frameCreatives
}
C.forceUnframed && (H = 1);
C.onResponse && v.addHook(C.onResponse, j.ON_AD_RESPONSE);
C.onAdUnitRender && v.addHook(C.onAdUnitRender, j.ON_ADUNIT_RENDER_START);
C.onAdUnitLoaded && v.addHook(C.onAdUnitLoaded, j.ON_ADUNIT_RENDER_FINISH)
} else {
v.setMode(e.DEFERRED)
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment