Skip to content

Instantly share code, notes, and snippets.

@miketaylr
Created February 20, 2014 18:55
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 miketaylr/9120667 to your computer and use it in GitHub Desktop.
Save miketaylr/9120667 to your computer and use it in GitHub Desktop.
var swfobject = function() {
var b = "undefined", Q = "object", n = "Shockwave Flash", p = "ShockwaveFlash.ShockwaveFlash", P = "application/x-shockwave-flash", m = "SWFObjectExprInst", j = window, K = document, T = navigator, o = [], N = [], i = [], d = [], J, Z = null, M = null, l = null, e = false, A = false;
var h = function() {
var v = typeof K.getElementById != b && typeof K.getElementsByTagName != b && typeof K.createElement != b, AC = [ 0, 0, 0 ], x = null;
if (typeof T.plugins != b && typeof T.plugins[n] == Q) {
x = T.plugins[n].description;
if (x && !(typeof T.mimeTypes != b && T.mimeTypes[P] && !T.mimeTypes[P].enabledPlugin)) {
x = x.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
AC[0] = parseInt(x.replace(/^(.*)\..*$/, "$1"), 10);
AC[1] = parseInt(x.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
AC[2] = /r/.test(x) ? parseInt(x.replace(/^.*r(.*)$/, "$1"), 10) : 0;
}
} else {
if (typeof j.ActiveXObject != b) {
var y = null, AB = false;
try {
y = new ActiveXObject(p + ".7");
} catch (t) {
try {
y = new ActiveXObject(p + ".6");
AC = [ 6, 0, 21 ];
y.AllowScriptAccess = "always";
} catch (t) {
if (AC[0] == 6) {
AB = true;
}
}
if (!AB) {
try {
y = new ActiveXObject(p);
} catch (t) {}
}
}
if (!AB && y) {
try {
x = y.GetVariable("$version");
if (x) {
x = x.split(" ")[1].split(",");
AC = [ parseInt(x[0], 10), parseInt(x[1], 10), parseInt(x[2], 10) ];
}
} catch (t) {}
}
}
}
var AD = T.userAgent.toLowerCase(), r = T.platform.toLowerCase(), AA = /webkit/.test(AD) ? parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, q = false, z = r ? /win/.test(r) : /win/.test(AD), w = r ? /mac/.test(r) : /mac/.test(AD);
return {
w3cdom: v,
pv: AC,
webkit: AA,
ie: q,
win: z,
mac: w
};
}();
var L = function() {
if (!h.w3cdom) {
return;
}
f(H);
if (h.ie && h.win) {
try {
K.write("<script id=__ie_ondomload defer=true src=//:></script>");
J = C("__ie_ondomload");
if (J) {
I(J, "onreadystatechange", S);
}
} catch (q) {}
}
if (h.webkit && typeof K.readyState != b) {
Z = setInterval(function() {
if (/loaded|complete/.test(K.readyState)) {
E();
}
}, 10);
}
if (typeof K.addEventListener != b) {
K.addEventListener("DOMContentLoaded", E, null);
}
R(E);
}();
function S() {
if (J.readyState == "complete") {
J.parentNode.removeChild(J);
E();
}
}
function E() {
if (e) {
return;
}
if (h.ie && h.win) {
var v = a("span");
try {
var u = K.getElementsByTagName("body")[0].appendChild(v);
u.parentNode.removeChild(u);
} catch (w) {
return;
}
}
e = true;
if (Z) {
clearInterval(Z);
Z = null;
}
var q = o.length;
for (var r = 0; r < q; r++) {
o[r]();
}
}
function f(q) {
if (e) {
q();
} else {
o[o.length] = q;
}
}
function R(r) {
if (typeof j.addEventListener != b) {
j.addEventListener("load", r, false);
} else {
if (typeof K.addEventListener != b) {
K.addEventListener("load", r, false);
} else {
if (typeof j.attachEvent != b) {
I(j, "onload", r);
} else {
if (typeof j.onload == "function") {
var q = j.onload;
j.onload = function() {
q();
r();
};
} else {
j.onload = r;
}
}
}
}
}
function H() {
var t = N.length;
for (var q = 0; q < t; q++) {
var u = N[q].id;
if (h.pv[0] > 0) {
var r = C(u);
if (r) {
N[q].width = r.getAttribute("width") ? r.getAttribute("width") : "0";
N[q].height = r.getAttribute("height") ? r.getAttribute("height") : "0";
if (c(N[q].swfVersion)) {
if (h.webkit && h.webkit < 312) {
Y(r);
}
W(u, true);
} else {
if (N[q].expressInstall && !A && c("6.0.65") && (h.win || h.mac)) {
k(N[q]);
} else {
O(r);
}
}
}
} else {
W(u, true);
}
}
}
function Y(t) {
var q = t.getElementsByTagName(Q)[0];
if (q) {
var w = a("embed"), y = q.attributes;
if (y) {
var v = y.length;
for (var u = 0; u < v; u++) {
if (y[u].nodeName == "DATA") {
w.setAttribute("src", y[u].nodeValue);
} else {
w.setAttribute(y[u].nodeName, y[u].nodeValue);
}
}
}
var x = q.childNodes;
if (x) {
var z = x.length;
for (var r = 0; r < z; r++) {
if (x[r].nodeType == 1 && x[r].nodeName == "PARAM") {
w.setAttribute(x[r].getAttribute("name"), x[r].getAttribute("value"));
}
}
}
t.parentNode.replaceChild(w, t);
}
}
function k(w) {
A = true;
var u = C(w.id);
if (u) {
if (w.altContentId) {
var y = C(w.altContentId);
if (y) {
M = y;
l = w.altContentId;
}
} else {
M = G(u);
}
if (!/%$/.test(w.width) && parseInt(w.width, 10) < 310) {
w.width = "310";
}
if (!/%$/.test(w.height) && parseInt(w.height, 10) < 137) {
w.height = "137";
}
K.title = K.title.slice(0, 47) + " - Flash Player Installation";
var z = h.ie && h.win ? "ActiveX" : "PlugIn", q = K.title, r = "MMredirectURL=" + j.location + "&MMplayerType=" + z + "&MMdoctitle=" + q, x = w.id;
if (h.ie && h.win && u.readyState != 4) {
var t = a("div");
x += "SWFObjectNew";
t.setAttribute("id", x);
u.parentNode.insertBefore(t, u);
u.style.display = "none";
var v = function() {
u.parentNode.removeChild(u);
};
I(j, "onload", v);
}
U({
data: w.expressInstall,
id: m,
width: w.width,
height: w.height
}, {
flashvars: r
}, x);
}
}
function O(t) {
if (h.ie && h.win && t.readyState != 4) {
var r = a("div");
t.parentNode.insertBefore(r, t);
r.parentNode.replaceChild(G(t), r);
t.style.display = "none";
var q = function() {
t.parentNode.removeChild(t);
};
I(j, "onload", q);
} else {
t.parentNode.replaceChild(G(t), t);
}
}
function G(v) {
var u = a("div");
if (h.win && h.ie) {
u.innerHTML = v.innerHTML;
} else {
var r = v.getElementsByTagName(Q)[0];
if (r) {
var w = r.childNodes;
if (w) {
var q = w.length;
for (var t = 0; t < q; t++) {
if (!(w[t].nodeType == 1 && w[t].nodeName == "PARAM") && !(w[t].nodeType == 8)) {
u.appendChild(w[t].cloneNode(true));
}
}
}
}
}
return u;
}
function U(AG, AE, t) {
var q, v = C(t);
if (v) {
if (typeof AG.id == b) {
AG.id = t;
}
if (h.ie && h.win) {
var AF = "";
for (var AB in AG) {
if (AG[AB] != Object.prototype[AB]) {
if (AB.toLowerCase() == "data") {
AE.movie = AG[AB];
} else {
if (AB.toLowerCase() == "styleclass") {
AF += ' class="' + AG[AB] + '"';
} else {
if (AB.toLowerCase() != "classid") {
AF += " " + AB + '="' + AG[AB] + '"';
}
}
}
}
}
var AD = "";
for (var AA in AE) {
if (AE[AA] != Object.prototype[AA]) {
AD += '<param name="' + AA + '" value="' + AE[AA] + '" />';
}
}
v.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + AF + ">" + AD + "</object>";
i[i.length] = AG.id;
q = C(AG.id);
} else {
if (h.webkit && h.webkit < 312) {
var AC = a("embed");
AC.setAttribute("type", P);
for (var z in AG) {
if (AG[z] != Object.prototype[z]) {
if (z.toLowerCase() == "data") {
AC.setAttribute("src", AG[z]);
} else {
if (z.toLowerCase() == "styleclass") {
AC.setAttribute("class", AG[z]);
} else {
if (z.toLowerCase() != "classid") {
AC.setAttribute(z, AG[z]);
}
}
}
}
}
for (var y in AE) {
if (AE[y] != Object.prototype[y]) {
if (y.toLowerCase() != "movie") {
AC.setAttribute(y, AE[y]);
}
}
}
v.parentNode.replaceChild(AC, v);
q = AC;
} else {
var u = a(Q);
u.setAttribute("type", P);
for (var x in AG) {
if (AG[x] != Object.prototype[x]) {
if (x.toLowerCase() == "styleclass") {
u.setAttribute("class", AG[x]);
} else {
if (x.toLowerCase() != "classid") {
u.setAttribute(x, AG[x]);
}
}
}
}
for (var w in AE) {
if (AE[w] != Object.prototype[w] && w.toLowerCase() != "movie") {
F(u, w, AE[w]);
}
}
v.parentNode.replaceChild(u, v);
q = u;
}
}
}
return q;
}
function F(t, q, r) {
var u = a("param");
u.setAttribute("name", q);
u.setAttribute("value", r);
t.appendChild(u);
}
function X(r) {
var q = C(r);
if (q && (q.nodeName == "OBJECT" || q.nodeName == "EMBED")) {
if (h.ie && h.win) {
if (q.readyState == 4) {
B(r);
} else {
j.attachEvent("onload", function() {
B(r);
});
}
} else {
q.parentNode.removeChild(q);
}
}
}
function B(t) {
var r = C(t);
if (r) {
for (var q in r) {
if (typeof r[q] == "function") {
r[q] = null;
}
}
r.parentNode.removeChild(r);
}
}
function C(t) {
var q = null;
try {
q = K.getElementById(t);
} catch (r) {}
return q;
}
function a(q) {
return K.createElement(q);
}
function I(t, q, r) {
t.attachEvent(q, r);
d[d.length] = [ t, q, r ];
}
function c(t) {
var r = h.pv, q = t.split(".");
q[0] = parseInt(q[0], 10);
q[1] = parseInt(q[1], 10) || 0;
q[2] = parseInt(q[2], 10) || 0;
return r[0] > q[0] || r[0] == q[0] && r[1] > q[1] || r[0] == q[0] && r[1] == q[1] && r[2] >= q[2] ? true : false;
}
function V(v, r) {
if (h.ie && h.mac) {
return;
}
var u = K.getElementsByTagName("head")[0], t = a("style");
t.setAttribute("type", "text/css");
t.setAttribute("media", "screen");
if (!(h.ie && h.win) && typeof K.createTextNode != b) {
t.appendChild(K.createTextNode(v + " {" + r + "}"));
}
u.appendChild(t);
if (h.ie && h.win && typeof K.styleSheets != b && K.styleSheets.length > 0) {
var q = K.styleSheets[K.styleSheets.length - 1];
if (typeof q.addRule == Q) {
q.addRule(v, r);
}
}
}
function W(t, q) {
var r = q ? "visible" : "hidden";
if (e && C(t)) {
C(t).style.visibility = r;
} else {
V("#" + t, "visibility:" + r);
}
}
function g(s) {
var r = /[\\\"<>\.;]/;
var q = r.exec(s) != null;
return q ? encodeURIComponent(s) : s;
}
var D = function() {
if (h.ie && h.win) {
window.attachEvent("onunload", function() {
var w = d.length;
for (var v = 0; v < w; v++) {
d[v][0].detachEvent(d[v][1], d[v][2]);
}
var t = i.length;
for (var u = 0; u < t; u++) {
X(i[u]);
}
for (var r in h) {
h[r] = null;
}
h = null;
for (var q in swfobject) {
swfobject[q] = null;
}
swfobject = null;
});
}
}();
return {
registerObject: function(u, q, t) {
if (!h.w3cdom || !u || !q) {
return;
}
var r = {};
r.id = u;
r.swfVersion = q;
r.expressInstall = t ? t : false;
N[N.length] = r;
W(u, false);
},
getObjectById: function(v) {
var q = null;
if (h.w3cdom) {
var t = C(v);
if (t) {
var u = t.getElementsByTagName(Q)[0];
if (!u || u && typeof t.SetVariable != b) {
q = t;
} else {
if (typeof u.SetVariable != b) {
q = u;
}
}
}
}
return q;
},
embedSWF: function(x, AE, AB, AD, q, w, r, z, AC) {
if (!h.w3cdom || !x || !AE || !AB || !AD || !q) {
return;
}
AB += "";
AD += "";
if (c(q)) {
W(AE, false);
var AA = {};
if (AC && typeof AC === Q) {
for (var v in AC) {
if (AC[v] != Object.prototype[v]) {
AA[v] = AC[v];
}
}
}
AA.data = x;
AA.width = AB;
AA.height = AD;
var y = {};
if (z && typeof z === Q) {
for (var u in z) {
if (z[u] != Object.prototype[u]) {
y[u] = z[u];
}
}
}
if (r && typeof r === Q) {
for (var t in r) {
if (r[t] != Object.prototype[t]) {
if (typeof y.flashvars != b) {
y.flashvars += "&" + t + "=" + r[t];
} else {
y.flashvars = t + "=" + r[t];
}
}
}
}
f(function() {
U(AA, y, AE);
if (AA.id == AE) {
W(AE, true);
}
});
} else {
if (w && !A && c("6.0.65") && (h.win || h.mac)) {
A = true;
W(AE, false);
f(function() {
var AF = {};
AF.id = AF.altContentId = AE;
AF.width = AB;
AF.height = AD;
AF.expressInstall = w;
k(AF);
});
}
}
},
getFlashPlayerVersion: function() {
return {
major: h.pv[0],
minor: h.pv[1],
release: h.pv[2]
};
},
hasFlashPlayerVersion: c,
createSWF: function(t, r, q) {
if (h.w3cdom) {
return U(t, r, q);
} else {
return undefined;
}
},
removeSWF: function(q) {
if (h.w3cdom) {
X(q);
}
},
createCSS: function(r, q) {
if (h.w3cdom) {
V(r, q);
}
},
addDomLoadEvent: f,
addLoadEvent: R,
getQueryParamValue: function(v) {
var u = K.location.search || K.location.hash;
if (v == null) {
return g(u);
}
if (u) {
var t = u.substring(1).split("&");
for (var r = 0; r < t.length; r++) {
if (t[r].substring(0, t[r].indexOf("=")) == v) {
return g(t[r].substring(t[r].indexOf("=") + 1));
}
}
}
return "";
},
expressInstallCallback: function() {
if (A && M) {
var q = C(m);
if (q) {
q.parentNode.replaceChild(M, q);
if (l) {
W(l, true);
if (h.ie && h.win) {
M.style.display = "block";
}
}
M = null;
l = null;
A = false;
}
}
}
};
}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment