<?php  																														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("_projectCommon.php");    # All on the same line to unclutter the user's desktop'


	#
	# Begin: page-specific settings.  Change these.
	$pageTitle 		= "Participate in the Eclipse Foundation Survey";
	$pageKeywords	= "eclipse, survey, foundation";
	$pageAuthor		= "Kat Hirsch";

	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank)
	# $Nav->addCustomNav("My Link", "mypage.php", "_self");
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

	# End: page-specific settings
	#

	# Paste your HTML content between the EOHTML markers!
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>

<b><p>Give Us Your Opinion About Open Source and the Eclipse Foundation</b></p>

<p>The Eclipse Foundation is conducting a brief survey about open source foundations and the Eclipse community.
The <a target="_blank" href="https://www.surveymonkey.com/r/EclipseFdn">survey</a> should take less than <b>5 minutes</b> to complete. Please take the time to provide your opinion and feedback.
Your input is valuable to us.</p>

<p>The deadline to participate is <b>April 28, 2017</b>. The aggregated results of the survey will be published in early May 2017.</p>

<p>Link to <a target="_blank" href="https://www.surveymonkey.com/r/EclipseFdn">Survey</a>.<p>

<p>Thanks for providing your input!</p>

				</div>

	<!-- remove the entire <div> tag to omit the right column!  -->
	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Related Links</h6>
			<ul>
				<li><a target="_blank" href="https://eclipse.org">Home</a></li>
			</ul>
		</div>
	</div>
</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
<?php
/*
 * Created on 20-Jan-2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
?>

