<?php  
/*******************************************************************************
 * Copyright (c) 2010 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *              Eclipse Foundation - Initial version
 *              Simon Redding
 *******************************************************************************/

        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());
        # $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/style.css"/>');

        $localVersion = false;

        # Define these here, or in _projectCommon.php for site-wide values
        # $pageKeywords = "eclipse, project";
        # $pageAuthor   = "Your name";
        $pageTitle              = "Papyrus-RT - Download";

        $html = file_get_contents('overview.html');

        # Generate the web page
        $App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>


