<?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>Mickael Istria<br><a href="http://www.openwide.fr">Open Wide SA</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.bull.com/fr/index.php">Bull SA</a></span></li>
	<li><span>Gunther Palfinger<br><a href="http://www.e-mundo.de/en/home.html">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>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>Rodrigue Le-Gall<br><a href="http://www.bull.com/fr/index.php">Bull 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 Saad<br><a href="http://www.informatik.uni-augsburg.de/ds/">University of Augsburg</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);
?>
