<?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();	$theme = "Phoenix";include($App->getProjectCommon());   # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 	 	Nathan Gervais
	# Date:			2008-04-21
	#
	# Description: Ganymede Landing Page
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Learn more about Ganymede";
	$pageKeywords	= "eclipse ganymede, ganymede, ganymede release train";
	$pageAuthor		= "Eclipse Foundation, Inc.";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank)
	# $Nav->addCustomNav("My Link", "mypage.php", "_self");
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

	# End: page-specific settings
	#
	
	# Place your html content in a file called content/en_pagename.php

	$documentRoot = $_SERVER['DOCUMENT_ROOT'];
	$cookie = @$_COOKIE['activeTabGanymede'];
	ob_start();
	?>
	<script type="text/javascript" src="functions.js"></script>
	<link rel="stylesheet" type="text/css" href="layout.css" media="screen" />
	<div id="midcolumn">
		<div class="title">
			<img align="absbottom" src="http://dev.eclipse.org/large_icons/actions/system-search.png"/> 
			<h1 class="inline"><?=$pageTitle; ?></h1>
		</div>
		<div id="intro">
			<p>Browse our Ganymede Demos from <a href="http://live.eclipse.org" target="_blank">Eclipse Live</a> or view the list of Ganymede Projects.</p>
		</div>
		<div id="dataBox">
		<div id="tabSelection">
			<ul>
				<li><a <? if ($cookie == "projects") echo "class=\"active\""; ?>id="projects" onClick="updateTable('projects');SetActive('projects', 'demos');">Projects</a></li>
				<li><a <? if ($cookie == "demos") echo "class=\"active\""; ?> id="demos" onClick="updateTable('demos');SetActive('demos', 'projects');">Demos</a></li>
			</ul>
		</div>
		<div id="tabData">
			<? 
				if ($cookie != "")
					include ('fetch/'.$cookie. '.php');
				else
					include ('fetch/projects.php'); 
			?>
		</div>
		<hr class="clearer"/>
		</div>
	</div>
<?	$html = ob_get_clean();

	# Generate the web page
	// Date in the past
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
	// always modified
	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
	// HTTP/1.1
	header("cache-Control: no-store, no-cache, must-revalidate");
	header("cache-Control: post-check=0, pre-check=0", false);
	// HTTP/1.0
	header("Pragma: no-cache"); 
	$App->Promotion = TRUE;
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
	