Created
November 24, 2011 19:52
-
-
Save libryder/1392150 to your computer and use it in GitHub Desktop.
Google's Jules Verne doodle obfuscated javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <script> | |
| (function() { | |
| var d = true, | |
| g = false, | |
| h = window, | |
| i = h.google, | |
| j = document, | |
| k = "push", | |
| l = "getElementById", | |
| m = "targetTouches", | |
| n = "getTime", | |
| o = "setTimeout", | |
| p = "style"; | |
| if (!i) i = h.google = {}; | |
| if (!i.doodle) i.doodle = {}; | |
| if (!i.doodle.a) i.doodle.a = []; | |
| var q = navigator.userAgent.indexOf("MSIE") != -1, | |
| aa = ["webkitTransform", "MozTransform", "OTransform", "transform"], | |
| ba = ["webkitTransition", "MozTransition", "OTransition", "transition"], | |
| ca = { | |
| 37: 3, | |
| 38: 1, | |
| 39: 4, | |
| 40: 2 | |
| }, | |
| da = ["2011/verne-hp.png", "2011/verne-hp-1.png", "2011/verne-hp-2.png", "2011/verne-hp-3.png", "2011/verne-hp-4.png"], | |
| ea = [1, 0.8726, 0.7427, 0.5], | |
| fa = 1E4 / 66, | |
| ga = 1 / 3, | |
| ha = 2 / 3, | |
| r = 0, | |
| s = 0, | |
| t = 0, | |
| ia = 0, | |
| u = 93, | |
| v = 0, | |
| w = 0, | |
| x = 119, | |
| A = 0, | |
| B = 0, | |
| E = g, | |
| ja, ka = g, | |
| la = 0, | |
| ma = 0, | |
| na = 0, | |
| oa = 0, | |
| pa = d, | |
| qa = 0, | |
| F = g, | |
| G = 0, | |
| H = 0, | |
| ra = g, | |
| sa, I = g, | |
| J = g, | |
| ta = 0, | |
| ua = g, | |
| va, K = 0, | |
| L = 0, | |
| M = 10, | |
| N = 0, | |
| O = 0, | |
| wa = 0, | |
| P = "", | |
| xa = "", | |
| ya = g, | |
| Q = g, | |
| za = g, | |
| R, Aa, S, Ba, Ca, Da, T, Ea, U = 0.2; | |
| function V(a, b, c) { | |
| if (!i.doodle.d) i.doodle.d = []; | |
| i.doodle.d[k](arguments); | |
| a.addEventListener ? a.addEventListener(b, c, g) : a.attachEvent("on" + b, c) | |
| } | |
| function Fa(a) { | |
| if (a) a.stopPropagation && a.stopPropagation(); | |
| else h.event.cancelBubble = d | |
| } | |
| function Ga(a, b) { | |
| !b() && a < 200 && h[o](function() { | |
| Ga(a + 1, b) | |
| }, a) | |
| } | |
| function Ha(a) { | |
| a = a || h.event; | |
| return [(a.clientX || a[m] && a[m][0].clientX || 0) + (j.body.scrollLeft || j.documentElement.scrollLeft), (a.clientY || a[m] && a[m][0].clientY || 0) + (j.body.scrollTop || j.documentElement.scrollTop)] | |
| } | |
| function Ia(a) { | |
| (a = a || h.event) && !a.toElement && Ja(a) | |
| } | |
| function Ka(a, b) { | |
| I = d; | |
| W(); | |
| var c = Ea = j[l]("verne-drag"), | |
| e = 0; | |
| do e += c.offsetLeft; | |
| while (c = c.offsetParent); | |
| na = e; | |
| c = Ea; | |
| e = 0; | |
| do e += c.offsetTop; | |
| while (c = c.offsetParent); | |
| oa = e; | |
| e = Ha(a); | |
| c = e[0] - na; | |
| e = e[1] - oa; | |
| if (c >= 40 && c <= 114 && e >= 25 && e <= 119) { | |
| R.className = "drag-active"; | |
| E = d; | |
| ja = (new Date)[n](); | |
| if (c >= 92 && c <= 112 && e >= 37 && e <= 57) { | |
| la = c - 60 - 17; | |
| ma = e - 45 - 27 | |
| } else ma = la = 0; | |
| La(a); | |
| Ma("m"); | |
| b && a.preventDefault() | |
| } | |
| } | |
| function Ja() { | |
| U = (new Date)[n]() - ja > 500 ? 0.1 : 0.01; | |
| X(0); | |
| R.className = ""; | |
| E = g | |
| } | |
| function La(a) { | |
| Z(); | |
| if (E && pa) { | |
| pa = g; | |
| h[o](function() { | |
| pa = d | |
| }, 25); | |
| W(); | |
| var b = Ha(a); | |
| a = b[0] - na - la; | |
| b = b[1] - oa - ma; | |
| var c = 0, | |
| e = 0, | |
| f = 0, | |
| y = 0, | |
| z = 0, | |
| Y = 0, | |
| C = 0, | |
| D = 0; | |
| if (a < 60) { | |
| c = 3; | |
| e = 1; | |
| f = -a | |
| } else if (a > 94) { | |
| c = 4; | |
| e = 1; | |
| f = a | |
| } else if (b < 45) { | |
| z = y = 1; | |
| Y = -b | |
| } else if (b > 99) { | |
| y = 2; | |
| z = 1; | |
| Y = b | |
| } else { | |
| a = (a - 60 - 17) / 34; | |
| b = (b - 45 - 27) / 54; | |
| if (b > -0.2 && b < 0.2) if (a < 0) { | |
| c = 3; | |
| e = -a * 2 | |
| } else { | |
| c = 4; | |
| e = a * 2 | |
| } | |
| if (a > -0.2 && a < 0.2) if (b < 0) { | |
| y = 1; | |
| z = -b * 2 | |
| } else { | |
| y = 2; | |
| z = b * 2 | |
| } | |
| } | |
| if (c != 0 && y != 0) if (Y > f) { | |
| C = y; | |
| D = z | |
| } else if (Y < f) { | |
| C = c; | |
| D = e | |
| } else if (Math.abs(z) > Math.abs(e)) { | |
| C = y; | |
| D = z | |
| } else { | |
| C = c; | |
| D = e | |
| } else if (c != 0) { | |
| C = c; | |
| D = e | |
| } else { | |
| C = y; | |
| D = z | |
| } | |
| X(C, D) | |
| } | |
| } | |
| function Na(a) { | |
| if (i.log) { | |
| i.log("verne", a); | |
| ra = d | |
| } | |
| } | |
| function Ma(a) { | |
| if (!ra) if (H) { | |
| h.clearTimeout(H); | |
| H = 0; | |
| Na(a) | |
| } else H = h[o](Oa, 250) | |
| } | |
| function Oa() { | |
| H = 0; | |
| if (ka) Na("k"); | |
| else E && Na("m") | |
| } | |
| function Pa(a) { | |
| Z(); | |
| I = d; | |
| W(); | |
| var b = ca[a.keyCode]; | |
| if (b) { | |
| X(b, 1); | |
| Ma("k"); | |
| ka = d | |
| } | |
| Fa(a) | |
| } | |
| function Qa(a) { | |
| Z(); | |
| if (ca[a.keyCode]) { | |
| U = 0.2; | |
| X(0); | |
| ka = g | |
| } | |
| Fa(a) | |
| } | |
| function Ra() { | |
| Z() | |
| } | |
| function W() { | |
| M = 10; | |
| L = K = 0 | |
| } | |
| function Sa(a) { | |
| var b = h.orientation; | |
| if (b != wa) { | |
| wa = b; | |
| W() | |
| } | |
| var c = a.accelerationIncludingGravity; | |
| if (c) switch (b) { | |
| case 90: | |
| var e = -c.y, | |
| f = c.z; | |
| break; | |
| case -90: | |
| e = c.y; | |
| f = c.z; | |
| break; | |
| case 180: | |
| e = -c.x; | |
| f = c.z; | |
| break; | |
| default: | |
| e = c.x; | |
| f = c.z | |
| } | |
| b = a.gamma || a.x * 57 || e * 2; | |
| a = a.beta || a.y * 57 || f * 2; | |
| if (M) { | |
| K += b; | |
| L += a; | |
| M--; | |
| if (M == 0) { | |
| K /= 10; | |
| L /= 10 | |
| } | |
| } else { | |
| N = b - K; | |
| O = a - L; | |
| f = a = 0; | |
| if (N > 5) { | |
| f = (N - 5) / 10; | |
| a = 4 | |
| } else if (N < -5) { | |
| f = (-N - 5) / 10; | |
| a = 3 | |
| } | |
| if (Math.abs(O) > Math.abs(N)) if (O > 5) { | |
| f = (O - 5) / 10; | |
| a = 2 | |
| } else if (O < -5) { | |
| f = (-O - 5) / 10; | |
| a = 1 | |
| } | |
| if (f > 1) f = 1; | |
| if (f > 0) { | |
| Z(); | |
| I = d; | |
| X(a, f) | |
| } | |
| } | |
| } | |
| function Ta() { | |
| I = d; | |
| t += 3 | |
| } | |
| function X(a, b) { | |
| if (b) { | |
| if (b > 1) b = 1 | |
| } else b = 0; | |
| if (a == 0) ia = 0; | |
| else { | |
| r = a; | |
| ia = s = b | |
| } | |
| $() | |
| } | |
| function $() { | |
| var a = r, | |
| b = s; | |
| if (a == 0) { | |
| a = 3; | |
| b = 0 | |
| } | |
| var c = 0, | |
| e = 0, | |
| f = 0; | |
| switch (a) { | |
| case 3: | |
| if (b > 0.5) f = 117; | |
| else if (t > 0) { | |
| a = t % 1; | |
| if (a < 0.25 || a >= 0.5 && a < 0.75) f = 39; | |
| else if (a >= 0.25 && a < 0.5) f = 78 | |
| } | |
| c = -15 * b; | |
| break; | |
| case 4: | |
| if (b > 0.5) f = 156; | |
| c = 12 * b; | |
| break; | |
| case 1: | |
| if (b > ha) f = 195; | |
| else if (b > ga) f = 234; | |
| e = -23 * b; | |
| break; | |
| case 2: | |
| if (b > ha) f = 273; | |
| else if (b > ga) f = 312; | |
| e = 26 * b | |
| } | |
| if (Q) T[p][P] = "translate(" + c + "px, " + e + "px)"; | |
| else { | |
| T[p].left = c + 639 + "px"; | |
| T[p].top = e + 49 + "px" | |
| } | |
| T[p].backgroundPosition = -f + "px -190px" | |
| } | |
| function Ua() { | |
| for (var a = -(u + -65), b = 0; b < 4; b++) { | |
| var c = -((x - 109) * ea[b] + 109); | |
| if (Q) S[b][p][P] = ya ? "translate3d(" + a + "px, " + c + "px, 0)" : "translate(" + a + "px, " + c + "px)"; | |
| else { | |
| S[b][p].left = a + "px"; | |
| S[b][p].top = c + "px" | |
| } | |
| } | |
| if (Q) { | |
| Aa[p][P] = "rotate(" + -v * 5 + "deg)"; | |
| Ba[p][P] = "rotate(" + x * 4 + "deg)"; | |
| Ca[p][P] = "rotate(" + x * 4 / 16 + "deg)"; | |
| Da[p][P] = "rotate(" + (u - 90) + "deg)" | |
| } | |
| } | |
| function Va() { | |
| if (ua) { | |
| J && !I && X(2, 0.5); | |
| var a = r != 0, | |
| b = g, | |
| c = g; | |
| if (r == 3) w = -2 * s; | |
| else if (r == 4) w = 2 * s; | |
| else { | |
| w = 0; | |
| b = d | |
| } | |
| if (r == 2) B = 4 * s; | |
| else if (r == 1) B = -5 * s; | |
| else { | |
| c = d; | |
| if (x <= 106) B = 0.2; | |
| else if (x >= 129) { | |
| c = g; | |
| B = -0.2 | |
| } else if (x >= 112) B = -0.2 | |
| } | |
| if (u < 0) u = 0; | |
| else if (u > 186) u = 186; | |
| else if (u < 5 && w < 0 || u > 181 && w > 0) { | |
| w = 0; | |
| a = g | |
| } | |
| if (x < 104) B = 4; | |
| else if (x > 1218) x = 1218; | |
| else if (x > 1218 - 40.5 * A && B > 0) { | |
| B = 0; | |
| a = g | |
| } | |
| if (B > A) { | |
| A += a ? 0.2 : 0.05; | |
| if (A > B) A = B | |
| } else if (B < A) { | |
| A -= a ? 0.2 : 0.05; | |
| if (A < B) A = B | |
| } | |
| if (w > v) { | |
| v += 0.05; | |
| if (v > w) v = w | |
| } else if (w < v) { | |
| v -= 0.05; | |
| if (v < w) v = w | |
| } | |
| if (w == 0 && v >= -0.05 && v <= 0.05) v = 0; | |
| u += v; | |
| x += A; | |
| Ua(); | |
| if (t > 0) { | |
| t -= 0.1; | |
| $() | |
| } | |
| if (s > ia) { | |
| s -= U; | |
| $() | |
| } | |
| if (s <= U) { | |
| s = r = 0; | |
| $() | |
| } | |
| if (b && c) { | |
| G++; | |
| G > fa && Wa() | |
| } else G = 0 | |
| } | |
| } | |
| function Xa() { | |
| va = (new Date)[n](); | |
| if (j[l]("verne-chrome-img")) Ya(); | |
| else { | |
| var a = j.createElement("img"); | |
| V(a, "load", Ya); | |
| a.id = "verne-chrome-img"; | |
| a.src = da[0]; | |
| j[l]("verne-chrome").appendChild(a) | |
| } | |
| } | |
| function Ya() { | |
| S[3][p].background = "#b9e5e7"; | |
| for (var a = 0; a < 4; a++) { | |
| var b = "verne-layer" + a + "-img"; | |
| if (!j[l](b)) { | |
| ta++; | |
| var c = j.createElement("img"); | |
| V(c, "load", Za); | |
| c.src = da[a + 1]; | |
| c.id = b; | |
| S[a].appendChild(c) | |
| } | |
| } | |
| $a() | |
| } | |
| function Za() { | |
| ta--; | |
| $a() | |
| } | |
| function $a() { | |
| if (ta == 0) { | |
| for (var a = (new Date)[n]() - va > 50, b = 0; b < 4; b++) { | |
| var c = j[l]("verne-layer" + b + "-img"); | |
| if (!c) return; | |
| if (a && za) c[p][xa] = "opacity 1s ease-out"; | |
| c[p].opacity = 1 | |
| } | |
| ua = d; | |
| h[o](ab, 3E3); | |
| h[o](bb, 6E3) | |
| } | |
| } | |
| function cb() { | |
| for (var a = 0, b; b = aa[a++];) if (typeof R[p][b] != "undefined") { | |
| Q = d; | |
| P = b; | |
| R[p][b] = "translate3d(0, 0, 0)"; | |
| ya = R[p][b] != ""; | |
| break | |
| } | |
| for (a = 0; b = ba[a++];) if (typeof R[p][b] != "undefined") { | |
| za = d; | |
| xa = b; | |
| break | |
| } | |
| } | |
| function db() { | |
| if (za) for (var a = 0; a < 4; a++) j[l]("verne-layer-" + a)[p][xa] = "-webkit-transform .2s linear, top .2s linear" | |
| } | |
| function Z() { | |
| if (!F) { | |
| F = d; | |
| qa = h.setInterval(Va, 66); | |
| G = 0 | |
| } | |
| } | |
| function Wa() { | |
| if (F) { | |
| F = g; | |
| h.clearInterval(qa) | |
| } | |
| } | |
| function ab() { | |
| I || (t += 3) | |
| } | |
| function bb() { | |
| if (!I) { | |
| J = d; | |
| sa = h[o](eb, 9E3) | |
| } | |
| } | |
| function eb() { | |
| if (J && !I) { | |
| J = g; | |
| h.clearTimeout(sa); | |
| X(0) | |
| } | |
| } | |
| function fb() { | |
| var a = j.forms.f || j.forms.gs || j.forms.tsf; | |
| if (a) { | |
| V(a.q, "keydown", Pa); | |
| V(a.q, "keyup", Qa) | |
| } | |
| V(j, "keydown", Pa); | |
| V(j, "keyup", Qa); | |
| V(j, "mousedown", function(b) { | |
| Ka(b, g) | |
| }); | |
| V(j, "mousemove", La); | |
| V(j, "mouseup", Ja); | |
| q && V(j.body, "mouseout", Ia); | |
| V(j, "touchstart", function(b) { | |
| Ka(b, d) | |
| }); | |
| V(j, "touchmove", La); | |
| V(j, "touchend", Ja); | |
| V(j, q ? "focusin" : "focus", Ra); | |
| V(h, "deviceorientation", Sa); | |
| V(h, "MozOrientation", Sa); | |
| V(h, "devicemotion", Sa); | |
| V(j[l]("verne-dials-click"), "click", Ta); | |
| for (i.doodle.c = g; a = i.doodle.a.shift();) a() | |
| } | |
| function gb() { | |
| if (i.doodle.c) i.doodle.a[k](gb); | |
| else { | |
| for (var a; a = i.doodle.d.pop();) { | |
| var b = a[0], | |
| c = a[1]; | |
| a = a[2]; | |
| b.removeEventListener ? b.removeEventListener(c, a, g) : b.detachEvent("on" + c, a) | |
| } | |
| Wa(); | |
| eb() | |
| } | |
| } | |
| function hb() { | |
| if (i.dstr) { | |
| if (!i.doodle.e) { | |
| i.doodle.e = d; | |
| i.dstr[k](gb) | |
| } | |
| return d | |
| } | |
| return g | |
| } | |
| function ib() { | |
| h[o](function() { | |
| Ga(100, hb) | |
| }, 0); | |
| if (!/#.*q=[^&]/.test(h.location.href)) if (i.doodle.c) i.doodle.a[k](ib); | |
| else { | |
| i.doodle.c = d; | |
| R = j[l]("hplogo"); | |
| Aa = j[l]("verne-layers"); | |
| S = [j[l]("verne-layer-0"), j[l]("verne-layer-1"), j[l]("verne-layer-2"), j[l]("verne-layer-3")]; | |
| Ba = j[l]("verne-dial-depth-big"); | |
| Ca = j[l]("verne-dial-depth-small"); | |
| Da = j[l]("verne-dial-position"); | |
| T = j[l]("verne-lever"); | |
| Ea = j[l]("verne-drag"); | |
| Xa(); | |
| h[o](fb, 0); | |
| cb(); | |
| X(0); | |
| Ua(); | |
| h[o](db, 0); | |
| h[o](Z, 0); | |
| if (q) try { | |
| j.execCommand("BackgroundImageCache", g, d) | |
| } catch (a) {} | |
| } | |
| } | |
| ib(); | |
| })(); | |
| </script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment