<?php

	# Set the theme for your project's web pages.
	# See the Committer Tools "How Do I" for list of themes
	# https://dev.eclipse.org/committers/
	# Optional: defaults to system theme 
	$theme = "Nova";

	# Define your project-wide Nav bars here.
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# these are optional
	$Nav->setLinkList(array());
	$Nav->addNavSeparator("About AMP", 	"/amp");
	$Nav->addNavSeparator("Installing", "/amp/installing");
	$Nav->addCustomNav("Update Sites", "/amp/installing/updates.php", "_blank", 2);
	$Nav->addCustomNav("Downloads", "/amp/installing/downloads.php", "_blank", 2);
	$Nav->addCustomNav("Building", "/amp/developers/building.php", "_blank", 2);
	$Nav->addNavSeparator("Documentation", "/amp/documentation");
	$Nav->addCustomNav("Online", "/amp/documentation/contents/index.php", "_blank", 2);
	$Nav->addCustomNav("PDF", "/amp/documentation/amp.pdf", "_blank", 2);
	$Nav->addCustomNav("Wiki", "http://wiki.eclipse.org/AMP", "_blank", 2);
	$Nav->addCustomNav("Browse CVS", "http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.amp/?root=Modeling_Project", "_blank", 2);
	$Nav->addNavSeparator("Community", "/amp/support");
	$Nav->addCustomNav("Support", "/amp/support", "_blank", 2);
	$Nav->addCustomNav("Bugzilla", "https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AMP&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=", "_blank", 2);
	$Nav->addCustomNav("News", "http://www.eclipse.org/newsportal/thread.php?group=eclipse.amp", "_blank", 2);


	$pageTitle 		= "AMP";
	$pageKeywords	= "abm,amp,agent-based modeling,emf,amf,mdsd";
	$pageAuthor		= "Miles Parker";

#We probably shouldn't be overiding the eclipse menu...
	#$Menu->setMenuItemList(array());
	#$Menu->addMenuItem("Home", "/amp", "_self");
	#$Menu->addMenuItem("Download", "/amp/installing", "_self");
	#$Menu->addMenuItem("Documentation", "/amp/documentation", "_self");
	#$Menu->addMenuItem("Support", "/amp/support", "_self");
	#$Menu->addMenuItem("Developers", "/amp/developers", "_self");
	
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style.css"/>' . "\n\t");
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style2.css"/>' . "\n\t");
	
	$App->Promotion = TRUE;



?>
