whole_func_string: function(asString, dirtyOnly, includeEmptyText, useDataValues) {
          var values  = {},
              fields  = this.getFields().items,
              f,
              fLen    = fields.length,
              isArray = Ext.isArray,
              field, data, val, bucket, name;
  
          for (f = 0; f < fLen; f++) {
              field = fields[f];
  
              if (!dirtyOnly || field.isDirty()) {
                  data = field[useDataValues ? 'getModelData' : 'getSubmitData'](includeEmptyText);
  
                  if (Ext.isObject(data)) {
                      for (name in data) {
                          if (data.hasOwnProperty(name)) {
                              val = data[name];
  
                              if (includeEmptyText && val === '') {
                                  val = field.emptyText || '';
                              }
  
                              if (values.hasOwnProperty(name)) {
                                  bucket = values[name];
  
                                  if (!isArray(bucket)) {
                                      bucket = values[name] = [bucket];
                                  }
  
                                  if (isArray(val)) {
                                      values[name] = bucket.concat(val);
                                  } else {
                                      bucket.push(val);
                                  }
                              } else {
                                  values[name] = val;
                              }
                          }
                      }
                  }
              }
          }
  
          if (asString) {
              values = Ext.Object.toQueryString(values);
          }
          return values;
      }
func_code_string: function(asString, dirtyOnly, includeEmptyText, useDataValues) {
          var values  = {},
              fields  = this.getFields().items,
              f,
              fLen    = fields.length,
              isArray = Ext.isArray,
              field, data, val, bucket, name;
  
          for (f = 0; f < fLen; f++) {
              field = fields[f];
  
              if (!dirtyOnly || field.isDirty()) {
                  data = field[useDataValues ? 'getModelData' : 'getSubmitData'](includeEmptyText);
  
                  if (Ext.isObject(data)) {
                      for (name in data) {
                          if (data.hasOwnProperty(name)) {
                              val = data[name];
  
                              if (includeEmptyText && val === '') {
                                  val = field.emptyText || '';
                              }
  
                              if (values.hasOwnProperty(name)) {
                                  bucket = values[name];
  
                                  if (!isArray(bucket)) {
                                      bucket = values[name] = [bucket];
                                  }
  
                                  if (isArray(val)) {
                                      values[name] = bucket.concat(val);
                                  } else {
                                      bucket.push(val);
                                  }
                              } else {
                                  values[name] = val;
                              }
                          }
                      }
                  }
              }
          }
  
          if (asString) {
              values = Ext.Object.toQueryString(values);
          }
          return values;
      }
func_documentation_string: Retrieves the fields in the form as a set of key/value pairs, using their
  {@link Ext.form.field.Field#getSubmitData getSubmitData()} method to collect the values.
  If multiple fields return values under the same name those values will be combined into an Array.
  This is similar to {@link Ext.form.Basic#getFieldValues getFieldValues} except that this method
  collects only String values for submission, while getFieldValues collects type-specific data
  values (e.g. Date objects for date fields.)
  
  @param {Boolean} [asString=false] If true, will return the key/value collection as a single
  URL-encoded param string.
  @param {Boolean} [dirtyOnly=false] If true, only fields that are dirty will be included in the result.
  @param {Boolean} [includeEmptyText=false] If true, the configured emptyText of empty fields will be used.
  @param {Boolean} [useDataValues=false] If true, the {@link Ext.form.field.Field#getModelData getModelData}
  method is used to retrieve values from fields, otherwise the {@link Ext.form.field.Field#getSubmitData getSubmitData}
  method is used.
  @return {String/Object}