Skip to content

Instantly share code, notes, and snippets.

@andymason
Created August 7, 2012 14:14
Show Gist options
  • Save andymason/3285675 to your computer and use it in GitHub Desktop.
Save andymason/3285675 to your computer and use it in GitHub Desktop.
Google Doodle hurdle game
// https://www.google.com/doodles/hurdles-2012
(function () {
var h = void 0,
i = !0,
j = null,
l = !1,
m, n = this,
aa = function (a, b) {
var c = a.split("."),
d = n;
!(c[0] in d) && d.execScript && d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift());)!c.length && b !== h ? d[e] = b : d = d[e] ? d[e] : d[e] = {}
}, ba = function (a) {
var b = typeof a;
if ("object" == b) if (a) {
if (a instanceof Array) return "array";
if (a instanceof Object) return b;
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) return "object";
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
} else return "null";
else if ("function" == b && "undefined" == typeof a.call) return "object";
return b
}, ca = "closure_uid_" + Math.floor(2147483648 * Math.random()).toString(36),
da = 0,
ea = function (a, b, c) {
return a.call.apply(a.bind, arguments)
}, fa = function (a, b, c) {
if (!a) throw Error();
if (2 < arguments.length) {
var d = Array.prototype.slice.call(arguments, 2);
return function () {
var c = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(c, d);
return a.apply(b, c)
}
}
return function () {
return a.apply(b, arguments)
}
}, p = function (a, b, c) {
p = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? ea : fa;
return p.apply(j, arguments)
}, ga = function (a, b) {
function c() {}
c.prototype = b.prototype;
a.Y = b.prototype;
a.prototype = new c
};
Function.prototype.bind = Function.prototype.bind || function (a, b) {
if (1 < arguments.length) {
var c = Array.prototype.slice.call(arguments, 1);
c.unshift(this, a);
return p.apply(j, c)
}
return p(this, a)
};
var ha, ia = 0 <= navigator.userAgent.indexOf("MSIE"),
ka = function (a) {
for (var b = ja, c = 0, d; d = b[c++];) if (a == d) return i;
return l
}, r = function (a, b, c) {
a = document.createElement(a);
b && (a.id = b);
c && (a.className = c);
return a
}, u = function () {
return (new Date).getTime()
}, v = function (a, b, c) {
return b + Math.min(1, Math.max(0, a)) * (c - b)
}, la = function (a, b) {
return eval(a + String.fromCharCode(37) + b)
};
var w = function () {
this.C = this.A = this.a = 0;
this.K = []
};
w.prototype.play = function () {
ha || (this.stop(), this.A = 0, this.C = u(), this.a = window.setInterval(p(this.W, this), 16), this.W())
};
var x = function (a, b, c) {
a.K.push({
duration: c || 0,
L: b
})
};
w.prototype.stop = function () {
if (this.a) {
for (var a; a = this.K[this.A++];) a.L(1);
window.clearInterval(this.a);
this.a = 0
}
};
var ma = function (a, b) {
x(a, function () {}, b)
};
w.prototype.W = function () {
var a = u();
if (!ha) for (var b; b = this.K[this.A]; this.A++) {
var c = a - this.C;
if (c < b.duration) {
b.L(c / b.duration);
return
}
b.L(1);
0 < b.duration && (this.C += b.duration)
}
this.stop()
};
var y = function (a, b, c, d, e, f, g, k) {
this.reset = function () {
this.g = this.frame = this.M = this.o = 0;
this.offsetX = g || 0;
this.offsetY = k || 0;
this.O = this.p = this.opacity = 1;
this.Z = c || 0;
this.$ = d || 0;
this.y = this.x = 0;
this.N = a;
this.i = a.getContext("2d");
this.v = j;
this.H = f;
this.G = b;
this.I = e
};
this.reset()
}, na = function (a, b, c) {
for (var d = new w, c = c / b, e = function (a, b) {
return function () {
a.frame = b
}
}, f = 0; f < b; f++) x(d, e(a, f), c);
return d
}, z = function (a) {
if (a.opacity) {
var b = a.getWidth(),
c = a.getHeight(),
d = b / 2,
e = c / 2,
f = Math.abs(a.offsetX),
g = Math.abs(a.offsetY);
if (0 < a.x + b + d + f && 0 < a.y + c + e + g && a.x - f < a.N.width && a.y - g < a.N.height) {
a.i.save();
a.i.globalAlpha = a.opacity;
f = a.x + d;
g = a.y + e;
a.g && (f += a.g * (Math.random() - 0.5), g += a.g * (Math.random() - 0.5));
a.i.translate(f, g);
f = a.o;
a.M && (f += a.M * (Math.random() - 0.5));
f && a.i.rotate(f);
(1 != a.p || 1 != a.O) && a.i.scale(a.p, a.O);
try {
a.i.drawImage(a.G, a.Z + a.frame * b, a.$, b, c, a.offsetX - d, a.offsetY - e, b, c)
} catch (k) {}
a.i.restore()
}
}
}, oa = function (a, b, c) {
var d;
d == h && (d = a.opacity);
a.v && a.v.stop();
a.v = new w;
var e = a.v,
f = d;
d = p(function (a) {
this.opacity = v(a, f, c)
}, a);
x(e, d, b);
a.v.play()
};
y.prototype.getHeight = function () {
this.H || (this.H = this.G.height);
return this.H
};
y.prototype.getWidth = function () {
this.I || (this.I = this.G.width);
return this.I
};
var pa = {}, qa = {
pa: 0,
ra: 1,
ua: 2,
oa: 3,
qa: 4,
ta: 5,
ma: 6
};
pa.F = j;
var ra = [],
A = {}, sa = 0,
ta = j,
ua = j,
va = l,
B = function (a, b) {
return a.buttons[b] && 0.5 < a.buttons[b]
}, C = function (a, b, c) {
return "undefined" == typeof a.axes[b] ? l : c ? -0.75 > a.axes[b] : 0.75 < a.axes[b]
}, xa = function (a) {
pa.F = a.gamepad;
va || (va = i, wa())
}, ya = function () {
delete pa.F;
va = l
}, wa = function () {
var a;
if (pa.F) a = pa.F;
else {
var b = navigator.webkitGetGamepads && navigator.webkitGetGamepads() || navigator.webkitGamepads;
a = b && (b[3] || b[2] || b[1] || b[0]) || j
}
if (a && !(a.timestamp && a.timestamp == sa)) {
sa = a.timestamp;
b = [];
b[0] = B(a, 14) || C(a, 0,
i) || C(a, 2, i);
b[1] = B(a, 15) || C(a, 0, l) || C(a, 2, l);
b[2] = B(a, 12) || C(a, 1, i) || C(a, 3, i);
b[3] = B(a, 13) || C(a, 1, l) || C(a, 3, l);
b[4] = B(a, 0) || B(a, 4) || B(a, 6) || B(a, 8) || B(a, 9) || B(a, 10);
b[5] = B(a, 1) || B(a, 5) || B(a, 7) || B(a, 11);
b[6] = B(a, 2) || B(a, 3);
if (ra.length) for (var c in qa) {
a = qa[c];
var d = b[a];
if ("undefined" != typeof d && d != ra[a] && A[a]) {
ua && ua();
var e = document.createEvent("Event");
e.initEvent(d ? "keydown" : "keyup", i, i);
e.keyCode = A[a];
ta.dispatchEvent(e)
}
}
ra = b
}
va && (window.requestAnimationFrame ? window.requestAnimationFrame(wa) : window.oRequestAnimationFrame ? window.oRequestAnimationFrame(wa) : window.mozRequestAnimationFrame ? window.mozRequestAnimationFrame(wa) : window.msRequestAnimationFrame ? window.msRequestAnimationFrame(wa) : window.webkitRequestAnimationFrame && window.webkitRequestAnimationFrame(wa))
};
var za = function (a) {
Error.captureStackTrace ? Error.captureStackTrace(this, za) : this.stack = Error().stack || "";
a && (this.message = String(a))
};
ga(za, Error);
var Aa = function (a, b) {
for (var c = 1; c < arguments.length; c++) var d = String(arguments[c]).replace(/\$/g, "$$$$"),
a = a.replace(/\%s/, d);
return a
};
var Ba = function (a, b) {
b.unshift(a);
za.call(this, Aa.apply(j, b));
b.shift()
};
ga(Ba, za);
var Ca = function (a, b, c) {
if (!a) {
var d = Array.prototype.slice.call(arguments, 2),
e = "Assertion failed";
if (b) var e = e + (": " + b),
f = d;
throw new Ba("" + e, f || []);
}
};
var Da = Array.prototype,
Ea = Da.indexOf ? function (a, b, c) {
Ca(a.length != j);
return Da.indexOf.call(a, b, c)
} : function (a, b, c) {
c = c == j ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
if ("string" == typeof a) return "string" != typeof b || 1 != b.length ? -1 : a.indexOf(b, c);
for (; c < a.length; c++) if (c in a && a[c] === b) return c;
return -1
};
var Fa = function () {};
var Ga, Ha, Ia, Ja, Ka = function () {
return n.navigator ? n.navigator.userAgent : j
};
Ja = Ia = Ha = Ga = l;
var La;
if (La = Ka()) {
var Ma = n.navigator;
Ga = 0 == La.indexOf("Opera");
Ha = !Ga && -1 != La.indexOf("MSIE");
Ia = !Ga && -1 != La.indexOf("WebKit");
Ja = !Ga && !Ia && "Gecko" == Ma.product
}
var Na = Ga,
D = Ha,
Oa = Ja,
Pa = Ia,
Qa;
a: {
var Sa = "",
Ta;
if (Na && n.opera) var Ua = n.opera.version,
Sa = "function" == typeof Ua ? Ua() : Ua;
else if (Oa ? Ta = /rv\:([^\);]+)(\)|;)/ : D ? Ta = /MSIE\s+([^\);]+)(\)|;)/ : Pa && (Ta = /WebKit\/(\S+)/), Ta) var Va = Ta.exec(Ka()),
Sa = Va ? Va[1] : "";
if (D) {
var Wa, Xa = n.document;
Wa = Xa ? Xa.documentMode : h;
if (Wa > parseFloat(Sa)) {
Qa = String(Wa);
break a
}
}
Qa = Sa
}
var Ya = Qa,
Za = {}, E = function (a) {
var b;
if (!(b = Za[a])) {
b = 0;
for (var c = String(Ya).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), d = String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), e = Math.max(c.length, d.length), f = 0; 0 == b && f < e; f++) {
var g = c[f] || "",
k = d[f] || "",
o = RegExp("(\\d*)(\\D*)", "g"),
s = RegExp("(\\d*)(\\D*)", "g");
do {
var t = o.exec(g) || ["", "", ""],
q = s.exec(k) || ["", "", ""];
if (0 == t[0].length && 0 == q[0].length) break;
b = ((0 == t[1].length ? 0 : parseInt(t[1], 10)) < (0 == q[1].length ? 0 : parseInt(q[1], 10)) ? -1 : (0 == t[1].length ? 0 : parseInt(t[1], 10)) > (0 == q[1].length ? 0 : parseInt(q[1], 10)) ? 1 : 0) || ((0 == t[2].length) < (0 == q[2].length) ? -1 : (0 == t[2].length) > (0 == q[2].length) ? 1 : 0) || (t[2] < q[2] ? -1 : t[2] > q[2] ? 1 : 0)
} while (0 == b)
}
b = Za[a] = 0 <= b
}
return b
}, $a = {}, ab = function () {
return $a[9] || ($a[9] = D && !! document.documentMode && 9 <= document.documentMode)
};
var bb = function (a) {
bb[" "](a);
return a
};
bb[" "] = function () {};
!D || ab();
var cb = !D || ab(),
db = D && !E("8");
!Pa || E("528");
Oa && E("1.9b") || D && E("8") || Na && E("9.5") || Pa && E("528");
Oa && !E("8") || D && E("9");
var eb = function (a, b) {
this.type = a;
this.currentTarget = this.target = b
};
eb.prototype.D = l;
eb.prototype.defaultPrevented = l;
eb.prototype.stopPropagation = function () {
this.D = i
};
eb.prototype.preventDefault = function () {
this.defaultPrevented = i
};
var fb = function (a, b) {
a && this.init(a, b)
};
ga(fb, eb);
m = fb.prototype;
m.target = j;
m.relatedTarget = j;
m.offsetX = 0;
m.offsetY = 0;
m.clientX = 0;
m.clientY = 0;
m.screenX = 0;
m.screenY = 0;
m.button = 0;
m.keyCode = 0;
m.charCode = 0;
m.ctrlKey = l;
m.altKey = l;
m.shiftKey = l;
m.metaKey = l;
m.w = j;
m.init = function (a, b) {
var c = this.type = a.type;
eb.call(this, c);
this.target = a.target || a.srcElement;
this.currentTarget = b;
var d = a.relatedTarget;
if (d) {
if (Oa) {
var e;
a: {
try {
bb(d.nodeName);
e = i;
break a
} catch (f) {}
e = l
}
e || (d = j)
}
} else "mouseover" == c ? d = a.fromElement : "mouseout" == c && (d = a.toElement);
this.relatedTarget = d;
this.offsetX = Pa || a.offsetX !== h ? a.offsetX : a.layerX;
this.offsetY = Pa || a.offsetY !== h ? a.offsetY : a.layerY;
this.clientX = a.clientX !== h ? a.clientX : a.pageX;
this.clientY = a.clientY !== h ? a.clientY : a.pageY;
this.screenX = a.screenX || 0;
this.screenY = a.screenY || 0;
this.button = a.button;
this.keyCode = a.keyCode || 0;
this.charCode = a.charCode || ("keypress" == c ? a.keyCode : 0);
this.ctrlKey = a.ctrlKey;
this.altKey = a.altKey;
this.shiftKey = a.shiftKey;
this.metaKey = a.metaKey;
this.state = a.state;
this.w = a;
a.defaultPrevented && this.preventDefault();
delete this.D
};
m.stopPropagation = function () {
fb.Y.stopPropagation.call(this);
this.w.stopPropagation ? this.w.stopPropagation() : this.w.cancelBubble = i
};
m.preventDefault = function () {
fb.Y.preventDefault.call(this);
var a = this.w;
if (a.preventDefault) a.preventDefault();
else if (a.returnValue = l, db) try {
if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) a.keyCode = -1
} catch (b) {}
};
var gb = function () {}, hb = 0;
m = gb.prototype;
m.key = 0;
m.s = l;
m.S = l;
m.init = function (a, b, c, d, e, f) {
if ("function" == ba(a)) this.T = i;
else if (a && a.handleEvent && "function" == ba(a.handleEvent)) this.T = l;
else throw Error("Invalid listener argument");
this.z = a;
this.P = b;
this.src = c;
this.type = d;
this.capture = !! e;
this.Q = f;
this.S = l;
this.key = ++hb;
this.s = l
};
m.handleEvent = function (a) {
return this.T ? this.z.call(this.Q || this.src, a) : this.z.handleEvent.call(this.z, a)
};
var ib = {}, F = {}, jb = {}, kb = {}, lb = function (a, b, c, d, e) {
if (b) {
if ("array" == ba(b)) {
for (var f = 0; f < b.length; f++) lb(a, b[f], c, d, e);
return j
}
var d = !! d,
g = F;
b in g || (g[b] = {
d: 0,
k: 0
});
g = g[b];
d in g || (g[d] = {
d: 0,
k: 0
}, g.d++);
var g = g[d],
k = a[ca] || (a[ca] = ++da),
o;
g.k++;
if (g[k]) {
o = g[k];
for (f = 0; f < o.length; f++) if (g = o[f], g.z == c && g.Q == e) {
if (g.s) break;
return o[f].key
}
} else o = g[k] = [], g.d++;
var s = mb,
t = cb ? function (a) {
return s.call(t.src, t.key, a)
} : function (a) {
a = s.call(t.src, t.key, a);
if (!a) return a
}, f = t;
f.src = a;
g = new gb;
g.init(c, f,
a, b, d, e);
c = g.key;
f.key = c;
o.push(g);
ib[c] = g;
jb[k] || (jb[k] = []);
jb[k].push(g);
a.addEventListener ? (a == n || !a.aa) && a.addEventListener(b, f, d) : a.attachEvent(b in kb ? kb[b] : kb[b] = "on" + b, f);
return c
}
throw Error("Invalid event type");
}, nb = function (a, b, c, d) {
if (!d.B && d.R) {
for (var e = 0, f = 0; e < d.length; e++) d[e].s ? d[e].P.src = j : (e != f && (d[f] = d[e]), f++);
d.length = f;
d.R = l;
0 == f && (delete F[a][b][c], F[a][b].d--, 0 == F[a][b].d && (delete F[a][b], F[a].d--), 0 == F[a].d && delete F[a])
}
}, pb = function (a, b, c, d, e) {
var f = 1,
b = b[ca] || (b[ca] = ++da);
if (a[b]) {
a.k--;
a = a[b];
a.B ? a.B++ : a.B = 1;
try {
for (var g = a.length, k = 0; k < g; k++) {
var o = a[k];
o && !o.s && (f &= ob(o, e) !== l)
}
} finally {
a.B--, nb(c, d, b, a)
}
}
return Boolean(f)
}, ob = function (a, b) {
if (a.S) {
var c = a.key;
if (ib[c]) {
var d = ib[c];
if (!d.s) {
var e = d.src,
f = d.type,
g = d.P,
k = d.capture;
e.removeEventListener ? (e == n || !e.aa) && e.removeEventListener(f, g, k) : e.detachEvent && e.detachEvent(f in kb ? kb[f] : kb[f] = "on" + f, g);
e = e[ca] || (e[ca] = ++da);
if (jb[e]) {
var g = jb[e],
o = Ea(g, d);
0 <= o && (Ca(g.length != j), Da.splice.call(g, o, 1));
0 == g.length && delete jb[e]
}
d.s = i;
if (d = F[f][k][e]) d.R = i, nb(f, k, e, d);
delete ib[c]
}
}
}
return a.handleEvent(b)
}, mb = function (a, b) {
if (!ib[a]) return i;
var c = ib[a],
d = c.type,
e = F;
if (!(d in e)) return i;
var e = e[d],
f, g;
if (!cb) {
var k;
if (!(k = b)) a: {
k = ["window", "event"];
for (var o = n; f = k.shift();) if (o[f] != j) o = o[f];
else {
k = j;
break a
}
k = o
}
f = k;
k = i in e;
o = l in e;
if (k) {
if (0 > f.keyCode || f.returnValue != h) return i;
a: {
var s = l;
if (0 == f.keyCode) try {
f.keyCode = -1;
break a
} catch (t) {
s = i
}
if (s || f.returnValue == h) f.returnValue = i
}
}
s = new fb;
s.init(f, this);
f = i;
try {
if (k) {
for (var q = [], Ra = s.currentTarget; Ra; Ra = Ra.parentNode) q.push(Ra);
g = e[i];
g.k = g.d;
for (var O = q.length - 1; !s.D && 0 <= O && g.k; O--) s.currentTarget = q[O], f &= pb(g, q[O], d, i, s);
if (o) {
g = e[l];
g.k = g.d;
for (O = 0; !s.D && O < q.length && g.k; O++) s.currentTarget = q[O], f &= pb(g, q[O], d, l, s)
}
} else f = ob(c, s)
} finally {
q && (q.length = 0)
}
return f
}
d = new fb(b, this);
return f = ob(c, d)
};
var qb = function (a) {
this.ka = a;
this.la = []
};
ga(qb, Fa);
var rb = [];
qb.prototype.listen = function (a, b, c, d, e) {
"array" != ba(b) && (rb[0] = b, b = rb);
for (var f = 0; f < b.length; f++) {
var g = lb(a, b[f], c || this, d || l, e || this.ka || this);
this.la.push(g)
}
return this
};
qb.prototype.handleEvent = function () {
throw Error("EventHandler.handleEvent not implemented");
};
var sb = function (a, b, c, d, e) {
qb.call(this);
this.ea = a;
this.ba = b;
this.V = c;
this.U = d;
this.ha = e;
this.listen(this.ha, "click", this.ia)
};
ga(sb, qb);
sb.prototype.ia = function () {
window.gapi && window.gbar && window.gbar.asmc ? window.gapi.load("share", p(this.X, this)) : window.open("about:blank").location = "https://plus.google.com"
};
sb.prototype.X = function () {
if (window.gapi && window.gapi.share) {
var a = {
items: [{
type: "http://schema.org/WebPage",
id: location.protocol + "//" + location.host,
properties: {
description: [this.V],
url: this.ea,
name: [this.ba],
image: [this.U]
}
}]
}, b = window.location.toString().match(/[?&]authuser=(\d+)/);
window.gapi.share.lightbox(a, {
isLoggedInForGooglePlus: !(!window.gbar || !window.gbar.asmc) || !! window.google.doodle.sf,
onLoginPopupBlocked: function () {
window.google.log && window.google.log("DOODLE", "popupblocked")
},
sessionIndex: b && b[1] || "",
sourceForLogging: "doodle",
onLoginStateChanged: p(function () {
aa("google.doodle.sf", i);
this.X()
}, this)
})
}
};
var tb, ub, G, vb, wb, xb, H, yb, zb, Ab, Bb, Cb, Db, Eb, Fb, Gb, I, J, K, Hb, Ib, L, Jb, M, ja = [32, 13],
Kb = [],
Lb = 0,
Mb = l,
Nb = 0,
Ob = [],
Pb = i,
Rb = function (a, b, c) {
for (var d = new w, e = 0; 2 >= e; e++) x(d, Qb(a, b + e)), ma(d, 16);
if (c) {
ma(d, 64);
for (e = 2; 0 <= e; e--) x(d, Qb(a, b + e)), ma(d, 16);
x(d, Qb(a, a.className))
}
return d
}, Ub = function (a) {
var b = r("img");
b.src = "/logos/2012/" + a;
Db && (!b.complete && "complete" != b.readyState ? (b.onload = Sb, Lb++) : Eb || (Eb = window.setTimeout(Tb, 10)));
return b
}, N = function () {
var a = u(),
b = a - zb;
Kb.push(b);
30 < Kb.length && Kb.shift();
b = Math.min(40, b);
K || Ab && 18E4 < a - Ab ? Mb = l : !Pb && vb(a, b) ? (window.requestAnimationFrame ? window.requestAnimationFrame(N, G) : window.oRequestAnimationFrame ? window.oRequestAnimationFrame(N) : window.mozRequestAnimationFrame ? window.mozRequestAnimationFrame(N) : window.msRequestAnimationFrame ? window.msRequestAnimationFrame(N) : window.webkitRequestAnimationFrame ? window.webkitRequestAnimationFrame(N, G) : window.setTimeout(N, 16), zb = a, Mb = i) : Mb = l
}, Vb = function (a, b, c) {
window.google && window.google.log && window.google.log("doodle-hurdles", "p:" + a + ",s:" + ("undefined" != typeof b ? b : "_") + ",nc:" + ("undefined" != typeof c ? c : "_") + ",d:" + Nb + ",")
}, Qb = function (a, b) {
return function () {
a.className = b
}
}, Wb = function () {
Ab = u();
!Pb && (!Mb && !K) && N()
}, Xb = function (a) {
Wb();
(37 == a.keyCode || 39 == a.keyCode || 38 == a.keyCode || 40 == a.keyCode || ka(a.keyCode)) && a.preventDefault();
K && (ka(a.keyCode) && !J.a) && J.play();
Cb && Cb(a)
}, Yb = function (a) {
ka(a.keyCode) && a.preventDefault()
}, Sb = function () {
--Lb || Db()
}, Tb = function () {
Lb || Db();
Eb = j
}, Zb = function (a) {
Wb();
document.activeElement == G && !K && a.preventDefault();
Fb && Fb(a)
}, $b = function (a) {
Wb();
Gb && Gb(a)
}, ac = function () {
window.getSelection().selectAllChildren(Bb)
}, bc = function (a, b, c) {
a.style.margin = c + "px 0 0 " + b + "px"
};
var cc = {
ALL: ["Play again", "Search", "Share on Google+"],
af: ["Speel weer", "Soek", "Deel op Google+"],
"am_ET(Amharic/ALL)": ["\u12a5\u1295\u12f0\u1308\u1293 \u12a0\u132b\u12cd\u1275", "\u1348\u120d\u130d", "Google+ \u120b\u12ed \u12a0\u130b\u122b"],
ar: ["\u0627\u0644\u0644\u0639\u0628 \u0645\u0631\u0629 \u062b\u0627\u0646\u064a\u0629", "\u0628\u062d\u062b", "\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0639\u0644\u0649 +Google"],
az: ["Yen\u0259 oyna", "Axtar", "Google+'da b\u00f6l\u00fc\u015f"],
be: ["\u042f\u0448\u0447\u044d \u0440\u0430\u0437", "\u0428\u0443\u043a\u0430\u0446\u044c", "\u041f\u0430\u0434\u0437\u044f\u043b\u0456\u0446\u0446\u0430 \u043d\u0430 Google+"],
bg: ["\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435", "\u0422\u044a\u0440\u0441\u0435\u043d\u0435", "\u0421\u043f\u043e\u0434\u0435\u043b\u044f\u043d\u0435 \u0432 Google+"],
bn: ["\u0986\u09ac\u09be\u09b0 \u09aa\u09cd\u09b2\u09c7 \u0995\u09b0\u09c1\u09a8", "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09c1\u09a8", "Google+ \u098f \u09ad\u09be\u0997 \u0995\u09b0\u09c1\u09a8"],
bs: ["Igraj ponovno", "Tra\u017ei", "Podijeli na Google+"],
ca: ["Juga una altra vegada", "Cerca ", "Comparteix a Google+"],
cs: ["Hr\u00e1t znovu", "Hledat", "Sd\u00edlet na Google+"],
da: ["Spil igen", "S\u00f8g", "Del p\u00e5 Google+"],
de: ["Nochmal ansehen", "Suchen", "Auf Google+ teilen"],
el: ["\u03a0\u03b1\u03af\u03be\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac", "\u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03c4\u03b5", "\u039c\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf Google+"],
en_us: ["Play again", "Search", "Share on Google+"],
"en-GB": ["Play again", "Search", "Share on Google+"],
es: ["Jugar de nuevo", "Buscar", "Compartir en Google+"],
"es-419": ["Jugar de nuevo", "Buscar", "Compartir en Google+"],
et: ["M\u00e4ngi uuesti", "Otsi", "Jaga teenuses Google+"],
eu: ["Jolastu berriro", "Bilatu", "Partekatu Google+en"],
fi: ["Toista uudelleen", "Hae", "Jaa Google+ -palvelussa"],
fr: ["Revoir", "Rechercher", "Partager sur Google+"],
ga: ["Seinn ar\u00eds \u00e9", "Cuardaigh", "Roinn ar Google+"],
gl: ["Xogar de novo", "Buscar", "Compartir en Google+"],
hr: ["Ponovi", "Pretra\u017ei", "Dijeli na Google+"],
hu: ["Lej\u00e1tsz\u00e1s ism\u00e9t", "Keres\u00e9s", "Megoszt\u00e1s a Google+-on"],
id: ["Main lagi", "Telusuri", "Bagikan di Google+"],
is: ["Spila aftur", "Leita", "Deila \u00e1 Google+"],
it: ["Gioca di nuovo", "Cerca", "Condividi su Google+"],
iw: ["\u05d4\u05e4\u05e2\u05dc \u05e9\u05d5\u05d1", "\u05d7\u05e4\u05e9", "\u05e9\u05ea\u05e3 \u05d1-Google+"],
ja: ["\u3082\u3046\u4e00\u5ea6\u898b\u308b", "\u691c\u7d22", "Google+ \u3067\u5171\u6709"],
ko: ["\ub2e4\uc2dc\ud558\uae30", "\uac80\uc0c9", "Google+\uc5d0\uc11c \uacf5\uc720"],
lt: ["Rodyti dar kart\u0105", "Ie\u0161koti", "Dalytis \u201eGoogle+\u201c"],
lv: ["Atska\u0146ot v\u0113lreiz", "Mekl\u0113t", "Kop\u012bgot Google+"],
mk: ["\u0418\u0433\u0440\u0430\u0458 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e", "\u041f\u0440\u0435\u0431\u0430\u0440\u0430\u0458", "\u0421\u043f\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 Google+"],
mr: ["\u092a\u0941\u0928\u094d\u0939\u093e \u092a\u094d\u0932\u0947 \u0915\u0930\u093e", "\u0936\u094b\u0927\u093e", "Google+ \u0935\u0930 \u0938\u093e\u092e\u093e\u092f\u093f\u0915 \u0915\u0930\u093e"],
ms_my: ["Main semula", "Cari", "Kongsi di Google+"],
nl: ["Opnieuw afspelen", "Zoeken", "Delen op Google+"],
no: ["Spill av p\u00e5 nytt", "S\u00f8k", "Del p\u00e5 Google+"],
pl: ["Odtw\u00f3rz ponownie", "Szukaj", "Udost\u0119pnij w Google+"],
"pt-BR": ["Jogar novamente", "Pesquisar", "Compartilhar no Google+"],
"pt-PT": ["Jogar novamente", "Pesquisar", "Partilhar no Google+"],
ro: ["Reda\u0163i din nou", "C\u0103uta\u0163i", "Distribui\u0163i \u00een Google+"],
ru: ["\u0418\u0433\u0440\u0430\u0442\u044c \u0435\u0449\u0451 \u0440\u0430\u0437", "\u0418\u0441\u043a\u0430\u0442\u044c", "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 Google+"],
sk: ["Hra\u0165 znova", "H\u013eada\u0165", "Zdie\u013ea\u0165 v Google+"],
sl: ["Ponovno predvajaj", "I\u0161\u010di", "Deli v storitvi Google+"],
sr: ["\u0418\u0433\u0440\u0430\u0458 \u043e\u043f\u0435\u0442", "\u041f\u0440\u0435\u0442\u0440\u0430\u0436\u0438", "\u0414\u0435\u043b\u0438 \u043d\u0430 Google+"],
sv: ["Spela igen", "S\u00f6k", "Dela p\u00e5 Google+"],
sw: ["Cheza tena", "Tafuta", "Shiriki kwenye Google+"],
th_All: ["\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 ", "\u0e04\u0e49\u0e19\u0e2b\u0e32", "\u0e41\u0e1a\u0e48\u0e07\u0e1b\u0e31\u0e19\u0e1a\u0e19 Google+"],
tr: ["Tekrar oyna", "Ara", "Google+'da payla\u015f"],
uk: ["\u0413\u0440\u0430\u0442\u0438 \u0449\u0435 \u0440\u0430\u0437", "\u0428\u0443\u043a\u0430\u0442\u0438", "\u041f\u043e\u0434\u0456\u043b\u0438\u0442\u0438\u0441\u044c \u0443 Google+"],
vi: ["Ph\u00e1t l\u1ea1i", "T\u00ecm ki\u1ebfm", "Chia s\u1ebb tr\u00ean Google+"],
"zh-CN": ["\u518d\u73a9\u4e00\u6b21", "\u641c\u7d22", "\u901a\u8fc7 Google+ \u5206\u4eab"],
"zh-TW_HK": ["\u518d\u64ad\u4e00\u6b21", "\u641c\u5c0b", "\u900f\u904e Google+ \u5206\u4eab"],
"zh-TW_tw": ["\u518d\u770b\u4e00\u6b21", "\u641c\u5c0b", "\u900f\u904e Google+ \u5206\u4eab"],
zu: ["Dlala futhi", "Sesha ", "Yabelana ku-Google+"],
hi: ["\u092b\u093c\u093f\u0930 \u0916\u0947\u0932\u0947\u0902", "\u0916\u094b\u091c\u0947\u0902", "Google+ \u092a\u0930 \u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902"],
fil: ["I-play muli", "Maghanap", "Ibahagi sa Google+"],
fa: ["\u0628\u0627\u0632\u067e\u062e\u0634", "\u062c\u0633\u062a\u062c\u0648", "\u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u062f\u0631 +Google"]
}, dc = function (a) {
return google.kHL in cc && cc[google.kHL][a] || cc.ALL[a]
};
var ec, fc, P, Q, R, gc, hc, ic, jc, kc, S, lc, mc, nc, T, U, oc, pc, qc, rc, sc, tc, uc, vc, wc, V, xc, yc, zc, Ac, Bc, Cc, W, X, Dc, Ec, Y, Fc, Gc, Hc, Ic = {
ALL: ["Score", "Hurdles", "I jumped hurdles #GoogleDoodle"],
af: ["Hoogste telling", "Hekkies", "Ek het hekkies gehardloop #GoogleDoodle"],
"am_ET(Amharic/ALL)": ["\u12a8\u134d\u1270\u129b \u12cd\u1324\u1275", "\u12e8\u1218\u1230\u1293\u12ad\u120d \u1229\u132b", "\u12e8\u1218\u1230\u1293\u12ad\u120d \u1229\u132b \u1270\u132b\u12cd\u127b\u1208\u1201! #GoogleDoodle"],
ar: ["\u0627\u0644\u0646\u062a\u064a\u062c\u0629", "\u0633\u0628\u0627\u0642 \u0627\u0644\u062d\u0648\u0627\u062c\u0632", "\u0645\u0627\u0631\u0633\u062a \u0644\u0639\u0628\u0629 \u0633\u0628\u0627\u0642 \u0627\u0644\u062d\u0648\u0627\u062c\u0632 GoogleDoodle#"],
az: ["\u018fn y\u00fcks\u0259k bal", "Mane\u0259l\u0259r il\u0259 qa\u00e7\u0131\u015f", "M\u0259n mane\u0259l\u0259r il\u0259 qa\u00e7\u0131\u015fda i\u015ftirak etdim #GoogleDoodle"],
be: ["\u041d\u0430\u0439\u043b\u0435\u043f\u0448\u044b \u0432\u044b\u043d\u0456\u043a", "\u0411\u0435\u0433 \u0437 \u0431\u0430\u0440'\u0435\u0440\u0430\u043c\u0456", "\u042f \u045e\u0434\u0437\u0435\u043b\u044c\u043d\u0456\u0447\u0430\u045e \u0443 \u0431\u0435\u0433\u0443 \u0437 \u0431\u0430\u0440'\u0435\u0440\u0430\u043c\u0456 #GoogleDoodle"],
bg: ["\u041d\u0430\u0439-\u0434\u043e\u0431\u044a\u0440 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442", "\u0411\u044f\u0433\u0430\u043d\u0435 \u0441 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f", "\u0418\u0433\u0440\u0430\u0445 \u0431\u044f\u0433\u0430\u043d\u0435 \u0441 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f #GoogleDoodle"],
bn: ["\u09b8\u09cd\u0995\u09cb\u09b0", "\u09b9\u09be\u09b0\u09cd\u09a1\u09b2\u09b0\u09c7\u09b8", "\u0986\u09ae\u09bf \u09b9\u09be\u09b0\u09cd\u09a1\u09b2\u09b0\u09c7\u09b8\u09c7 \u09a6\u09cc\u09dc\u09c7\u099b\u09bf #\u0997\u09c1\u0997\u09b2\u09a1\u09c1\u09a1\u09b2"],
bs: ["Najbolji rezultat", "Tr\u010danje s preponama", "Igrao sam tr\u010danje s preponama #GoogleDoodle"],
ca: ["R\u00e8cord", "Cursa de tanques", "He competit en una cursa de tanques #GoogleDoodle"],
cs: ["Nejvy\u0161\u0161\u00ed sk\u00f3re", "P\u0159ek\u00e1\u017ekov\u00fd b\u011bh", "Zab\u011bhejte si p\u0159es p\u0159ek\u00e1\u017eky #GoogleDoodle"],
da: ["Top score", "H\u00e6kkel\u00f8b", "Jeg hoppede h\u00e6k #GoogleDoodle"],
de: ["Rekord", "H\u00fcrdenlauf", "Ich bin \u00fcber die H\u00fcrden gesprungen #GoogleDoodle"],
el: ["\u03a5\u03c8\u03b7\u03bb\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b5\u03c2", "\u0395\u03bc\u03c0\u03cc\u03b4\u03b9\u03b1", "\u03a0\u03ae\u03b4\u03b7\u03be\u03b1 \u03b5\u03bc\u03c0\u03cc\u03b4\u03b9\u03b1 #GoogleDoodle"],
en_us: ["Score", "Hurdles", "I jumped hurdles #GoogleDoodle"],
"en-GB": ["Score", "Hurdles", "I jumped hurdles #GoogleDoodle"],
es: ["R\u00e9cord", "Carrera de vallas", "He hecho una carrera de vallas #GoogleDoodle"],
"es-419": ["Resultado", "Carrera de vallas", "Particip\u00e9 en una carrera de vallas #GoogleDoodle"],
et: ["Rekordtulemus", "T\u00f5kkejooks", "Jooksin t\u00f5kkeid #GoogleDoodle"],
eu: ["Errekorra", "Hesi-lasterketa", "Hesi-lasterketan aritu naiz #GoogleDoodle"],
fi: ["K\u00e4rkitulos", "Aitajuoksu", "Juoksin aitajuoksun #GoogleDoodle"],
fr: ["Meilleur r\u00e9sultat", "Course de haies", "J'ai fait une course de haies #GoogleDoodle"],
ga: ["Sc\u00f3r is fearr", "Cliathr\u00e1s", "Rith m\u00e9 cliathr\u00e1s #GoogleDoodle"],
gl: ["Record", "Carreira de obst\u00e1culos", "Saltei os valos #GoogleDoodle"],
hr: ["Najbolji rezultat", "Tr\u010danje s preponama", "Igrao sam tr\u010danje s preponama #GoogleDoodle"],
is: ["Flest stig", "Grindahlaup", "\u00c9g f\u00f3r \u00ed grindahlaup #GoogleDoodle"],
it: ["Miglior punteggio", "Corsa a ostacoli", "Ho giocato alla corsa a ostacoli #GoogleDoodle"],
iw: ["\u05e0\u05d9\u05e7\u05d5\u05d3", "\u05de\u05e9\u05d5\u05db\u05d5\u05ea", "\u05e8\u05e6\u05ea\u05d9 \u05e8\u05d9\u05e6\u05ea \u05de\u05e9\u05d5\u05db\u05d5\u05ea #GoogleDoodle "],
hu: ["Legjobb eredm\u00e9ny", "G\u00e1tfut\u00e1s", "G\u00e1tfutottam #GoogleDoodle"],
ja: ["\u30b9\u30b3\u30a2", "\u30cf\u30fc\u30c9\u30eb", "\u300c\u30cf\u30fc\u30c9\u30eb\u300d\u3092\u98db\u3093\u3060! #GoogleDoodle"],
ko: ["\uae30\ub85d", "\ud5c8\ub4e4", "\ud5c8\ub4e4\uc744 \ud588\uc5b4\uc694! #GoogleDoodle "],
lv: ["Lab\u0101kais rezult\u0101ts", "Barjerskrie\u0161ana", "Es piedal\u012bjos barjerskrie\u0161an\u0101 #GoogleDoodle"],
mk: ["\u041d\u0430\u0434\u043e\u0431\u0430\u0440 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442", "\u0422\u0440\u0447\u0430\u045a\u0435 \u0441\u043e \u043f\u0440\u0435\u043f\u0440\u0435\u043a\u0438", "\u0422\u0440\u0447\u0430\u0432 \u043f\u0440\u0435\u043a\u0443 \u043f\u0440\u0435\u043f\u0440\u0435\u043a\u0438 #GoogleDoodle"],
mo: ["Scor de top", "Atletism garduri", "Am concurat la atletism garduri #GoogleDoodle"],
mr: ["\u0938\u0930\u094d\u0935\u093e\u0927\u093f\u0915 \u0917\u0941\u0923", "\u0905\u0921\u0925\u0933\u0947", "\u092e\u0940 \u0905\u0921\u0925\u0933\u094d\u092f\u093e\u0902\u091a\u0940 \u0936\u0930\u094d\u092f\u0924 \u0916\u0947\u0933\u0932\u094b #GoogleDoodle"],
ms_my: ["Skor tertinggi", "Lompat Pagar", "Saya melompat pagar #GoogleDoodle"],
nl: ["Topscore", "Hordelopen", "Ik heb horden gelopen #GoogleDoodle"],
pl: ["Najlepszy wynik", "Bieg przez p\u0142otki", "\u0106wicz\u0119 bieg przez p\u0142otki #GoogleDoodle"],
"pt-BR": ["Pontua\u00e7\u00e3o", "Corrida com Obst\u00e1culos", "Eu competi Corrida com Obst\u00e1culos #GoogleDoodle"],
"pt-PT": ["Pontua\u00e7\u00e3o", "Barreiras", "Eu saltei Barreiras #GoogleDoodle"],
ro: ["Scor de top", "Atletism garduri", "Am concurat la atletism garduri #GoogleDoodle"],
ru: ["\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442", "\u0411\u0435\u0433 \u0441 \u0431\u0430\u0440\u044c\u0435\u0440\u0430\u043c\u0438", "\u0411\u0435\u0433 \u0441 \u0431\u0430\u0440\u044c\u0435\u0440\u0430\u043c\u0438 #GoogleDoodle"],
sk: ["Najlep\u0161ie sk\u00f3re", "Beh cez prek\u00e1\u017eky", "Zabehajte si cez prek\u00e1\u017eky #GoogleDoodle"],
sl: ["Najbolj\u0161i rezultat", "Tek \u010dez ovire", "Tekel sem \u010dez ovire #GoogleDoodle"],
sr: ["\u041d\u0430\u0458\u0431\u043e\u0459\u0438 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442", "\u0422\u0440\u0447\u0430\u045a\u0435 \u043f\u0440\u0435\u043a\u043e \u043f\u0440\u0435\u043f\u043e\u043d\u0430", "\u0418\u0433\u0440\u0430\u043c \u0442\u0440\u0447\u0430\u045a\u0435 \u043f\u0440\u0435\u043a\u043e \u043f\u0440\u0435\u043f\u043e\u043d\u0430 #GoogleDoodle"],
sv: ["Resultat", "H\u00e4ckl\u00f6pning", "Jag hoppade h\u00e4ck #GoogleDoodle"],
sw: ["Alama za Juu", "Mbio za Kuruka Viunzi", "Niliruka Viunzi #GoogleDoodle"],
th_All: ["\u0e04\u0e30\u0e41\u0e19\u0e19\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14", "\u0e27\u0e34\u0e48\u0e07\u0e02\u0e49\u0e32\u0e21\u0e23\u0e31\u0e49\u0e27 ", "\u0e09\u0e31\u0e19\u0e27\u0e34\u0e48\u0e07\u0e02\u0e49\u0e32\u0e21\u0e23\u0e31\u0e49\u0e27\u0e1a\u0e19 Google Doodle!"],
tr: ["En y\u00fcksek puan", "Engelli Ko\u015fu", "Engelli atlad\u0131m! #GoogleDoodle"],
uk: ["\u041d\u0430\u0439\u043a\u0440\u0430\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442", "\u0411\u0456\u0433 \u0456\u0437 \u043f\u0435\u0440\u0435\u0448\u043a\u043e\u0434\u0430\u043c\u0438", "\u0411\u0456\u0433 \u0456\u0437 \u043f\u0435\u0440\u0435\u0448\u043a\u043e\u0434\u0430\u043c\u0438 #GoogleDoodle"],
"zh-CN": ["\u6700\u9ad8\u5f97\u5206", "\u8de8\u680f", "#Google\u6d82\u9e26#\u6211\u73a9\u4e86\u8de8\u680f"],
"zh-TW_HK": ["\u6700\u9ad8\u5f97\u5206", "\u8de8\u6b04", "\u6211\u8dd1\u4e86\u5834\u8de8\u6b04\uff01 #GoogleDoodle"],
"zh-TW_tw": ["\u6700\u9ad8\u5f97\u5206", "\u8de8\u6b04", "\u6211\u8dd1\u4e86\u5834\u8de8\u6b04\uff01 #GoogleDoodle"]
},
Jc = function (a) {
return google.kHL in Ic && Ic[google.kHL][a] || Ic.ALL[a]
};
var Kc = [0, 0.05, 0.1, 0.15, 0.5, 0.7, 0.7, 1, 1.1],
Lc = 530 / 482,
Z = [],
Mc = window.localStorage && window.localStorage.getItem("doodle-hurdles-tooltip") ? 4 : 0,
Nc = function (a, b, c) {
a -= R;
if (-38 <= a && 533 > a) {
var d = Math.cos(b),
e = Math.sin(b),
b = a + 24,
f = b + 35 * e,
g = 168 - 35 * d,
k = b - 10 * d,
o = 168 - 10 * e,
s = a * Lc,
t = s + 35 * e,
q = 193 - 35 * d,
d = s - 11 * d,
e = 193 - 11 * e;
P.lineCap = "round";
c ? (P.lineWidth = 4, P.beginPath(), P.strokeStyle = "rgba(0,0,0,0.1)", P.moveTo(k, 170), P.lineTo(f, 170), P.lineTo(t, 195), P.lineTo(d, 195), P.stroke(), P.lineWidth = 6, P.beginPath(), P.strokeStyle = "#ccc", P.moveTo(k, o), P.lineTo(b, 168), P.lineTo(f, g), P.stroke(), P.beginPath(), P.fillStyle = "#999", P.arc(k, o, 3, 0, 2 * Math.PI, l)) : (P.lineWidth = 6, P.beginPath(), P.strokeStyle = "#ccc", P.moveTo(d, e), P.lineTo(s, 193), P.lineTo(t, q), P.stroke(), P.beginPath(), P.fillStyle = "#999", P.arc(d, e, 3, 0, 2 * Math.PI, l));
P.fill();
155 <= a != c && (P.beginPath(), P.strokeStyle = "#fafbf7", P.moveTo(f, g), P.lineTo(t, q), P.stroke())
}
}, Oc = function (a) {
a -= R;
if (-3 <= a && 527 > a) {
var b = a + 24,
a = a * Lc;
P.beginPath();
P.moveTo(b, 169);
P.lineTo(a, 194);
P.strokeStyle = "#f8eaf7";
P.lineCap = "square";
P.lineWidth = 6;
P.stroke()
}
}, Sc = function (a, b) {
if (1 == Y && !U.a && !zc.a) return l;
if (2 == Y && 5E3 < a - sc) Pc();
else if (3 == Y || 4 == Y) {
3 == Y && (Fc && 150 <= a - Fc) && ($(4), kc -= 50);
var c, d = 0;
4 == Y ? (d = Qc(a), d || ($(3), jc = a), c = 0.998) : 3 == Y && (c = 0.995);
c = Math.max(0.1, X * c);
R += (X + c) * b / 2;
X = c;
for (c = 0; c < Z.length; c++) {
var e = Z[c];
if (e.J) e.o = Math.min(Math.PI / 2, e.o + 0.03 * b);
else {
var f;
if (f = 15 > d) f = e.x - R - 110, f = !e.J && 0 <= f && 45 >= f;
f && (X = Math.max(0.1, 0.5 * X), V.g = 20, gc++, e.J = i)
}
}
5E3 <= a - mc ? Pc() : 300 < R && Rc(3);
4800 <= R && $(5)
}
for (d = 0; d < Kc.length; d++) c = ec[d], e = la(R * Kc[d], 530), c.x = -e, z(ec[d]), c.x = 530 - e - 1, z(ec[d]);
oc.x = -R;
z(oc);
U.a || (qc.x = -R, z(qc));
fc.x = 0;
fc.p = 1;
z(fc);
fc.p = -1;
fc.x = 530 - fc.getWidth();
z(fc);
Oc(185);
Oc(4910);
for (d = 0; d < Z.length; d++) Nc(Z[d].x, Z[d].o, i);
W && (V.frame = la(Math.floor((R + V.x + 530) / 7), 16), d = Qc(u()), c = "rgba(0,0,0," + 0.2 / (1 + 0.2 * d) + ")", e = P, f = W.x + 125, e.save(), e.beginPath(), e.translate(f, 175), e.scale(70, 15), e.arc(0.5, 0.5, 0.5, 0, 2 * Math.PI, i), e.fillStyle = c, e.fill(), e.restore(), W.y = -d, z(W));
for (d = 0; d < Z.length; d++) Nc(Z[d].x,
Z[d].o, l);
T.frame = a / 150 & 1;
z(T);
Dc.frame = a / 500 & 1;
z(Dc);
W.g *= Math.max(0, 1 - 0.015 * b);
hc.x = 0;
hc.p = 1;
z(hc);
hc.p = -1;
hc.x = 530 - hc.getWidth();
z(hc);
return i
}, Qc = function (a) {
if (!kc) return 0;
var b = a - kc,
c = b;
S && S <= a ? c = S - kc : 200 < c && (c = 200, S = kc + c);
return Math.max(0, 1 - 2E-4 * b * b + (3E-4 * c + 0.09) * b)
}, Tc = function (a) {
var b = u(),
c = 37 == a.keyCode ? -1 : 39 == a.keyCode ? 1 : j;
if (2 == Y && c) lc ? lc != c ? (mc = b, $(3)) : W.g = 3 : lc = c;
else if (3 == Y && (!Gc || 100 < b - Gc)) if (c) {
if (c == lc) {
W.g = 3;
return
}
X = Math.max(0.1, X + 0.02);
lc = c;
mc = b;
Rc(2)
} else(38 == a.keyCode || ka(a.keyCode)) && 50 < b - jc && $(4);
Hc = b
}, Uc = function (a) {
2 != Nb && (Nb = 0);
if (4 == Y && !S && (38 == a.keyCode || ka(a.keyCode))) S = Math.max(u(), kc + 100)
}, Xc = function () {
var a = Vc,
b = Wc;
b && (G.onmouseout = G.onmouseup = b);
Uc && (G.onkeyup = Uc);
Fb = a;
G.onmousedown = Zb;
Gb = j;
G.onmousemove = $b;
Cb = Tc;
G.onkeydown = Xb;
G.style.cursor = "pointer"; - 1 != navigator.userAgent.indexOf("Opera") && (G.onkeypress = Yb);
$(1);
N()
}, Vc = function () {
var a = u();
2 == Y && $(3);
if (3 == Y && (Rc(4), !Fc && (!Hc || 100 < a - Hc))) mc = Fc = a;
Gc = a
}, Wc = function () {
2 != Nb && (Nb = 1);
3 == Y && Fc && 150 > u() - Fc ? X = Math.max(0.1, X + 0.03) : 4 == Y && !S && (S = u());
Fc = j
}, Yc = function () {
U.stop();
z(qc);
pc.style.display = "none";
$(2);
Vb(0);
if (!window.WebFontConfig) {
aa("WebFontConfig.google.families", ["Fredoka+One::latin"]);
var a = document.createElement("script");
a.src = ("https:" == document.location.protocol ? "https" : "http") + "://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js";
a.type = "text/javascript";
a.async = "true";
(document.getElementById("xjsc") || document.body).appendChild(a)
}
A[0] = 37;
A[1] = 39;
A[2] = ja[0];
A[4] = 37;
A[5] = 39;
A[6] = ja[0];
ta = G;
ua = function () {
2 != Nb && (Nb = 2)
} || j;
window.addEventListener("MozGamepadConnected", xa, l);
window.addEventListener("MozGamepadDisconnected", ya, l);
if ((navigator.webkitGamepads || navigator.webkitGetGamepads) && !va) va = i, wa();
N()
}, Zc = function (a) {
a.stopPropagation()
}, Pc = function () {
4 == Mc && (Mc = 0, Vb(3), Rc(1))
}, $ = function (a) {
var b = Y;
if (b != a) if (Y = a, 1 == a) jc = R = 0, U.play();
else if (2 == a) {
sc = u();
lc = j;
gc = 0;
Rc(1);
Z = [];
for (a = 0; 10 > a; a++) Z.push({
x: 800 + 400 * a + 100 * Math.random(),
o: 0,
J: l
})
} else 3 == a ? 2 == b ? (Ec = u(),
X = 0.1, W = yc, xc.play()) : W = V : 4 == a ? (Rc(4), kc = u(), S = j, W = wc, vc.play()) : 5 == a && (R = 4800, ic = u(), Rc(4), 10 == gc ? (W = uc, tc.play()) : (W = Cc, Bc.play()))
}, $c = function () {
var a = ic - Ec,
b = 0;
12E3 > a && !gc ? b = 3 : 18E3 > a ? b = 2 : 10 > gc && (b = 1);
Vb(1, a, b);
var a = a ? (a / 1E3).toFixed(1) + " s" : "",
c;
xb.V = Jb + a;
c || (c = wb);
xb.U = "https://www.google.com/logos/2012/" + c + "12-hp-share" + b + ".png";
tb.textContent = a;
for (c = 0; 3 > c; c++) Ob[c].className = c < b ? "hplogo_smg" : "hplogo_smh";
L.style.display = "";
M.play()
}, Rc = function (a) {
for (; Mc < a;) switch (++Mc) {
case 1:
2 == Y ? (T.offsetX = 250, T.offsetY = 50) : (T.offsetX = 210, T.offsetY = 5);
oa(T, 200, 1);
nc.style.display = "";
break;
case 2:
oa(T, 100, 0);
nc.style.display = "none";
break;
case 3:
oa(Dc, 200, 1);
break;
case 4:
oa(Dc, 100, 0), window.localStorage && window.localStorage.setItem("doodle-hurdles-tooltip", i)
}
}, ad = function () {
$(0);
var a;
ha = l;
Pb = !Sc;
vb = Sc;
zb = u();
Db = Xc;
(G = document.getElementById("hplogo")) ? (google.doodle && google.doodle.alt && G.setAttribute("aria-label", google.doodle.alt), G.innerHTML = "", a = i) : a = l;
if (a) {
if (a = r("canvas", h)) a.style.position = "absolute",
a.height = 207, a.width = 530, G.appendChild(a);
if ((Q = a) && Q.getContext) {
P = Q.getContext("2d");
a = Jc(1);
var b = Jc(2) + " \u2014 " + Jc(0) + ": ";
wb = "hurdles";
var c = window.location.protocol + "//www.google.com/doodles/hurdles-2012";
Ub("olympics12-hp-sprite.png");
L = r("div", "hplogo_sc");
ub = r("div", "hplogo_sb");
tb = r("span", "hplogo_sbt", "hplogo_sse");
ub.appendChild(tb);
for (var d = 0; 3 > d; d++) Ob[d] = r("div", "hplogo_sm"), ub.appendChild(Ob[d]);
L.appendChild(ub);
d = function (a) {
a = r("div", a);
L.appendChild(a);
return a
};
I = d("hplogo_sr");
Hb = d("hplogo_ss");
H = d("hplogo_sg");
I.title = dc(0);
Hb.title = dc(1);
H.title = dc(2);
L.style.display = "none";
Bb = r("div", "hplogo_sle");
Bb.onmouseup = ac;
d = r("span", "", "hplogo_sse");
d.textContent = c;
Bb.appendChild(d);
L.appendChild(Bb);
G.appendChild(L);
M = new w;
x(M, function () {
L.style.display = "";
ub.style.opacity = 0;
I.style.opacity = 0;
Hb.style.opacity = 0;
H.style.opacity = 0;
Bb.style.opacity = 0;
I.className = "";
Hb.className = "";
H.className = "";
ia || ac()
});
x(M, function (a) {
L.style.opacity = a
}, 500);
ma(M, 200);
x(M, function (a) {
bc(ub,
55, v(a, 6, 30));
ub.style.opacity = a
}, 200);
ma(M, 200);
x(M, function (a) {
var b = a = a * 2;
bc(I, 8, v(b, 12, 0));
I.style.opacity = b;
b = a - 0.5;
bc(Hb, 8, v(b, 12, 0));
Hb.style.opacity = b;
a = a - 1;
bc(H, 8, v(a, 12, 0));
H.style.opacity = a
}, 500);
x(M, function (a) {
Bb.style.opacity = a
}, 500);
x(M, function () {
K = i
});
J = Rb(I, "hplogo_srd");
x(J, function () {
K = l;
!Pb && !Mb && N();
W = V;
W.x = -250;
Vb(2);
rc.play()
});
x(J, function (a) {
L.style.opacity = 1 - a
}, 200);
x(J, function () {
L.style.display = "none"
});
I.onmousedown = function () {
K && !J.a && J.play()
};
Ib = Rb(Hb, "hplogo_ssd");
x(Ib, function () {
google.nav.go(google.doodle.url)
});
Hb.onmousedown = function () {
Ib.play()
};
yb = Rb(H, "hplogo_sgd", i);
H.onmousedown = function () {
Vb(4);
yb.play()
};
xb = new sb(c, a, b, "", H);
Jb = b;
var e = r("div", "hplogo_pc");
a = r("div", "hplogo_pr");
var f = Rb(a, "hplogo_prd");
x(f, Yc);
bc(a, 232, 65);
e.appendChild(a);
e.onmousedown = function () {
e.onmousedown = j;
f.play()
};
e.style.display = "none";
G.appendChild(e);
pc = e;
var g = Ub("hurdles12-hp-bg.png");
a = function (a, b, c) {
return new y(Q, g, 0, b, 530, c, 0, a)
};
ec = [a(0, 1, 125), a(6, 127, 85), a(83,
215, 59), a(83, 275, 60), a(96, 337, 56), a(124, 395, 84), a(95, 481, 45), a(164, 529, 35), a(192, 565, 9)];
a = Ub("hurdles12-hp-sprite.png");
hc = new y(Q, a, 3245, 0, 30, 207);
wc = new y(Q, a, 0, 298, 120, 152, 110, 32);
vc = na(wc, 11, 800);
V = new y(Q, a, 1323, 298, 120, 155, 110, 32);
fc = new y(Q, a, 0, 0, 63, 207);
oc = new y(Q, a, 66, 137, 388, 109, 99, 51);
W = V;
W.x = -250;
T = new y(Q, a, 2743, 0, 184, 134);
T.opacity = 0;
Dc = new y(Q, a, 66, 0, 184, 134, 210, 5);
Dc.opacity = 0;
b = r("div");
b.style.position = "absolute";
b.style.height = "130px";
b.style.margin = "50px 0 0 300px";
b.style.width = "130px";
b.style.zIndex = 1;
b.onmousedown = Zc;
G.appendChild(b);
nc = b;
nc.style.display = "none";
nc.style.cursor = "default";
yc = new y(Q, a, 1300, 158, 136, 137, 110, 50);
xc = na(yc, 9, 300);
x(xc, function () {
W = V
});
Ac = new y(Q, a, 457, 158, 119, 129, 110, 58);
zc = na(Ac, 7, 200);
uc = new y(Q, a, 1300, 0, 120, 155, 110, 32);
tc = na(uc, 12, 400);
ma(tc, 600);
x(tc, $c);
Cc = new y(Q, a, 457, 0, 120, 155, 110, 32);
Bc = na(Cc, 7, 300);
ma(Bc, 600);
x(Bc, $c);
a = Ub("olympics12-hp-sprite.png");
qc = new y(Q, a, 316, 0, 67, 73, 232, 65);
U = new w;
x(U, function () {
W = V
});
x(U, function (a) {
W.x = v(a, - 250, 0)
}, 2E3);
x(U, function () {
pc.style.display = "";
W = Ac;
zc.play()
});
x(U, function (a) {
pc.style.opacity = a
}, 600);
rc = new w;
x(rc, function (a) {
R = v(a, 4800, 0)
}, 1E3);
x(rc, function () {
W = V
});
x(rc, function (a) {
W.x = v(a, - 250, 0)
}, 2E3);
x(rc, function () {
W = Ac;
zc.play();
$(2)
})
}
}
}, bd = function () {
return document.activeElement != G
}, cd = function () {
var a = window.google;
if (a) {
var b = a.msg,
c = function () {
var a = b && b.unlisten;
a && (a(67, c), bd && a(94, bd));
Pb = ha = i;
G && (G.innerHTML = "");
K = l;
return i
};
if (!a.doodle || !a.doodle.jesr) aa("google.doodle.jesr",
i), a.rein && a.dstr && (a.rein.push(ad), a.dstr.push(c));
var a = a.psy,
d = b && b.listen;
a && (a.q && d) && (d(67, c), bd && d(94, bd))
}
ad()
}, dd = window.google;
dd && dd.x ? dd.x({
id: "DOODLE"
}, cd) : cd();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment