<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");   $App   = new App();  
$Nav  = new Nav();  $Menu   = new Menu();    include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

  #*****************************************************************************
  #
  #
  #****************************************************************************
  
  #
  # Begin: page-specific settings.  Change these. 
  $pageTitle     = "Orbit";
  $pageKeywords  = "orbit, bundles, third party, code, equinox, osgi, framework, runtime";
  
  # Add page-specific Nav bars here
  # Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
  # $Nav->addNavSeparator("My Page Links",   "downloads.php");
  # $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
  # $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

  # End: page-specific settings
  #
    
  # Paste your HTML content between the markers!  
ob_start();

  $Nav->setLinkList( array() );
  $Nav->addNavSeparator( "Orbit", "/orbit" );
  $Nav->addCustomNav( "About This Project",
    "/projects/project_summary.php?projectid=tools.orbit", "", 1  );


?>    

  <div id="midcolumn">
        <p>This project will provide a repository of bundled versions of third party
          libraries that are approved for use in one or more Eclipse projects.</p>
  </div>

<?php
  $html = ob_get_contents();
  ob_end_clean();
  
  # Generate the web page
  $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
