<?php 
//ini_set("display_errors", "true");
//error_reporting (E_ALL);
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();

       #*****************************************************************************
       #
       # poll2013.php
       #
       # Author:                   Chris Aniszczyk
       # Date:                     2010-04-07
       #
       # Description: Quick poll to get input for Junot +1 Sim. Release name. 
       #
       #
       #****************************************************************************
       
       #
       # Begin: page-specific settings.  Change these. 
       $pageTitle           = "Community Poll Vote";
       $pageKeywords = "Eclipse Simultaneous Release 2013";
       $pageAuthor          = "Chris Aniszczyk";
       $theme = "Nova";    

	       # Paste your HTML content between the markers!   
	ob_start();
	?>            


	<div id="maincontent" style="width: 90%; padding: 5%;">

	              <h1><?= $pageTitle ?></h1>
	                     <h2>Help decide the name for the 2013 Eclipse Simultaneous Release!</h2>
	
	                     <p>There will be an Eclipse Simultaneous Release on the fourth Wednesday of
	                     June, 2013. But what to call it? Please vote, only once, for your favorite name for that 2013
	                     release. Remember, the simultaneous release name is an informal <i>marketing name</i>. It
	                     should be recognizable, pronounceable, relatively distinct and not obvious
	                     to confuse with other software or trademarks. Be sure to
	                     consider how it sounds in context, such as...</p>
						
						<p>
	                      <i>"Hey, go download the <b>Eclipse xyz Release</b> and see all the cool stuff in there!"</i>
						</p>

	                     <p>The following names were arrived at with input from the community (see
	                     <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=365965">bug
	                     365965</a>) and discussions inside the Eclipse Planning Council.</p>

                     <p>The results of the poll are now available, and pending approval from the EMO, the 2013 name will be <b>Kepler</b>.</p> 

                                     <div style="padding: 5px; margin-left: 5%; margin-right: 5%;">
										<p>
										Kari: 13 %<br />
										Kratos: 14 %<br />
										<b>Kepler: 48 %</b><br />
										Ketu: 6 %<br />
										Koronis: 8 %<br />
										Kuiper: 10 %<br />
										Total votes: 213
										</p>
                                     </div>

	                     <p>Thanks for your vote and your help with Eclipse!</p>              

	                     <p><b>Note: The Planning Council reserves the right to make the final decision, in case some
	                     popularly voted item is later found to be unsuitable for some reason.</b><p>

	                     <p>Current time: <?php echo date("d/m/y : H:i (T)", time()); ?></p>

	</div>

	<?php
	       $html = ob_get_contents();
	       ob_end_clean();

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

