MediaWiki:Gadget-HalopediaSecret.js

/* Konami-JS * :: Now with support for touch events and multiple instances for * :: those situations that call for multiple easter eggs! * Code: https://github.com/snaptortoise/konami-js * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com) * Version: 1.6.2 (7/17/2018) * Licensed under the MIT License (http://opensource.org/licenses/MIT) * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android */

var Konami = function (callback) { var konami = { addEvent: function (obj, type, fn, ref_obj) { if (obj.addEventListener) obj.addEventListener(type, fn, false); else if (obj.attachEvent) { // IE               obj["e" + type + fn] = fn; obj[type + fn] = function { obj["e" + type + fn](window.event, ref_obj); };               obj.attachEvent("on" + type, obj[type + fn]); }       },        removeEvent: function (obj, eventName, eventCallback) { if (obj.removeEventListener) { obj.removeEventListener(eventName, eventCallback); } else if (obj.attachEvent) { obj.detachEvent(eventName); }       },        input: "", pattern: "38384040373937396665", keydownHandler: function (e, ref_obj) { if (ref_obj) { konami = ref_obj; } // IE           konami.input += e ? e.keyCode : event.keyCode; if (konami.input.length > konami.pattern.length) { konami.input = konami.input.substr((konami.input.length - konami.pattern.length)); }           if (konami.input === konami.pattern) { konami.code(konami._currentLink); konami.input = ''; e.preventDefault; return false; }       },        load: function (link) { this._currentLink = link; this.addEvent(document, "keydown", this.keydownHandler, this); this.iphone.load(link); },       unload: function  { this.removeEvent(document, 'keydown', this.keydownHandler); this.iphone.unload; },       code: function (link) { window.location = link; },       iphone: { start_x: 0, start_y: 0, stop_x: 0, stop_y: 0, tap: false, capture: false, orig_keys: "", keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"], input: [], code: function (link) { konami.code(link); },           touchmoveHandler: function (e) { if (e.touches.length === 1 && konami.iphone.capture === true) { var touch = e.touches[0]; konami.iphone.stop_x = touch.pageX; konami.iphone.stop_y = touch.pageY; konami.iphone.tap = false; konami.iphone.capture = false; konami.iphone.check_direction; }           },            touchendHandler: function  { konami.iphone.input.push(konami.iphone.check_direction); if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift; if (konami.iphone.input.length === konami.iphone.keys.length) { var match = true; for (var i = 0; i < konami.iphone.keys.length; i++) { if (konami.iphone.input[i] !== konami.iphone.keys[i]) { match = false; }                   }                    if (match) { konami.iphone.code(konami._currentLink); }               }            },            touchstartHandler: function (e) { konami.iphone.start_x = e.changedTouches[0].pageX; konami.iphone.start_y = e.changedTouches[0].pageY; konami.iphone.tap = true; konami.iphone.capture = true; },           load: function (link) { this.orig_keys = this.keys; konami.addEvent(document, "touchmove", this.touchmoveHandler); konami.addEvent(document, "touchend", this.touchendHandler, false); konami.addEvent(document, "touchstart", this.touchstartHandler); },           unload: function  { konami.removeEvent(document, 'touchmove', this.touchmoveHandler); konami.removeEvent(document, 'touchend', this.touchendHandler); konami.removeEvent(document, 'touchstart', this.touchstartHandler); },           check_direction: function  { x_magnitude = Math.abs(this.start_x - this.stop_x); y_magnitude = Math.abs(this.start_y - this.stop_y); x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT"; y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP"; result = (x_magnitude > y_magnitude) ? x : y;               result = (this.tap === true) ? "TAP" : result; return result; }       }    };

typeof callback === "string" && konami.load(callback); if (typeof callback === "function") { konami.code = callback; konami.load; }

return konami; };

if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = Konami; } else { if (typeof define === 'function' && define.amd) { define([], function {                       return Konami;                }); } else { window.Konami = Konami; } }

konami = new Konami; konami.load("https://www.halopedia.org/Yapyap");