<?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($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Review the Eclipse Helios Release";
	$pageKeywords	= "eclipse, helios, release, review, contest";
	$pageAuthor		= "Lynn Gayowski";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
	// This file is linked to from lots of different places.
	// Use absolute paths to make sure that we can actually test
	// that the file renders properly (i.e. testing using) "/index.php",
	// and "/home/index.php" both work.

	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML
<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>

		<p>
		The Eclipse Foundation wants to hear what you think of the <a href="http://eclipse.org/helios/projects.php">Eclipse
      	projects</a> that are being released as part of Helios.  As an added bonus, all qualified reviewers
      	will receive an Eclipse t-shirt. One lucky winner will also win a pass to
      	<a href="http://www.eclipsecon.org/2011/">EclipseCon 2011</a> or
      	<a href="http://www.eclipsecon.org/summiteurope2010/">Eclipse Summit Europe 2010</a>!
      	Entries must be received by July 31, 2010 at 4:00 pm EST.
      	</p>

		<h3>Entry Instructions</h3>
		<ul>
		<li>Write a review or record a video review or demo of Helios.</li>
		<li>Publish your review on your blog, a newsgroup, or portal such as <a href="http://www.eclipsezone.com"
		target="blank">EclipseZone</a>, <a href="http://www.infoq.com"
		target="blank">InfoQ</a>, <a href="http://www.javalobby.com" target="blank">Javalobby</a>,
		<a href="http://www.jaxenter.com" target="blank">Jaxenter</a>,
		<a href="http://www.theserverside.com" target="blank">The ServerSide</a> or other technology portal</li>
		<li>Send your name and the link to your review to <a href="mailto:helios.reviews@eclipse.org">helios.reviews@eclipse.org</a></li>
		</ul>
		
		<p>
		Individuals are allowed to submit multiple entries, but only one prize per person will be awarded.
		</p> 

  		<img src="blogcollage.png" width="500">  
  				
		<h3>Review Guidelines</h3>
		<ul>
		<li>A review will be eligible for a prize if it conveys sufficient technical content.</li>
		<li>Three to five points of what you like or don't like about one or more Helios projects should be enough. Long
		essays aren't necessary.</li>
		<li>Eclipse is a global community, so feel free to write or record a review in your native language.</li>
		<li>You can see last year's <a href="2009reviews.php">winning reviews</a> for examples of what we're looking for</li>
		</ul>
      	
		<h3>Receive a Thank You</h3>
		<ul>
		<li>Best review: Full pass to <a href="http://www.eclipsecon.org/2011/">EclipseCon 2011</a> or
      	<a href="http://www.eclipsecon.org/summiteurope2010/">Eclipse Summit Europe 2010</a></li>
      	<li>3 top reviews: Eclipse jacket</li>
		<li>All other qualified reviews get a choice of:
			<ul>
				<li><a href="http://www.zazzle.com/eclipseide" target="blank">Eclipse t-shirt</a> printed with a message customized by you</li>
				<li>Helios t-shirt</li>
			</ul>
		</li>				
		</ul>
		
		<a href="http://www.zazzle.com/eclipseide" target="blank"><img src="ZazzleShirt.png" height="160"></a>
		<a href="HeliosShirt.png" target="blank"><img src="HeliosShirt.png" height="160"></a>	
			
		<p>
		The best and top reviews will be selected by a panel of judges from the Eclipse community.
		</p>
		
		<p style="font-size:10px">Prizes have no cash value and quantities are limited.
		The full pass to EclipseCon or Eclipse Summit Europe only covers conference registration and does not 
 		include travel expenses. The pass is non-transferable and non-refundable, so if you can't go to either
 		conference or you receive a free pass some other way (as a speaker, for example), 
 		you won't be able to take advantage of the prize.</font>
 		</p>

		<h3>Questions?</h3>
		<p>
		<a href="mailto:helios.reviews@eclipse.org">helios.reviews@eclipse.org</a>
		</p>
		
		<br><br>
				
	</div>

	<!-- remove the entire <div> tag to omit the right column!  -->
	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Related Links</h6>
			<ul>
				<li><a href="reviews.php">2010 Helios Reviews</a></li>
				<li><a href="2009reviews.php">2009 Winning Reviews</a></li>
			</ul>
		</div>
	</div>	
	
</div>

	
EOHTML;


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