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

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************

	#
		# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Distros Downloads Page";
	$pageKeywords	= "Download, Distro, Mirrors, Members";
	$pageAuthor		= "Type your name here";
	
	# 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
	#

	//error_reporting(1);

	
	/// Nathan -- Add new companies below this line
	/// Order of items is the same order as class declaration above.

	include ("content/distro_functions.php");
	include ("content/ganymede_distros.php");
	
	

	$randomized = randomSeed ($companyinfo);
	
	
	# Paste your HTML content between the EOHTML markers!	
	ob_start();
	?>
<link rel="stylesheet" type="text/css" href="distro.css" media="screen" />	
	<div id="midcolumn">
	
		<h1><?=$pageTitle;?></h1>
				<p>These Eclipse Foundation Members have graciously offered to host downloads and bundles of Eclipse projects.  Each member site will have Eclipse related packages - plus some interesting bundles and additional software!</p>
		<div class="homeitem3col">
			<h3>Eclipse Member Distros</h3>
     		
			<? 
				$i = 0;
				$count = count($companyinfo);
				while ($i < $count)
				{ 
					
					$index = $randomized[$i];
				?>
					<div class="downloadsContainer">
						<a href="<?=$companyinfo[$index]->linkTo;?>">
						<img src="<?=$companyinfo[$index]->companyLogo;?>" height="64" width="64" >
						<div class="downloadsInfo"><h2><?=$companyinfo[$index]->companyName;?></h2><br/><?=$companyinfo[$index]->companyBlurb;?><br/></div>
						</a>
					</div>
				<?
				$i++; 
				}
			?>
			</table>
		</div>
		<p class="smallType">Details for participating in Members Downloads can be found <a href="http://www.eclipse.org/membership/special_programs/member-downloads-program.php">HERE</a>.  If you would like to host Eclipse projects and more while helping to promote your organization to the Eclipse Ecosystem, please send an email to <a href="mailto:membership@eclipse.org">membership@eclipse.org</a>.   If you are experiencing technical difficulties with any of the links, please open a <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Phoenix">bug report</a>.  If you are experiencing problems with a member site, please contact their webmaster or persons noted on their landing page.</p>
	</div>

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




	
?>
