<?php

/*******************************************************************************
 * Copyright (c) 2009-2013 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:
 *    
 *******************************************************************************/

	# Set the theme for your project's web pages.
	# See http://eclipse.org/phoenix/
	$theme = "Nova";
	

	# Define your project-wide Navigation here
	# This appears on the left of the page if you define a left nav
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# these are optional
	
	# If you want to override the eclipse.org navigation, uncomment below.
	# $Nav->setLinkList(array());
	
	# Break the navigation into sections
	$Nav->addNavSeparator("TCF", 	"/tcf");
	$Nav->addCustomNav("Download", "/tcf/downloads.php", "_self", 3);
	$Nav->addCustomNav("Documentation", "/tcf/documentation.php", "_self", 3);
	$Nav->addCustomNav("Support", "/tcf/support.php", "_self", 3);
	$Nav->addCustomNav("Getting Involved", "/tcf/developers.php", "_self", 3);
    $Nav->addCustomNav("About this project", "http://projects.eclipse.org/projects/tools.cdt.tcf", "_self", 3);

	# Define keywords, author and title here, or in each PHP page specifically
	$pageKeywords	= "eclipse, tcf, embedded, target, debugging, cdt, communication";
	$pageAuthor		= "Martin Oberhuber";

	# top navigation bar
	# To override and replace the navigation with your own, uncomment the line below.
	$Menu->setMenuItemList(array());
	$Menu->addMenuItem("Eclipse &gt;", "/", "_self");
	$Menu->addMenuItem("CDT &gt;", "/cdt", "_self");
	$Menu->addMenuItem("TCF |", "/tcf", "_self");
	$Menu->addMenuItem("Download", "/tcf/downloads.php", "_self");
	$Menu->addMenuItem("Documentation", "/tcf/documentation.php", "_self");
	$Menu->addMenuItem("Support", "/tcf/support.php", "_self");
	$Menu->addMenuItem("Developers", "/tcf/developers", "_self");
    $Menu->addMenuItem("About", "http://projects.eclipse.org/projects/tools.cdt.tcf", "_self");
	
	# To define additional CSS or other pre-body headers
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/tcf/style.css"/>');
	
	# To enable occasional Eclipse Foundation Promotion banners on your pages (EclipseCon, etc)
	$App->Promotion = TRUE;
	
	# If you have Google Analytics code, use it here
	$App->SetGoogleAnalyticsTrackingCode("UA-312551-3");
?>