<?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'
/*******************************************************************************
 * Copyright (c) 2009-2010 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: Christopher Guindon (Eclipse Foundation)
 * Nathan Gervais (Eclipse Foundation)
 *    
 *******************************************************************************/
	require_once 'includes/friendsFunctions.php';
	$progress = (getWantedCount()*100)/1000;
	$friend_count = getWantedCount();
	
	#
	# Begin: page-specific settings.  Change these. 
	$page           = "Friends of Eclipse";
	$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
	$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
	$pageAuthor		= "Christopher Guindon";
	
	# Paste your HTML content between the EOHTML markers!	
	
	ob_start();	
	?>
	<div id="fullcolumn" class="kepler subpage friends">
		<?php include_once('includes/nav.php');?>
		<div id="page-right">
			<div class="page-container">				
				<h2 id="h2_friends">Friends of Kepler</h2>
				<div id="friend-scale" class="<?php print ($progress <= 50) ? 'scale-normal' : 'scale-invert'; ?>">
					<div id="friend-scale-level" style="width: <?php print $progress;?>%;"></div>
					<div id="friend-scale-count"><?php print $friend_count;?>/1000 Friends</div>
				</div>
				<ul id="ul_donorList" class="clearfix no_bullets">
					<?php sideDonorList(10);?> 
				</ul>
				<a class="button-more button" href="/donate/donorlist.php?showAll=0" style="padding-left:0;">More</a>	
				<h2 id="h2_join">Join now!</h2>
				<p>Everyday millions of people use Eclipse. <a href="/donate/">Friends of Eclipse</a> allows you to contribute back to the Eclipse community.</p>
				<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="/kepler/">Kepler release</a>, direct from the download server at the Eclipse Foundation.  Your contribution will also help support the Eclipse community.</p>					
				<p class="center"><a href="/donate/" class="button bigger">Donate Now</a></p>	
				<p class="legal">
					[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>
	
	</div>
	<?
	$html = ob_get_clean();
	# Generate the web page
	$App->Promotion = TRUE;
	$App->AddExtraHtmlHeader('<link href="http://fonts.googleapis.com/css?family=EB+Garamond" rel="stylesheet" type="text/css"/>');
	$App->AddExtraHtmlHeader('<link type="text/css" href="/kepler/css/styles.min.css" rel="stylesheet"/>');	
	$App->AddExtraHtmlHeader('<!--[if IE 7]><link rel="stylesheet" type="text/css" href="/home/content/ie7_nova.css" media="screen"/><![endif]-->');
	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
