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

	#*****************************************************************************
	#
	# buzz.php
	#
	# Author: 		Nathan Gervais
	# Date:			2005-06-16
	#
	# Description: Ganymede Buzz page.
	#
	#
	#****************************************************************************

	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Ganymede  Buzz";
	$pageKeywords	= "ganymede, release, ganymede release train, buzz, press";
	$pageAuthor		= "Nathan Gervais";
	$App->PageRSS = "/home/eclipseinthenews.rss";
	$App->PageRSSTitle = "Eclipse In The News";
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
		
	# The next two lines load the $news variable with the HTML equivalent to the contents of the eclipsenews.rss file.
	# Reference the $news variable to drop the HTML into your content...
	$documentRoot = $_SERVER['DOCUMENT_ROOT'];
	require_once('scripts/functions.php');
	require_once('scripts/blogs.php');
	$filepath = $documentRoot . '/community/news/2005inthenewsarchive.rss';
	$eclipsenews = rss_to_news_html($filepath, 'ganymede',100);
	$ganymedeBlogs = ganymedeBlogs(10);
	# Paste your HTML content between the EOHTML markers!	
	ob_start();
	?>
	<link rel="stylesheet" type="text/css" href="layout.css" media="screen" />
	<body>
	<div id="midcolumn">
		<img src="http://dev.eclipse.org/large_icons/devices/network-wireless.png">
		<h1 class="inline"><?=$pageTitle;?></h1>
				
		<div class="homeitem3col">
			<h3>Community Buzz</h3>
			<?=$eclipsenews;?>
		</div>
		
		<div class="homeitem3col">
			<h3>Ganymede Around the World Blogs</h3>
			<?=$ganymedeBlogs;?>
		</div>
	</div>
	<div id="rightcolumn">
		<div class='sideitem'>
			<h6>Related Links</h6>
			<ul>
				<li><a href="map.php">Ganymede Around the World</a></li>
				<li><a href="friends.php">Friends of Ganymede</a></li>
			</ul>
		</div>
	</div>
</div>

<?	
	$html = ob_get_clean();
	$html = mb_convert_encoding($html, "HTML-ENTITIES", "auto");
	# Generate the web page
	$App->Promotion = TRUE;
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
