<?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 		= "DLTK Project Contributors";
	$pageKeywords	= "dltk, tcl, ruby, python, languages, eclipse, ide";
	$pageAuthor		= "Andrey Platov";
	
	# 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
	# 
		
	include("_sideIncubator.php");		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<div class="homeitem">
			<h3>Committers (alphabetical)</h3>
			<ul>
				<li>
    	            Jae Gangemi, <a href="http://code.google.com/p/perlipse">Perlipse Project</a></li>
				<li>
    	            Mark Howe, <a href="http://www.codegear.com/">CodeGear</a></li>
				<li>
	                Dmitriy Kovalev, <a href="http://www.xored.com">xored software, Inc.</a></li>
				<li>
	                Andrey Platov, <a href="http://www.xored.com">xored software, Inc.</a></li>
				<li>
    	            Shelby Sanders, <a href="http://www.codegear.com/">CodeGear</a></li>
				<li>
	                Andrei Sobolev</a>, <a href="http://www.xored.com">xored software, Inc.</a></li>
			</ul>
		</div>
		<div class="homeitem">
			<h3>Contributors</h3>
			<ul>
				<li>
					<a href="http://www.cisco.com">Cisco Systems, Inc.</a> contributing to TCL component on the project.</li>
				<li>
					<a href="http://www.servoy.com">Servoy</a> contributing to JavaScript component on the project.</li>
				<li>&nbsp;</li>
				<li>
					Johan Compagner</li>
				<li>
    	            Ivan Sabinin</li>
            </ul>
		</div>
		<hr class="clearer" />
	</div>
	<div id="rightcolumn">
	    <div class="sideitem">
			<h6>Related links</h6>
			<ul>
				<li><a href="/proposals/dltk/">Project proposal</a></li>
				<li><a href="/proposals/dltk/Dynamic%20Languages%20Toolkit%20-%20Creation%20Review%20Slides.pdf">Creation review slides</a></li>
			</ul>
		</div>	    
	    $incubatorSide
	</div>
</div>

EOHTML;


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