<?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. 
	$pageTitle 		= "Eclipse.org - Kelper Simultaneous Release : Highlights";
	$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
	$pageAuthor		= "Christopher Guindon";
	
	# Paste your HTML content between the EOHTML markers!	
	$donarList = sideDonorList(10);
	ob_start();	
	?>
	<div id="fullcolumn" class="kepler subpage friends">
		<ul id="mainmenu" class="no_bullets">
			<li id="item_downloads"><a href="/downloads/"><span class="icon"></span><span class="caption">Downloads</span></a></li>
			<li id="item_highlights"><a href="/kepler/"><span class="icon"></span><span class="caption">Highlights</span></a></li>
			<li id="item_projects"><a href="/kepler/projects.php"><span class="icon"></span><span class="caption">Projects</span></a></li>
			<li id="item_democamps"><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Kepler_2013"><span class="icon"></span><span class="caption">DemoCamps</span></a></li>
			<li id="item_friends" class="active"><a href="/kepler/friends.php"><span class="icon"></span><span class="caption">Friends of Kepler</span></a></li>
		</ul>
		<a href="/kepler/kepler.php" class="info-button">Who is Kepler?</a>
		<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>
				<?php print ($donarList != "") ? '<ul id="ul_donorList" class="clearfix no_bullets">' . $donarList . '</ul>' : '';?>
				<a class="button-more button" href="/donate/donorlist.php?showAll=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);
?>
