<?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 		= "BPEL Designer Project";
	$pageKeywords	= "BPEL, process, designer, team";
	$pageAuthor		= "BPEL Team";
	
	# 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", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<h2>The Team</h2>
		People involved in the BPEL Project, in no particular order ...
		really.

		<div class="homeitem3col">
			<h3>Leads</h3>
			
			<table cellpadding="4px" width="500">
				<tr>
					<td>
						<img height="100px" alt="Bob" src="people/bbrodt.jpg" />
					</td>
					<td>
						<a href="mailto:bbrodt@redhat.com">Bob Brodt</a>
						<br />
						Location: Colorado Springs, CO
						<br/>
						Blamed for: Whatever breaks from now until the end of time.
					</td>
				</tr>
			</table>
		</div>


		<div class="homeitem3col">
			<h3>Committers</h3>
			<table cellpadding="4px" width="500">
				<tr>
					<td>
						<img height="100px" alt="Nick" src="people/nboldt.jpg" />
					</td>
					<td>
						<a href="mailto:nboldt@redhat.com">Nick Boldt</a>
						<br />
						Location: Somewhere in Toronto, ON Canada
						<br />
						Blamed for: releng stuff.
						<br />
						Website: <a href="http://divby0.blogspot.com">DivByZero.com</a>
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Oleg" src="people/olegDanilov.jpg" />
					</td>
					<td>
						<a href="mailto:oleg.v.danilov@intel.com">Oleg Danilov</a>
						<br />
						Location: Somewhere in St. Petersburg, Russia
						<br />
						Blamed for: The XML source tab and other stuff.
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Tobias" src="people/unknown.jpg" />
					</td>
					<td>
						<a href="mailto:eclipse@liefke.biz">Tobias Liefke</a>
						<br />
						Location: Somewhere in Karlsruhe, Deutschland
						<br />
						Blamed for: various bug fixes.
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Grid" src="people/grid.jpg" />
					</td>
					<td>
						<a href="mailto:fqian@redhat.com">Grid Qian</a>
						<br />
						Location: Somewhere in Beijing, China
						<br />
						Blamed for: Various bug fixes.
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Vincent" src="people/unknown.jpg" />
					</td>
					<td>
						<a href="mailto:vincent.zurczak@petalslink.com">Vincent Zurczak</a>
						<br />
						Location: Somewhere in Toulouse, France
						<br />
						Blamed for: Various.
					</td>
				</tr>
				
			</table>
		</div>

		
		<div class="homeitem3col">
			<h3>Contributors</h3>
			<table cellpadding="4px" width="500">
				<tr>
					<td>
						<img height="100px" alt="Ed" src="people/unknown.jpg" />
					</td>
					<td>
						<a href="mailto:edward.gee@oracle.com">Edward Gee</a>
						<br/>
						Location: Somewhere in Redwood City, CA
						<br/>
						Blamed for: XPath Editor
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Michael" src="people/milliger.jpg" />
					</td>
					<td>
						<a href="mailto:milliger@de.ibm.com">Michael Illiger</a>
						<br/>
						Location: Somewhere in Boeblingen, Germany
						<br/>
						Blamed for: Quite a few things in the BPEL Designer
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Dennis" src="people/dushakov.jpg" />
					</td>
					<td>
						<a href="mailto:dennis.ushakov@intel.com">Dennis Ushakov</a>
						<br/>
						Location: Somewhere in St.Petersburg, Russia
						<br />
						Blamed for: The XML source tab
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Tammo" src="people/tammo.png" />
					</td>
					<td>
						<a href="mailto:tammo.van.lessen@iaas.uni-stuttgart.de">Tammo van Lessen</a>
						<br/>
						Location: Somewhere in Stuttgart, Germany
						<br/>
						Blamed for: Runtime Integration with Apache ODE
					</td>
				</tr>
			</table>
		</div>

		<div class="homeitem3col">
			<h3>Team Members &amp; Committers Emeriti</h3>
			<table cellpadding="4px" width="500">
				<tr>
					<td>
						<img height="100px" alt="Simon" src="people/smoser.jpg" />
					</td>
					<td>
						<a href="mailto:smoser@de.ibm.com">Simon Moser</a>
						<br />
						Location: Somewhere in Boeblingen, Germany
						<br/>
						Blamed for: Blamed for BPEL EMF Model and parts of the BPEL Specification
					</td>
				</tr>
				<tr>
					<td>
						<img height="100px" alt="Bruno" src="people/bruno.jpg" />
					</td>
					<td>
						<a href="mailto:B.Wassermann@cs.ucl.ac.uk">Bruno Wasserman</a>
						<br />
						Location: Somewhere in London, UK &nbsp; 
						<a href="http://www.cs.ucl.ac.uk/staff/B.Wassermann/">(More ...)</a>
						<br/>
						Blamed for: Runtime integration framework
			    	</td>
			    </tr>
			    <tr>
			    	<td>
						<img height="100px" alt="Michal" src="people/michal.png" />
					</td>
					<td>
						<a href="mailto:michal.chmielewski@oracle.com">Michal Chmielewski</a>
						<br />
						Location: Somewhere in Redwood City, CA
						<br />
						Blamed for: Wizards, Partner Links, Type/WSDL Browser,
						XPath Editor, Releases, Screen-Captures &amp; Spelling
			    	</td>
			    </tr>
			    <tr>
			    	<td>
						<img height="100px" alt="Benjamin" src="people/bpelBenny.jpg" />
					</td>
					<td>
						<a href="mailto:hoehenbn@studi.informatik.uni-stuttgart.de">Benjamin Hoehensteiger</a>
						<br />
						Location: Somewhere in Stuttgart, Germany
						<br/>
						Blamed for: The great extension activity tutorial.
			    	</td>
			    </tr>
			</table>
		</div>
	</div>
	
	$rightcolumn_links
</div>


EOHTML;


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