code: function obMerge(prefix, ob1, ob2 /*, ...*/)
      {
          for (var i=2; i<arguments.length; ++i)
          {
              for (var nm in arguments[i]) 
              {
                  if (arguments[i].hasOwnProperty(nm) || typeof arguments[i][nm] == 'function')
                  {
                      if (typeof(arguments[i][nm]) == 'object' && arguments[i][nm] != null)
                      {
                          ob1[prefix+nm] = (arguments[i][nm] instanceof Array) ? new Array : new Object;
                          obMerge('', ob1[prefix+nm], arguments[i][nm]);
                      }
                      else
                      {
                          ob1[prefix+nm] = arguments[i][nm]; 
                      }
                  }
              }
          }
          return ob1;
      }
docs: merges two or more objects into one and add prefix at the beginning of every property name at the top level
  objects type is lost, only own properties copied