<?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>
    	            Nir Cohen, <a href="http://www.zend.com">Zend Technologies</a></li>
				<li>
    	            Jae Gangemi, <a href="http://code.google.com/p/perlipse">Perlipse Project</a></li>
				<li>
    	            Roy Ganor, <a href="http://www.zend.com">Zend Technologies</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>
	                Alex Panchenko, <a href="http://www.xored.com">xored software, Inc.</a></li>
				<li>
    	            Alon Peled, <a href="http://www.zend.com">Zend Technologies</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);
?>
