var DisableSubmit = {
   init: function() {
      this.addEvent(window, 'load', this.set());
   },

   set: function() {
      var self = this;
      return function() {

         var elms = document.getElementsByTagName('input');
         for (var i = 0; i < elms.length ; ++i) {
            var elm = elms[i];
            if(typeof(elm.onclick) == 'undefined') continue;
            if (elm.type == 'button' && !elm.disabled) {
               self.addEvent(elm, 'click', function () { self.setDisable(elms) });
            }
         }

         for (var i = 0; i < document.forms.length; ++i) {
            if(document.forms[i].onsubmit) continue;
            self.addEvent(document.forms[i], 'submit', function() { self.setDisable(elms); });
         }
      }
   },

   setDisable: function(elms) {
      for (var i = 0, elm; elm = elms[i]; i++) {
         if ((elm.type == 'button' || elm.type == 'submit' || elm.type == 'image') && !elm.disabled) {
            Set(elm);
            unSet(elm);
         }
      }

      function Set(button) {
         window.setTimeout(function() { button.disabled = true; }, 1);
      }
      function unSet(button) {
         window.setTimeout(function() { button.disabled = false; }, 3000);
      }
   },

   addEvent: function(elm, type, event) {
      if(elm.addEventListener) {
         elm.addEventListener(type, event, false);
      } else if(elm.attachEvent) {
         elm.attachEvent('on'+type, event);
      } else {
         // not override
         // elm['on'+type] = event;
      }
   },

   submit: function(form) {
      form.onsubmit();
      window.setTimeout(function() { form.submit(); }, 100);
   }
}

DisableSubmit.init();
