<?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="http://marketplace.eclipse.org/sites/all/modules/custom/marketplace/images/installbutton.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);
?>
