<?php
	set_include_path($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common" . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/projects" . PATH_SEPARATOR . get_include_path());
	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());
	
	$localVersion = false;

	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Downloads - Eclipse Subversive";
	$pageKeywords	= "subversive, downloads, svn, subversion";
	$pageAuthor		= "Igor Vinnykov";
	
	$sidebar = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/subversive/sidebars/download.php");	
	
	# Paste your HTML content between the EOHTML markers!	
$html = <<<EOHTML
	
	<div id="midcolumn">
		<h1>Downloads</h1>
		<p>Use the resources below to install Subversive, download Subversive releases and special builds and learn how to install Subversive using different types of the project distribution.</p>
		<h2>Install the Latest Stable Build</h2>
		<p>The latest stable build is aimed to provide you with access to the latest Subversive features before they become available in the Subversive build included into the yearly Eclipse Simultaneous Release. Use the icon below to install it.</p>
		<p>
			<table width="100%" cellspacing="0" cellpadding="0" style="margin-bottom: 0px;">
				<tr valign="center">
					<td width="15%">
						<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=1139" title="Drag and drop into a running Eclipse workspace to install Subversive">
		  					<img src="/subversive/images/install.png"/>
						</a>				
					</td>
					<td width="85%">
						- <b>Drag and drop into a running Eclipse workspace to install Subversive</b>
					</td>
				</tr>
			</table>			
		</p>
		<h2>Subversive Releases and Installation Instructions</h2>
		<p>
			Use the resources below to learn how to determine the right Subversive version for your OS platform, Eclipse and SVN environment and download it. Find instructions on how to install the Subversive plug-in and SVN connectors.
		</p>
		<ul>
			<li><a href="/subversive/latest-releases.php">Latest Releases</a> - Instructions for downloading the latest stable Subversive release that is a part of the latest Eclipse Simultaneous Release. Information about the Early Access Build that includes the latest Subversive features.</li>
			<li><a href="/subversive/installation-instructions.php">Installation Instructions</a> - Learn how to install Subversive using different types of the project distribution. Get instructions for installation of the Subversive plug-in and Subversive SVN connectors.</li>
			<li><a href="/subversive/special-builds.php">Special Builds</a> - Download special types of Subversive builds, such as Build for Headless Environments and SVN PDE Build.</li>
			<li><a href="/subversive/previous-releases.php">Previous Releases</a> - Instructions for downloading previous Subversive builds created for previous Eclipse Simultaneous Releases.</li>									
		</ul>		
	</div>
	
	<div id="rightcolumn">
        $sidebar		
	</div>

EOHTML;


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