<?php
/**
 * Copyright (c) 2021 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 */

require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");

$Nav = new Nav();
$Nav->addNavSeparator("Specification Process", "index.php");
$Nav->addCustomNav("Operations Guide", "/projects/efsp/operations.php", "_self", 0);

$Nav->addNavSeparator("Development Process", "/projects/dev_process");
$Nav->addCustomNav("Project Handbook", "/projects/handbook", "_self", 0);
$Nav->addCustomNav("Intellectual Property Policy", "/org/documents/Eclipse_IP_Policy.pdf", "_self", 0);

$Nav->addNavSeparator("Working Groups", "/org/workinggroups");
$Nav->addCustomNav("Process", "/org/workinggroups/industry_wg_process.php", "_self", 2);
$Nav->addCustomNav("Operations Guide", "/org/workinggroups/operations.php", "_self", 2);

$Nav->addNavSeparator("Eclipse Foundation", "index.php");
$Nav->addCustomNav("Legal Resources", "/legal/", "_self", 2);
$Nav->addCustomNav("Contact Us", "/org/foundation/contact.php", "_self", 2);
