function ButtonManager(span) {
  var mySelf = this

  // Superclass Constructor
  top.glbDict.makeWidgetManager(this,span)

  mySelf.delayPostClick = function() {
    if (top.glbDict.postIsBusy == true) {
      setTimeout("top.glbDict.uwWidgetFactory.getWidgetInst('" + mySelf.getID() + "').delayPostClick()",200)
    }
    else {
    top.glbDict.queueServerEvent( mySelf.span , 'onclick' , false, '0' )
    }
  }

  mySelf.postClick = function() {
    // Don't allow a click no matter what if the button is disabled
    if (mySelf.span.getAttribute('disabled')) {
      return
    }
    // From what I can see, only Opera currently needs this, because it will launch separate threads for a 'blur' and
    // a 'click' when someone leaves a field after changing it, and they leave the field by pressing a button.
    // We need to make sure that any updates made to the field are present on the server before the button can
    // be safely processed, because a race condition occurs and many times the button wins, and the update is
    // lost.  In particular when processing changes to large amounts of data in a textarea, this might occur.

    // Update to previous comment.  Lots of browsers do this under various conditions.  
    //if (window.opera) {
    if (1) {
      //mySelf.delayPostClick()
      setTimeout("top.glbDict.uwWidgetFactory.getWidgetInst('" + mySelf.getID() + "').delayPostClick()",100)
    }
    else {
      top.glbDict.queueServerEvent( mySelf.span , 'onclick' , false, '0' )
    }

  }

  mySelf.initialize = function() {
    mySelf.child = span.getElementsByTagName('BUTTON')[0] 
  }

  mySelf.initialize()

  return mySelf
}

top.glbDict.uwWidgetFactory.registerWidgetClass('Button',ButtonManager)
