function makeoodoc(genobj, new_type, options, gen_private, type_info) {
  /**
   * Get the string that opening every Office XML type.
   * <br /><br />
   *
   * Every OpenOffice XML resource will have this header at the begining of the file.
   *
   * @param {object} data Ignored by this callback function.
   * @return Text string.
   */
  gen_private.plugs.type.openoffice.makeOpenOfficeBasicXml = function (data) {
    return '<?xml version="1.0" encoding="UTF-8"?>\n'
  }

  // Basic API for plugins:

  gen_private.plugs.type.openoffice = {}

  /**
   * Create the mimetpe resource.
   * <br /><br />
   *
   * Every OpenOffice based document must have this resource.
   *
   * @param {object} data Ignored by this callback function.
   * @return Text string.
   */
  function makeOpenOfficeMimeType(data) {
    return (
      'application/vnd.oasis.opendocument.' +
      gen_private.mixed.res_data.mimeType
    )
  }

  /**
   * Generate the manifest XML resource.
   * <br /><br />
   *
   * Tbis function creating the manifest resource.
   *
   * @param {object} data Array filled with all the resources information.
   * @return Text string.
   */
  gen_private.plugs.type.openoffice.makeManifest = function (data) {
    var outString = gen_private.plugs.type.openoffice.makeOpenOfficeBasicXml(
      data
    )
    outString +=
      '<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">\n'

    // Add all the rels records inside the data array:
    for (var i = 0, total_size = data.length; i < total_size; i++) {
      if (typeof data[i] !== 'undefined') {
        outString +=
          ' <manifest:file-entry manifest:media-type="' +
          data[i].type +
          '" manifest:full-path="' +
          data[i].target +
          '"/>\n'
      } // Endif.
    } // End of for loop.

    outString += '</manifest:manifest>\n'
    return outString
  }

  /**
   * Prepare the officegen object to OpenOffice documents.
   * <br /><br />
   *
   * Every plugin that implementing gemenrating OpenOffice document must call this method to initialize
   * the common stuff.
   *
   * @param {object} mimeType The mime type of this document.
   * @param {object} ext_opt Optional settings (unused right now).
   */
  gen_private.plugs.type.openoffice.makeOfficeGenerator = function (
    mimeType,
    ext_opt
  ) {
    gen_private.mixed.res_data.mimeType = mimeType
    gen_private.mixed.files_list = []

    gen_private.mixed.files_list.push(
      {
        name: 'content.xml',
        type: 'text/xml'
      },
      {
        name: 'settings.xml',
        type: 'text/xml'
      },
      {
        name: 'styles.xml',
        type: 'text/xml'
      },
      {
        name: 'manifest.rdf',
        type: 'application/rdf+xml'
      },
      {
        name: 'meta.xml',
        type: 'text/xml'
      }
    )

    gen_private.plugs.intAddAnyResourceToParse(
      'mimetype',
      'buffer',
      null,
      makeOpenOfficeMimeType,
      true
    )
    gen_private.plugs.intAddAnyResourceToParse(
      'META-INF\\manifest.xml',
      'buffer',
      gen_private.mixed.rels_main,
      gen_private.plugs.type.openoffice.cbMakeRels,
      true
    )
    // gen_private.plugs.intAddAnyResourceToParse ( 'settings.xml', 'buffer', null, make???, true )
    // gen_private.plugs.intAddAnyResourceToParse ( 'styles.xml', 'buffer', null, make???, true )
    // gen_private.plugs.intAddAnyResourceToParse ( 'manifest.rdf', 'buffer', null, make???, true )
    // gen_private.plugs.intAddAnyResourceToParse ( 'meta.xml', 'buffer', null, make???, true )
  }

  return this
}
Extend officegen object with OpenOffice support.

This method extending the given officegen object with the common OpenOffice code.

@param {object} genobj The object to extend.
@param {object} new_type The type of object to create.
@param {object} options The object's options.
@param {object} gen_private Access to the internals of this object.
@param {object} type_info Additional information about this type.
@constructor
@name makeoodoc