<?php  	
	/* Required eclipse basic classes */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	
    /* Functions and modules related to Navbar objects */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	
    /* Functions and modules related to the page top eclipse menu */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	
    /* Functions used for display events */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/dsdp/mtj/events.func.php");
    
    $App 	= new App();
    /* Left Navbar */	
    $Nav	= new Nav();	
    /*  Page top eclipse menu */
    $Menu 	= new Menu();

    /* Find the _projectCommon.php file and include it */
    include($App->getProjectCommon());
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "DSDP&nbsp; - &nbsp;Mobile Tools for Java &nbsp; (MTJ) &nbsp; Project Team";
	$pageKeywords	= "device, mobile, contributor, committer, lead, author, developer, java";
	$pageAuthor		= "Diego Madruga Sandin";
	
	/* Paste your HTML content between the EOHTML markers!	*/
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<div class="homeitem3col">
		<h3>Project Lead</h3>
        <ul>
            <li>
                <b>Christian Kurzke</b>, <a href="http://developer.motorola.com">Motorola</a><br> 
                Christian is working as the project lead for the MTJ. He is also leading the TML project. 			  
            </li>
        </ul>
		</div>
		<div class="homeitem3col">
    		<h3>Committers</h3>
    		<ul class="midlist">
                <li>
                	<b>Christian Kurzke</b>, <a href="http://developer.motorola.com">Motorola</a>
                </li>
    			<li>
                	<b>Craig Setera</b>, Individual (<a href="http://www.eclipseme.org/">EclipseME</a> lead)
                </li>
                <li>
                    <b>David Marques</b>, <a href="http://www.cesar.org.br/english/">C.E.S.A.R</a> (Motorola Contractor)
                </li>
                <li>
                	<b>Diego Madruga Sandin</b>, <a href="http://www.cesar.org.br/english/">C.E.S.A.R</a> (Motorola Contractor)
                </li>
                <li>
                    <b>Feng(Marvin) Wang</b>, <a href="http://www.sybase.com/">Sybase</a>
                </li>
                <li>
                    <b>Gang(Allen) Ma</b>, <a href="http://www.sybase.com/">Sybase</a>
                </li>
                <li>
                	<b>Gorkem Ercan</b>, <a href="http://www.nokia.com/">NOKIA</a>
                </li>
                <li>
                    <b>Gustavo de Paula</b>, <a href="http://www.cesar.org.br/english/">C.E.S.A.R</a> (Motorola Contractor)
                </li>
                <li>
                	<b>Hugo Raniere</b>, <a href="http://www.cesar.org.br/english/">C.E.S.A.R</a> (Motorola Contractor)
                </li>

    		</ul>
		</div>
	</div>
</div>

<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script><script type="text/javascript">try {var pageTracker = _gat._getTracker("UA-9293663-1");pageTracker._trackPageview();} catch(err) {}</script>
EOHTML;


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