<?php
 function &read_file($file_name) {
	$fp = fopen($file_name, "r");
	$file_contents = fread($fp, filesize($file_name));
	fclose($fp);
	return $file_contents;
}

# * * * * *   $wtpTopButtons   * * * * * #
$wtpTopButtons = <<<EOHTML
<link rel="stylesheet" type="text/css" href="/webtools/customMain.css" />
<link rel="shortcut icon" href="/webtools/images/favicon.ico">

<div class="logoBanner"><a href="/webtools/"><img src="/webtools/images/wtp_logo_2010.png" alt="WTP Logo Banner"/></a></div>
<div id="bigbuttons">
	<table border="0" cellspacing="0" cellpadding="0">
		<tr>
			<td>
				<div class="bigbuttonsAbout">
					<a href="/projects/project_summary.php?projectid=webtools"><div class="bigbuttonsTitleLink"></div></a>
					<span><a href="http://git.eclipse.org/c/?q=webtools">Source Repositories</a>, PMC,<br/>Committers and more...</span>
				</div>
			</td>
			<td>
				<div class="bigbuttonsDocumentation">
					<a href="/webtools/documentation/"><div class="bigbuttonsTitleLink"></div></a>
					<span>
						<a href="/webtools/documentation/">Help Docs</a>,
						<a href="http://wiki.eclipse.org/WTP_FAQ"> FAQ</a>,
						<a href="/projects/project-plan.php?projectid=webtools"> Plans,</a><br/>
						<a href="/webtools/development/news/main.php">New and Noteworthy</a>
					</span>
				</div>
			</td>
		</tr>
		<tr>
			<td>
				<div class="bigbuttonsCommunity">
					<a href="/webtools/community/"><div class="bigbuttonsTitleLink"></div></a>
					<span>
						<a href="http://wiki.eclipse.org/Category:Eclipse_Web_Tools_Platform_Project">Wiki</a>,
						<a href="/forums/eclipse.webtools">Forum</a>,<br/>
						<a href="https://dev.eclipse.org/mailman/listinfo/wtp-dev">Mailing List</a>,
						<a href="/webtools/community/resources/"> Resources</a>,<br/>
						<a href="/webtools/community/education/">Education</a>
					</span>
				</div>
			</td>
			<td>
				<div class="bigbuttonsDownloads">
					<a href="https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon1"><div class="bigbuttonsTitleLink"></div></a>
					<span>
						<a href="https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon1">Eclipse Java EE</a> package,
						<a href="http://download.eclipse.org/webtools/downloads/">WTP Builds</a>,
						<a href="http://download.eclipse.org/releases/neon/">Neon Update Site</a>,
						<a href="https://marketplace.eclipse.org/content/eclipse-java-ee-developer-tools-0">Install from Marketplace</a>
					</span>
				</div>
			</td>
		</tr>
	</table>
</div>
EOHTML;
# * * * * *   $wtpTopButtons END   * * * * * #
$aboutLinks = <<<EOHTML
<style>#leftcol{display:block !important;}#midcolumn{width:725px !important;}</style>
EOHTML;
?>
