<?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'

$pageTitle 		= "Reset Portal Password";


ob_start();
?>
    <div id="maincontent">
	<div id="midcolumn">

<h1><?=$pageTitle;?></h1>

<p>The <a href="http://portal.eclipse.org">Eclipse Foundation Portal</a> is used by members to
perform self-service actions such as updating your contact information,
managing your membership page, changing your organization address and other functions.
</p>

<p>If you do not have a Foundation Portal account, or have lost your password, but know you are your organization's
	Company Representative or Delegate you can request your
	<a href="http://portal.eclipse.org/myfoundation/portal/password-request.php"> account and password </a> immediately.
</p>

<p>If you are not your organization's
	Company Representative or Delegate, you can request a
	<a href="https://dev.eclipse.org/portal/myfoundation/portal/portal.php?anon=member_account_request"> portal account and password
	(please allow 2-4 business days for processing).
</p>






</div> <!-- midcolumn -->
</div> <!-- maincontent -->

<?php
	# Paste your HTML content between the EOHTML markers!
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage(NULL, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
