<?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 		= "Subversive Project is Looking for Sponsors";
	$pageKeywords	= "subversive, svn, subversion, project";
	$pageAuthor		= "Igor Vinnykov";
	
	$sidebar = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/subversive/sidebars/main.php");	
	
	// 	# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Subversive Project is Looking for a Sponsor</h1>
		<p>
			The Subversive project was started in 2005 as an open-source initiative of Polarion company. It was started as a small in-house project that aimed to help developers to work with SVN, but after a couple of years it was migrated to Eclipse as a fully-functional SVN team provider and is one of the most popular plug-ins in Eclipse ecosystem with hundreds of thousands of users all over the world. 
		</p>
		<p>
			Since the beginning of the project Subversive development and support was managed and sponsored by Polarion. Recently Polarion was acquired by another company, so it was decided to discontinue financial support of the project. The good news for Eclipse community is that the project can continue its life on Eclipse and the team of Subversive authors can continue the work on the project.
		</p>
		<p>
			To continue Subversive development the Subversive team of Eclipse committers is looking for funding and we are looking for a company that can sponsor Subversive development. The required budget is pretty low. The Subversive team will be glad to provide the additional information on a request, so please feel free to <a href="mailto:igor.vinnykov@polarion.com?subject=[Subversive sponsorship request]">contact us</a> if you would like to become the Subversive sponsor. 
		</p>
		<p align="right">
			Your Subversive Development Team
		</p>
	</div>
	
	<div id="rightcolumn">
        $sidebar		
	</div>	

EOHTML;
		

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>