<?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 (Past Releases)";
$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">

	
	<h4>Galileo Support: Tigerstripe 0.5.x is required for Galileo.</h4>
	<p>To use Tigerstripe with Galileo, you need to install a 0.5.x build of Tigerstripe. Please note that 0.5.0M1 is actuality equivalent to
	0.4.6 in functionality and stability. 0.5.0M1 only adds a few minimal enhancements.</p> 
</div>
EOHTML;

$html = $html . <<<EOHTML
	<h3>Ganymede: Tigerstripe 0.4.x</h3>
		<p>This version of Tigerstripe requires Ganymede (Eclipse 3.4.x)</p>
		<h4>Release Builds</h4>
		<ul>
			<li><img src="/tigerstripe/images/dl.gif" alt="Download"/><strong>0.4.6_incubation</strong> - (Thu, 7 May 2009 -- 14:26 (-0700))
				<ul>
					<li><strong>Tigerstripe Workbench</strong><br/>
						<small>(The end-user workbench)</small>
						<ul>
							<li><a href='http://www.eclipse.org/downloads/download.php?file=/technology/tigerstripe/bundle-tigerstripe-workbench-0.4.6_incubation.zip'>bundle-tigerstripe-workbench-0.4.6_incubation.zip</a> (80M)<br/>
							<small>Tigerstripe Plugins + Required Plugins</small>
							</li>
						</ul>
					</li>
				</ul>
			</li>
			<li><strong>Build Dependencies</strong>
				<ul><li>Eclipse 3.4.x (Ganymede)</li></ul>
			</li>
		</ul>

	<h3>Galileo: Tigerstripe 0.5.x (No official release yet)</h3>
<!--	<h4>Release Builds</h4>-->
		<p>This version of Tigerstripe requires Galileo (Eclipse 3.5.x)</p>
	<h4>Stable Builds</h4>
		<ul>
			<li><strong>0.5.0M1 (incubation)</strong> - 08/27/09 (0.5.0.200908271716NGT)
				<ul>
					<li>This is the second build of Tigerstripe available for Galileo. It is equivalent in functionality 
					and stability to 0.4.6 which was for Ganymede, with the addition of a few bug fixes and UI enhancements (<small><a href="/tigerstripe/downloads/notes/0.5M1.php">Release Notes</a></small>).</li>
					<li>Use <a href="/tigerstripe/downloads/updates.php">tigerstripeTigerstripe Interim Update site</a> to install from Galileo.</li>			
				</ul>
			</li>
		</ul>
		
EOHTML;

$html = $html . <<<EOHTML
	</div>
	<div id="rightcolumn">
 		<div class="sideitem">
		   <h6>Related Links</h6>
		   <ul>
		   	<li><a href="/tigerstripe/downloads/allDownloads.php">New Releases</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);
?>
