<?php  		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();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# sample_3col.php
	#
	# Author: 		Denis Roy
	# Date:			2005-11-07
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Europa Reviews";
	$pageKeywords	= "Europa marketing";
	$pageAuthor		= "Lynn Gayowski";
	
	# 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
	#
	require_once("scripts/review.php");	
	# Paste your HTML content between the EOHTML markers!	
	
	ob_start();
	?>	  
	<script src="/home/scripts/functions.js" type="text/javascript" language="javascript"></script>
	<div id="midcolumn">
		<link rel="stylesheet" type="text/css" href="layout.css" media="screen" />
		<div id="headerBG">
			<table cellspacing=0 class="headerBar release">
	        	<tr>
	        		<td align="right"></td>
				</tr>				
			</table>
		</div>
		<h1><?=$pageTitle;?></h1>
		

		
		<p>
			Members of the Eclipse community were <a href="http://www.eclipse.org/org/press-release/20070612cb_europareviews.php">
			invited</a> to write a review of the <a href="http://www.eclipse.org/europa/projects.php">Eclipse projects</a> being
			released as part of <a href="http://www.eclipse.org/europa/">Europa</a> and to publish the review on a blog, newsgroup, or
			portal.  Following is a list of links to the reviews that were submitted.	
		</p>
		
		
		
		<table  cellpadding="5" cellspacing="0" width="100%">
			<tr bgcolor=#666699>
				<td><font color="#ffffff"><strong>Link</strong></font></td>
				<td><font color="#ffffff"><strong>Author</strong></font></td>
				<td><font color="#ffffff"><strong>Date</strong></font></td>
				<td><font color="#ffffff"><strong>Language</strong></font></td>
			</tr>
		
 	<? 
       	$reviewsCatalog = $reviewsParser->reviewsCatalog;
        $counter = count($reviewsCatalog);
        $i =0;
       	while ($i < $counter)
       	{
       		$title = mb_convert_encoding(trim(htmlspecialchars($reviewsCatalog[$i][0])), "HTML-ENTITIES", "auto");
       		$link = mb_convert_encoding($reviewsCatalog[$i][1], "HTML-ENTITIES", "auto");
       		$author = mb_convert_encoding($reviewsCatalog[$i][2], "HTML-ENTITIES", "auto");
       		$date = mb_convert_encoding($reviewsCatalog[$i][3], "HTML-ENTITIES", "auto");
       		$language = mb_convert_encoding($reviewsCatalog[$i][4], "HTML-ENTITIES", "auto");
			$shortDesc = mb_convert_encoding($reviewsCatalog[$i][5], "HTML-ENTITIES", "auto");
       		?>
		       		<tr>
						<td>
							<div class="invisible" id="<?=$title;?>"><a name="<?=$title;?>" class="norgie" onClick="t('<?=$title;?>','<?=$title;?>a')"></a>
								<a target="_blank" href="<?=$link;?>"><?=$title;?></a>
							</div>
						</td>
						<td><?=$author;?></td>
						<td><?=$date;?></td>
						<td><?=$language;?></td>
					</tr>
					<tr class="bottomBorder">
						<td colspan="4">
							<div class="invisible" id="<?=$title;?>a">
								<div class="item_contents">
								<?=$shortDesc;?>
								</div>
							</div>
						</td>
					</tr>
				
	
		<? 
		$i++;
       	}
        ?>        
       					
		</table>

	</div>

	<? 
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
