エンターキーで次のフォームに移動する。その2、無名関数?クロージャー?

//_______________________________________
//Enterキーでフォームを移動する
//_______________________________________
//@cc_on @set @V = (@_jscript_version >= 5.5)

(function (Listener) {
  document./*@if (@V) attachEvent('on' + @else@*/ addEventListener( /*@end@*/
    'keypress', Listener, false);

  /*@if (@V) attachEvent('on' + @else@*/ addEventListener( /*@end@*/
    'unload', function () {

      document./*@if (@V) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/
        'keypress', Listener, false);

      /*@if (@V) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/
        'unload', arguments.callee, false);

    }, false);

})(
    //Listener
    (function (nextElement) {

      return function (evt) {

        var e  = evt./*@if (@V) srcElement @else@*/ target /*@end@*/;
        var keyCode = evt./*@if (@V) keyCode @else@*/ which /*@end@*/;
        var shift   = evt.shiftKey;

        if (/INPUT|TEXTAREA|SELECT/.test(e.nodeName)) {
          if (27 === keyCode) e.blur();
          if (13 === keyCode) {
            if ('INPUT' === e.nodeName && /submit|reset|button/.test(e.type) && shift) return;
            if ('TEXTAREA' === e.nodeName && !shift) return;
            if (e = nextElement(e)) e.focus();
            evt./*@if (@V) returnValue = false @else@*/ preventDefault() /*@end@*/;
          }
        }
      };

    })(
      //nextElement
      function (n) {

        var e;

        while (n) {
          e = n.firstChild || n.nextSibling;
          if (! e) {
            do {
              if (! (n = n.parentNode)) return null;
            } while (! (e = n.nextSibling))
          }
          n = e;
          if (1 === n.nodeType && 
              /INPUT|SELECT|TEXTAREA/.test(n.nodeName) &&
              ! ('INPUT' == n.nodeName && 'hidden' == n.type)
            ) return n;
        }
        return null;
      }
    )
);