whole_func_string: function (picker, date) {
          // NOTE: we need to redefine the picker.
          var me = this,
              menu = me.menu,
              checkItemId = menu.getFocusEl().itemId.replace(me.reItemId, '$1'),
              fields = me.fields,
              field;
  
          picker = menu.queryById(checkItemId);
          field = me.fields[picker.itemId];
          field.setChecked(true);
  
          if (field == fields.on) {
              fields.before.setChecked(false, true);
              fields.after.setChecked(false, true);
          } else {
              fields.on.setChecked(false, true);
              if (field == fields.after && me.getFieldValue('before') < date) {
                  fields.before.setChecked(false, true);
              } else if (field == fields.before && me.getFieldValue('after') > date) {
                  fields.after.setChecked(false, true);
              }   
          }   
          me.fireEvent('update', me);
  
          // The timepicker's getBubbleTarget() returns the boundlist's implementation,
          // so it doesn't look up ownerCt chain (it looks up this.pickerField).
          // This is a problem :)
          // This can be fixed by just walking up the ownerCt chain
          // (same thing, but confusing without comment).
          picker.ownerCt.ownerCt.hide();
      }
func_code_string: function (picker, date) {
          // NOTE: we need to redefine the picker.
          var me = this,
              menu = me.menu,
              checkItemId = menu.getFocusEl().itemId.replace(me.reItemId, '$1'),
              fields = me.fields,
              field;
  
          picker = menu.queryById(checkItemId);
          field = me.fields[picker.itemId];
          field.setChecked(true);
  
          if (field == fields.on) {
              fields.before.setChecked(false, true);
              fields.after.setChecked(false, true);
          } else {
              fields.on.setChecked(false, true);
              if (field == fields.after && me.getFieldValue('before') < date) {
                  fields.before.setChecked(false, true);
              } else if (field == fields.before && me.getFieldValue('after') > date) {
                  fields.after.setChecked(false, true);
              }   
          }   
          me.fireEvent('update', me);
  
          // The timepicker's getBubbleTarget() returns the boundlist's implementation,
          // so it doesn't look up ownerCt chain (it looks up this.pickerField).
          // This is a problem :)
          // This can be fixed by just walking up the ownerCt chain
          // (same thing, but confusing without comment).
          picker.ownerCt.ownerCt.hide();
      }
func_documentation_string: Handler for when the DatePicker for a field fires the 'select' event
  @param {Ext.picker.Date} picker
  @param {Object} date