Function to take the active filters data and build it into a query.
The format of the query depends on the {@link #encode} configuration:

- `false` (Default) :
Flatten into query string of the form (assuming <code>{@link #paramPrefix}='filters'</code>:

filters[0][field]="someDataIndex"&
filters[0][data][comparison]="someValue1"&
filters[0][data][type]="someValue2"&
filters[0][data][value]="someValue3"&


- `true` :
JSON encode the filter data

{filters:[{"field":"someDataIndex","comparison":"someValue1","type":"someValue2","value":"someValue3"}]}

Override this method to customize the format of the filter query for remote requests.

@param {Array} filters A collection of objects representing active filters and their configuration.
Each element will take the form of {field: dataIndex, data: filterConf}. dataIndex is not assured
to be unique as any one filter may be a composite of more basic filters for the same dataIndex.

@return {Object} Query keys and values
function (filters) {
        var p = {}, i, f, root, dataPrefix, key, tmp,
            len = filters.length;

        if (!this.encode){
            for (i = 0; i < len; i++) {
                f = filters[i];
                root = [this.paramPrefix, '[', i, ']'].join('');
                p[root + '[field]'] = f.field;

                dataPrefix = root + '[data]';
                for (key in f.data) {
                    p[[dataPrefix, '[', key, ']'].join('')] = f.data[key];
                }
            }
        } else {
            tmp = [];
            for (i = 0; i < len; i++) {
                f = filters[i];
                tmp.push(Ext.apply(
                    {},
                    {field: f.field},
                    f.data
                ));
            }
            // only build if there is active filter
            if (tmp.length > 0){
                p[this.paramPrefix] = Ext.JSON.encode(tmp);
            }
        }
        return p;
    }