<?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="tshirt.jpg" target="blank"><img src="tshirt.jpg" 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);
?>