<?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'

	#*****************************************************************************
	#
	# team.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# Date:			2007-02-26, adapted 2008-05-08
	#
	# Description: The team/committer page of the Java Workflow Tooling project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Java Workflow Tooling (JWT)";
	$pageKeywords	= "JWT , Java Workflow Tooling Project, Workflow Editor, Workflow Administration and Monitoring, Eclipse";
	$pageAuthor		= "Florian Lautenbacher";
	
	# 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)
	# Reiniting navbar content (suppresses generic Eclipse links Committers, Newsgroups, Bugs, Articles) :
	# $Nav->setLinkList( array() );
	# Adding Portal-based "About" information, to be "Standard left menu"-compliant (see http://www.eclipse.org/projects/dev_process/project-status-infrastructure/left-menu.php) :
	# $Nav->addCustomNav( "Information about JWT", "/projects/project_summary.php?projectid=technology.jwt", "", 1  );
	# Adding JWT specific menus :

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

<div id="midcolumn">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
 <tr>
  <td valign="top" align="left"><h1>JWT Team</h1></td>
 </tr>
</table>

<div class="homeitem">
<h3>JWT Project Leads</h3>
<ul>
	<li><span><a href="mailto:marc.dutoo@openwide.fr">Marc Dutoo</a> <br>(project co-lead)<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span><a href="mailto:florian.lautenbacher@informatik.uni-augsburg.de">Florian Lautenbacher</a> <br>(project co-lead)<br><a href="http://www.ds-lab.org/">University of Augsburg</a></span></li>
</ul>
<h3>JWT Release Engineer</h3>
<ul>
	<li><span>Christian Saad<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
</ul>
<h3>JWT Board Members</h3>
<ul>
	<li><span>Alain Boulze<br><a href="http://www.inria.fr/">INRIA / OW2</a></span></li>
	<li><span>Fabrice Dewasmes<br><a href="http://www.pragmaconsult.lu/">Pragma Consult</a></span></li>
	<li><span>Miguel Valdez Faura<br><a href="http://www.bonitasoft.com/">bonitasoft SA</a></span></li>
	<li><span>Gunther Palfinger<br><a href="http://www.emundo.eu/">eMundo GmbH</a></span></li>
</ul>
<h3>JWT Mentor</h3>
<ul>
	<li><span>John Graham<br><a href="http://www.jboss.org">JBoss - a division of Red Hat</a></span></li>
</ul>
</div>
<div class="homeitem">
<h3>JWT Committers and Contributors</h3>

<ul>
	<li><span>Bernhard Bauer<br><a href="http://www.ds-lab.org">University of Augsburg</a></span></li>
	<li><span>Marc Blanchon<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
	<li><span>Guillaume Decarnin<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span>Stephane Drapeau<br><a href="http://www.obeo.fr/">Obeo SA</a></span></li>
	<li><span>Melanie Hesselbart<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
	<li><span>Mickael Istria<br><a href="http://www.openwide.fr">Open Wide SA</a></span></li>
	<li><span>Rodrigue Le-Gall<br><a href="http://www.bonitasoft.com/">bonitasoft SA</a></span></li>
	<li><span>Emmanuel Rias<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
	<li><span>Christian Seitz<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</a></span></li>
	<li><span>Pierre Vigneras<br><a href="http://www.bull.com/fr/index.php">Bull SA</a></span></li>
</ul>
	</div>

<table border="0" cellspacing="0" cellpadding="0" width="100%">
 <tr>
  <td valign="top" align="left"><h1>Contact us at <a href="mailto:jwt-dev@eclipse.org">jwt-dev@eclipse.org</a>!</h1></td>
 </tr>
</table>
</div>

<div id="rightcolumn">
   	 <div class="sideitem">
   			<h6>Incubation</h6>
   			<div align="center"><a href="/projects/what-is-incubation.php"><img 
        			align="center" src="/images/egg-incubation.png" 
        			border="0" alt="Incubation" /></a></div>
	</div>       			
</div>
EOHTML;


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