フォームの要素にフォーカスがあたったらスタイルを変える

var AutoFocus = {

  'cssText_on'  : 'background-color: #fee; border: 2px #866 solid;',
  'cssText_off' : '',

  'Handlers': {

    /*@if (@_jscript) 'focusout' @else@*/ 'blur' /*@end@*/: function (evt) {
      var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/;
      if ( /INPUT|TEXTAREA/.test(e.nodeName) ) {
        e.style.cssText = AutoFocus.cssText_off;
      }
    },
    
    /*@if (@_jscript) 'focusin' @else@*/ 'focus' /*@end@*/: function (evt) {
      var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/;
      if ( /INPUT|TEXTAREA/.test(e.nodeName) ) {
        e.style.cssText = AutoFocus.cssText_on;
      }
    },
      
    'unload': function (evt) {
      AutoFocus.Detach (document, /*@if (@_jscript) 'focusout' @else@*/ 'blur' /*@end@*/, AutoFocus.Listener, true);
      AutoFocus.Detach (document, /*@if (@_jscript) 'focusin' @else@*/ 'focus' /*@end@*/, AutoFocus.Listener, true);
    }

  },
  
  'Listener':
    function (evt) {
      AutoFocus.Handlers[ evt.type ].apply (this, arguments);
    },

  'Attach':
    function (target, type, listener, useCapture) {
      return target./*@if (@_jscript) attachEvent('on' + @else@*/ addEventListener(/*@end@*/ type, listener, useCapture);
    },

  'Detach':
    function (target, type, listener, useCapture) {
      return target./*@if (@_jscript) detachEvent('on' + @else@*/ removeEventListener(/*@end@*/ type, listener, useCapture);
    },

  'Initialize':
    function () {
      this.Attach (document, /*@if (@_jscript) 'focusout' @else@*/ 'blur' /*@end@*/, this.Listener, true);
      this.Attach (document, /*@if (@_jscript) 'focusin' @else@*/ 'focus' /*@end@*/, this.Listener, true);
      this.Attach (window, 'unload', this.Listener, true);
    }
};


AutoFocus.Initialize();