<?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("_projectCommon.php");    # 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 		= "Membership Teleconference RSVP";
	$pageKeywords	= "Type, page, keywords, here";
	$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)
	# $Nav->addCustomNav("My Link", "mypage.php", "_self");
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

	# End: page-specific settings
	#
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<p> Thank you for confirming your intention to dial in to the upcoming Eclipse Membership Teleconference Call.
		
		<br><br>Monday, October 27th, 8:30am PT, 11:30am ET, 16:30 CET.
		<br>
		<br>Dial-in information:
		<br>International: +1 613 287 8000  
		<br>US&Canada Toll Free: 866 362 7064
		<br>Participant Code: 187860
		
		</p>
		
		<br>
		<table>
		<tr height="100px"><td><a href="exploreMembership.php"><img align="center" src="mem_eclipse_pos_logo_fc_sm.jpg" border="1" alt="Explore Membership" /></a></td>
		<td>
		<font size="+1"><b><a href="exploreMembership.php">Explore the Membership</a></b></font><br /> 
		Learn more about the products and services provided by the Eclipse Membership.
		</td>
		</tr>

		<tr height="100px"><td><a href="become_a_member/"><img align="center" src="Checkmark.jpg" border="1" alt="Become a member" /></a></td>
		<td>
		<font size="+1"><b><a href="become_a_member/">Become a Member</a></b></font><br /> 
		Learn about the benefits and process for becoming a member of the Eclipse Foundation.
		</td>
		</tr>

		<tr height="100px"><td><a href="faq/"><img align="center" src="Questions.jpg" border="1" alt="Freqently Asked Questions" /></a></td>
		<td>
		<font size="+1"><b><a href="faq/">Freqently Asked Questions</a></b></font><br /> 
		Answers to questions frequently asked by, and about, membership.
		</td>
		</tr>


		</table>
	
			
		
		<hr class="clearer" />
	</div>
	
 	
</div>

EOHTML;


	# Generate the web page
	$App->Promotion = TRUE;
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
