<?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>
		<iframe width="560" height="315" src="https://www.youtube.com/embed/04L4rkykWZw" frameborder="0" allowfullscreen></iframe>
		<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);
?>
