<?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'
#require_once 'buildTypes.php';
#require_once 'parseBuilds.php';

#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "Tigerstripe Downloads";
$pageKeywords	= "Tigerstripe, downloads";
$pageAuthor		= "Eric Dillon";
# End: page-specific settings
#

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

<script language="JavaScript" type="text/javascript">
<!--
function toggle(list){
var listElementStyle=document.getElementById(list).style;
if (listElementStyle.display=="none"){
listElementStyle.display="block";
}
else{ listElementStyle.display="none";
}
}// -->
</script>

<div id="maincontent">

<div id="midcolumn">
<h1>$pageTitle</h1>
<div class="homeitem3col">
	<h3>Latest Release</h3>
	<p>
		Version 0.6 of Tigerstripe has not yet been released.  A project's build has to be approved by the foundation before it can be "marked" as an official release.
		This is currently in the works and once the process is complete, an update site will be available to host the latest release of Tigerstripe.  
		For the time being, please use the update site listed under Iteration Builds.
	</p>
	 
</div>
EOHTML;

$html = $html . <<<EOHTML
	<h3>Iteration Builds</h3>
	<p>
		The Tigerstripe team follows an agile methodology involving three-week iterations. <br/>
		Each release is typically made up of 5-6 iterations and each iteration is three-weeks long.  The following update site hosts the build released at the end of each iteration.
		<ul>
			<li><b>Update Site: <br/>http://download.eclipse.org/technology/tigerstripe/updates/3.6/latest</b></li> </br>
			For installation instructions, please click on the link to the right.  To find out which iteration is hosted by this update site and to see the latest features included in Tigerstripe, please 
			see the <a href="http://wiki.eclipse.org/Tigerstripe_Release_Notes">Release Notes</a>.  This build is compatible with the latest release of Eclipse (Helios 3.6.1).
		</ul>
	</p>

	<h3>Past Releases</h3>
	<p>
		Please click <a href="/tigerstripe/downloads/past_releases.php">here</a> for past releases of Tigerstripe.
	</p>
		
		
EOHTML;

$html = $html . <<<EOHTML
	</div>
	<div id="rightcolumn">
 		<div class="sideitem">
		   <h6>Related Links</h6>
		   <ul>
		   	<li><a href="http://wiki.eclipse.org/Tigerstripe_Release_Notes">Release Notes</a></li>
		   	<li><a href="http://wiki.eclipse.org/Tigerstripe_Download_instructions">Installation Instructions</a></li>
		   	<li><a href="http://wiki.eclipse.org/Tigerstripe_Hello_World">Hello World Application</a></li>
		   	<li><a href="/tigerstripe/downloads/past_releases.php">Past Releases</a></li>
		   	<li><a href="/tigerstripe/generators">Generators</a></li>
		   	<li><a href="/tigerstripe/downloads/sid_import_tool.php">SID Import Tool</a></li>
		    </ul>
 		</div>
 		<div class="sideitem">
		   <h6>Incubation</h6>
 		  <div align="center">
 		  	<a href="/projects/what-is-incubation.php">
 		  		<img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
 		  	</a>
 		  </div>
 		</div>
 	</div>
</div>
EOHTML;

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