code: function (str, sep, eq) {
              sep = sep || SEP;
              eq = eq || EQ;
              var ret = {}, eqIndex, key, val, pairs = str.split(sep), i = 0, len = pairs.length;
              for (; i < len; ++i) {
                  eqIndex = pairs[i].indexOf(eq);
                  if (eqIndex === -1) {
                      key = urlDecode(pairs[i]);
                      val = undef;
                  } else {
                      // remember to decode key!
                      key = urlDecode(pairs[i].substring(0, eqIndex));
                      val = pairs[i].substring(eqIndex + 1);
                      try {
                          // http://stackoverflow.com/questions/9064536/javascript-decodeuricomponent-malformed-uri-exception
                          val = urlDecode(val);
                      } catch (e) {
                          LoggerManager.log('decodeURIComponent error : ' + val, 'error');
                          LoggerManager.log(e, 'error');
                      }
                      if (key.slice(0 - 2) === '[]') {
                          key = key.slice(0, 0 - 2);
                      }
                  }
                  if (key in ret) {
                      if (isArray(ret[key])) {
                          ret[key].push(val);
                      } else {
                          ret[key] = [
                              ret[key],
                              val
                          ];
                      }
                  } else {
                      ret[key] = val;
                  }
              }
              return ret;
          }
docs: Parses a URI-like query string and returns an object composed of parameter/value pairs.
  
  for example:
  @example
  'section=blog&id=45'        // -> {section: 'blog', id: '45'}
  'section=blog&tag=js&tag=doc' // -> {section: 'blog', tag: ['js', 'doc']}
  'tag=ruby%20on%20rails'        // -> {tag: 'ruby on rails'}
  'id=45&raw'        // -> {id: '45', raw: ''}
  @param {String} str param string
  @param {String} [sep='&'] separator between each pair of data
  @param {String} [eq='='] separator between key and value of data
  @return {Object} json data
  @member KISSY