<?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();	$theme = NULL; include($App->getProjectCommon());   # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 	 	Nathan Gervais
	# Date:			2008-04-21
	#
	# Description: Ganymede Landing Page
	#
	#****************************************************************************
	#
	# Begin: page-specific settings.  Change these.
	$pageTitle 		= "Support Eclipse Foundation";
	$pageKeywords	= "Support eclipse foundation membership";
	$pageAuthor		= "Eclipse Foundation, Inc.";

	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank)
	# $Nav->addCustomNav("My Link", "mypage.php", "_self");
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

	# End: page-specific settings
	#
	# Place your html content in a file called content/en_pagename.php
	ob_start();


	?>
	<div id="fullcolumn" class="galileo">

		<div id="midcolumn">
			<div id="banner">
				<img src='support.png'/>
			</div>
			<p class="description">
			The Eclipse Foundation relies on the support from our millions-strong user community to grow our open source ecosystem.
</P>
			<div class="homeitem">
				<div class="block">
					<div class="image">
						<a href="http://wiki.eclipse.org/images/c/ca/Eclipse_foundation_about_us.pdf"><img src="http://dev.eclipse.org/huge_icons/apps/preferences-system-network-proxy.png"/></a>
					</div>
					<div class="text">
						<h4><a href="http://wiki.eclipse.org/images/c/ca/Eclipse_foundation_about_us.pdf">About the Eclipse Foundation</a></h4>
						<p>About the Eclipse Foundation. (PDF)</p>
					</div>
				</div>


				<div class="block">
					<div class="image">
						<a href="http://wiki.eclipse.org/images/f/f5/Eclipse_membership.pdf"><img src="http://dev.eclipse.org/huge_icons/categories/applications-internet.png"/></a>
					</div>
					<div class="text">
						<h4><a href="http://wiki.eclipse.org/images/f/f5/Eclipse_membership.pdf">Joining the Eclipse Foundation</a></h4>
						<p>More about joining the Eclipse Foundation. (PDF)</p>
					</div>
				</div>

				<div class="block">
					<div class="image">
						<a href="./support.php"><img src="http://dev.eclipse.org/huge_icons/emblems/emblem-favorite.png"/></a>
					</div>
					<div class="text">
						<h4><a href="./support.php">Call to Action!  Support Eclipse!</a></h4>
						<p>Details on how your Organization can support Eclipse today.</p>
					</div>
				</div>


			</div>
		</div>

<? include("./rightcolumn.php"); ?>


		</div>



	<?
	$html = ob_get_clean();
	# Generate the web page
	$App->Promotion = TRUE;
	$App->AddExtraHtmlHeader('<link type="text/css" href="style.css" rel="stylesheet"/>');
	$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>