<?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;
	
	# Define these here, or in _projectCommon.php for site-wide values
	$pageTitle 		= "Special Builds - Eclipse Subversive";
	$pageKeywords	= "subversive, download, 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>Special Builds</h1>
		<p>
			Here you can find information about the latest special Subversive builds, such as builds for headless environments and PDE builds.
		</p>
		<h2>Build for Headless Environment</h2>
		<p>
			This Subversive build is intended for use in a non-UI mode to execute SVN operations.
		</p>
		<p>
			<b>Release Date:</b> 22 July 2015<br/>
			<b>Version:</b> 3.0.1.I20150722-1700		
		</p>
		<p>
			<b>Update Site:</b><br/>	
			<a href="http://download.eclipse.org/technology/subversive/3.0/headless-update-site/">http://download.eclipse.org/technology/subversive/3.0/headless-update-site/</a>		
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/3.0/builds/Subversive-headless-3.0.1.I20150722-1700.zip">Subversive-headless-3.0.1.I20150722-1700.zip</a>
		</p>	
		<p>
			<b>Previous Release:</b> 23 January 2015<br/>
			<b>Version:</b> 2.0.4.I20150123-1700
		</p>
		<p>
			<b>Update Site:</b><br/>	
			<a href="http://download.eclipse.org/technology/subversive/2.0/headless-update-site/">http://download.eclipse.org/technology/subversive/2.0/headless-update-site/</a>		
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/2.0/builds/Subversive-headless-2.0.4.I20150123-1700.zip">Subversive-headless-2.0.4.I20150123-1700.zip</a>
		</p>		
		<h2>SVN PDE Build</h2>
		<p>
			This is a special type of Subversive build used by Eclipse PDE/Build to fetch data stored in SVN repositories. For more information, refer to the <a href="http://wiki.eclipse.org/Subversive_PDE_Fetch">documentation</a>.
		</p>
		<p>
			<b>Release Date:</b> 01 June 2012<br/>
			<b>Version:</b> 1.0.0.I20120601-1700		
		</p>
		<p>
			<b>Update Site:</b><br/>	
			<a href="http://download.eclipse.org/technology/subversive/1.0/pde-update-site/">http://download.eclipse.org/technology/subversive/1.0/pde-update-site/</a>		
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/1.0/builds/Subversive-svn-pde-1.0.0.I20120601-1700.zip">Subversive-svn-pde-1.0.0.I20120601-1700.zip</a>
		</p>		
	</div>
	
	<div id="rightcolumn">
        $sidebar		
	</div>	

EOHTML;
		

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