| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Konami-JS ~ | |
| 3 * :: Now with support for touch events and multiple instances for | |
| 4 * :: those situations that call for multiple easter eggs! | |
| 5 * Code: http://konami-js.googlecode.com/ | |
| 6 * Examples: http://www.snaptortoise.com/konami-js | |
| 7 * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com) | |
| 8 * Version: 1.4.2 (9/2/2013) | |
| 9 * Licensed under the MIT License (http://opensource.org/licenses/MIT) | |
| 10 * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1
and Dolphin Browser | |
| 11 */ | |
| 12 | |
| 13 var Konami = function (callback) { | |
| 14 var konami = { | |
| 15 addEvent: function (obj, type, fn, ref_obj) { | |
| 16 if (obj.addEventListener) | |
| 17 obj.addEventListener(type, fn, false); | |
| 18 else if (obj.attachEvent) { | |
| 19 // IE | |
| 20 obj["e" + type + fn] = fn; | |
| 21 obj[type + fn] = function () { | |
| 22 obj["e" + type + fn](window.event, ref_o
bj); | |
| 23 }; | |
| 24 obj.attachEvent("on" + type, obj[type + fn]); | |
| 25 } | |
| 26 }, | |
| 27 input: "", | |
| 28 pattern: "38384040373937396665", | |
| 29 load: function (link) { | |
| 30 this.addEvent(document, "keydown", function (e, ref_obj)
{ | |
| 31 if (ref_obj) konami = ref_obj; // IE | |
| 32 konami.input += e ? e.keyCode : event.keyCode; | |
| 33 if (konami.input.length > konami.pattern.length) | |
| 34 konami.input = konami.input.substr((kona
mi.input.length - konami.pattern.length)); | |
| 35 if (konami.input == konami.pattern) { | |
| 36 konami.code(link); | |
| 37 konami.input = ""; | |
| 38 e.preventDefault(); | |
| 39 return false; | |
| 40 } | |
| 41 }, this); | |
| 42 this.iphone.load(link); | |
| 43 }, | |
| 44 code: function (link) { | |
| 45 window.location = link | |
| 46 }, | |
| 47 iphone: { | |
| 48 start_x: 0, | |
| 49 start_y: 0, | |
| 50 stop_x: 0, | |
| 51 stop_y: 0, | |
| 52 tapTolerance: 8, | |
| 53 capture: false, | |
| 54 orig_keys: "", | |
| 55 keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEF
T", "RIGHT", "TAP", "TAP"], | |
| 56 code: function (link) { | |
| 57 konami.code(link); | |
| 58 }, | |
| 59 touchCapture: function(evt) { | |
| 60 konami.iphone.start_x = evt.changedTouches[0].pa
geX; | |
| 61 konami.iphone.start_y = evt.changedTouches[0].pa
geY; | |
| 62 konami.iphone.capture = true; | |
| 63 }, | |
| 64 load: function (link) { | |
| 65 this.orig_keys = this.keys; | |
| 66 konami.addEvent(document, "touchmove", function
(e) { | |
| 67 if (e.touches.length == 1 && konami.ipho
ne.capture == true) { | |
| 68 var touch = e.touches[0]; | |
| 69 konami.iphone.stop_x = touch.pag
eX; | |
| 70 konami.iphone.stop_y = touch.pag
eY; | |
| 71 konami.iphone.check_direction(); | |
| 72 } | |
| 73 }); | |
| 74 konami.addEvent(document, "touchend", function (
evt) { | |
| 75 konami.touchCapture(evt); | |
| 76 konami.iphone.check_direction(link); | |
| 77 }, false); | |
| 78 konami.addEvent(document, "touchstart", function
(evt) { | |
| 79 konami.touchCapture(evt); | |
| 80 }); | |
| 81 }, | |
| 82 check_direction: function (link) { | |
| 83 var x_magnitude = Math.abs(this.start_x - this.s
top_x); | |
| 84 var y_magnitude = Math.abs(this.start_y - this.s
top_y); | |
| 85 var hasMoved = (x_magnitude > this.tapTolerance
|| y_magnitude > this.tapTolerance); | |
| 86 var result; | |
| 87 if (this.capture === true && hasMoved) { | |
| 88 this.capture = false; | |
| 89 var x = ((this.start_x - this.stop_x) <
0) ? "RIGHT" : "LEFT"; | |
| 90 var y = ((this.start_y - this.stop_y) <
0) ? "DOWN" : "UP"; | |
| 91 var result = (x_magnitude > y_magnitude)
? x : y; | |
| 92 } | |
| 93 else if (this.capture === false && !hasMoved) { | |
| 94 result = (this.tap == true) ? "TAP" : re
sult; | |
| 95 result = "TAP"; | |
| 96 } | |
| 97 if (result) { | |
| 98 if (result == this.keys[0]) this.keys =
this.keys.slice(1, this.keys.length); | |
| 99 else this.keys = this.orig_keys; | |
| 100 } | |
| 101 if (this.keys.length == 0) { | |
| 102 this.keys = this.orig_keys; | |
| 103 this.code(link); | |
| 104 } | |
| 105 } | |
| 106 } | |
| 107 } | |
| 108 | |
| 109 typeof callback === "string" && konami.load(callback); | |
| 110 if (typeof callback === "function") { | |
| 111 konami.code = callback; | |
| 112 konami.load(); | |
| 113 } | |
| 114 | |
| 115 return konami; | |
| 116 }; | |
| OLD | NEW |