<?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();

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

	   # Polls are good for 3 months!
	   $App->usePolls();

	   # Poll 1
	   $Poll = new Poll(8, "Vote: What is your favorite name for the 2014 Eclipse Simultaneous Release?");
	   $Poll->addOption(1, "Laila"); 
	   $Poll->addOption(2, "Ladon"); 
	   $Poll->addOption(3, "Laplace");
	   $Poll->addOption(4, "Lok");
	   $Poll->addOption(5, "Lorentz");
	   $Poll->addOption(6, "Luna");
	   $Poll->noGraph();  # uncomment to disable bar graph
	   $pollHTML = $Poll->getHTML();

	   $Poll->requireLogin(); # no anonymous votes

	       # 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 2014 Eclipse Simultaneous Release!</h2>
	
	                     <p>There will be an Eclipse Simultaneous Release on the fourth Wednesday of
	                     June, 2014. But what to call it? Please vote, only once, for your favorite name for that 2014
	                     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 list was arrived at with input from the community (see
	                     <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=398191">bug
	                     398191</a>) and discussions inside the Eclipse Planning Council.</p>

	                            <div style="padding: 5px; margin-left: 1%; margin-right: 1%;">
	                            
<p>
Laila: 8%<br />
Ladon: 2%<br />
Laplace: 13%<br />
Lok: 2% <br />
Lorentz: 4%<br />
Luna: 71%<br />
<b>Total votes: 274</b>
</p>
	                            </div>

	                     <p>Thanks for your vote and your help with Eclipse! <b>Luna</b> was chosen as the name.</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);
	?>

