(function(window){
  'use strict'
  function defineKonami() {
    var Konami = {};
    var k = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];             // The default sequence: up, up, down, down, left, right, left, right, b, a
    var f = function(){console.log("Konami!"); alert("Konami!");}  // The default function: log and alert "Konami!"
    Konami = function (konami, func) {
      // Check if the first argument is not an object or not defined
      if(typeof(konami) != 'object' || typeof(konami) === 'undefined' || konami === ''){
        konami = k; // Use the default sequence
      }
      // Check to see if the second argument is a function
      if(typeof(func) != 'function'){
        func = f; // Use the default function
      }
      var count = 0; // Counter to check for end of sequence
      document.addEventListener('keydown', function(e) {
        // If the key press matches the sequence array of the same position then we start counting
        if(e.keyCode == konami[count]){
          count++;
          // If we reach the end of the count without resetting it, the sequenc matched so execute the function
          if(count == konami.length){
            func();
          }
        // Sequence was interrupted, reset the count
        }else{
          count = 0;
        }
      });
    };
    return Konami;
  }
  if(typeof(Konami) === 'undefined') {
    window.Konami = defineKonami();
  }
})(window);

(function(window){
  'use strict'
  function defineKonami() {
    var Konami = {};
    var codes = {"backspace": 8, "tab": 9, "enter": 13, "shift": 16, "ctrl": 17, "alt": 18, "pause/break": 19, "caps lock": 20, "escape": 27, "page up": 33, "page down": 34, "end": 35, "home": 36, "left arrow": 37, "up arrow": 38, "right arrow": 39, "down arrow": 40, "insert": 45, "delete": 46, "0": 48, "1": 49, "2": 50, "3": 51, "4": 52, "5": 53, "6": 54, "7": 55, "8": 56, "9": 57, "a": 65, "b": 66, "c": 67, "d": 68, "e": 69, "f": 70, "g": 71, "h": 72, "i": 73, "j": 74, "k": 75, "l": 76, "m": 77, "n": 78, "o": 79, "p": 80, "q": 81, "r": 82, "s": 83, "t": 84, "u": 85, "v": 86, "w": 87, "x": 88, "y": 89, "z": 90, "left window key": 91, "right window key": 92, "select key": 93, "numpad 0": 96, "numpad 1": 97, "numpad 2": 98, "numpad 3": 99, "numpad 4": 100, "numpad 5": 101, "numpad 6": 102, "numpad 7": 103, "numpad 8": 104, "numpad 9": 105, "multiply": 106, "add": 107, "subtract": 109, "decimal point": 110, "divide": 111, "f1": 112, "f2": 113, "f3": 114, "f4": 115, "f5": 116, "f6": 117, "f7": 118, "f8": 119, "f9": 120, "f10": 121, "f11": 122, "f12": 123, "num lock": 144, "scroll lock": 145, "semi-colon": 186, "equal sign": 187, "comma": 188, "dash": 189, "period": 190, "forward slash": 191, "grave accent": 192, "open bracket": 219, "back slash": 220, "close braket": 221, "single quote": 222};
    var k = ["up arrow", "up arrow", "down arrow", "down arrow", "left arrow", "right arrow", "left arrow", "right arrow", "b", "a"]; // The default sequence
    var f = function(){console.log("Konami!"); alert("Konami!");}  // The default function: log and alert "Konami!"
    Konami = function (konami, func) {
      // Check if the first argument is not an object or not defined
      if(typeof(konami) != 'object' || typeof(konami) === 'undefined' || konami === ''){
        konami = k; // Use the default sequence
      }
      // Check to see if the second argument is a function
      if(typeof(func) != 'function'){
        func = f; // Use the default function
      }
      var count = 0; // Counter to check for end of sequence
      document.addEventListener('keydown', function(e) {
        // If the key press matches the sequence array of the same position then we start counting
        if(e.keyCode == codes[konami[count]]){
          count++;
          // If we reach the end of the count without resetting it, the sequenc matched so execute the function
          if(count == konami.length){
            func();
            count = 0;
          }
        // Sequence was interrupted, reset the count
        }else{
          count = 0;
        }
      });
    };
    return Konami;
  }
  if(typeof(Konami) === 'undefined') {
    window.Konami = defineKonami();
  }
})(window);

update konami.js