<?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'

	#*****************************************************************************
	#
	# friends.php
	#
	# Author: 		Nathan Gervais
	# Date:			2009-05-21
	#
	# Description:  Galileo Friends Landing Page
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Friends of Eclipse";
	$pageKeywords	= "Friends of Eclipse, Helios";
	$pageAuthor		= "Nathan Gervais";
	include('scripts/wantedFunctions.php');
	# Paste your HTML content between the EOHTML markers!	
	ob_start();
	?>
	<div id="fullcolumn"  class="heliosBlank clearfix">
		<div class="wantedPoster">
			<img src="images/wanted.png"/>
		</div>
		
		<div class="wantedDesc">
			<h1 class="wanted">Wanted: 360 Friends for Helios</h1>
			
			<div class="wrapper">
				<p>Millions of people use Eclipse. <a href="/donate/">Friends of Eclipse</a> allows you to contribute back to the Eclipse community.   To celebrate the upcoming Helios Release Train we want to recruit 360 new Friends of Eclipse.</p>
			</div>
			<div class="wrapper">
				<p>For a US$35 contribution, you can become a Friend of Eclipse.  As a special thank you, Friends will get early access to the <a href="/helios/">Helios release</a>, direct from the download server at the Eclipse Foundation.  Your contribution will also help support the Eclipse community.</p>
			</div>
			<div class="wrapper">
				<div class="star"><img src='images/icons/star.png'/></div>	
				<a class="donate" href="/donate">Donate Now!</a>
			</div>
			<div class="progressBar">
				<div class="progress" style="width:<?=round(getWantedCount() * (600/360));?>px">&nbsp;</div>
				<div class="counter"><span class="active"><?=getWantedCount();?></span> / 360 friends recruited.</div>
			</div>				
		
			
			<h3>Recent Donors</h3>
			
			<ul class="donorList clearfix"><?=sideDonorList(10);?></ul>
			<div class="more"><a href="/donate/donorlist.php?showAll=0">More</a></div>
			<p style="padding-top:15px;clear:both;font-size:12px;color:#555;">
				[1] Friends of Eclipse get special access to the Eclipse Foundation download server.  This server will be available to Friends of Eclipse while the download packages are being synchronized to our mirrors.  This typically means the packages will be available up to 24 hrs before everyone else.   The Eclipse Foundation will also be dedicating extra bandwidth to this download server, so Friends should experience a faster download.
			</p>
			
		</div>
		
	</div>
	<?
	$html = ob_get_clean();
	$App->AddExtraHtmlHeader('<link type="text/css" href="/helios/style.css" rel="stylesheet"/>');
	# Generate the web page
	$App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>