<?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 		= "Dynamic Languages Toolkit";
	$pageKeywords	= "dltk, tcl, ruby, python, javascript, 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>
		<!--h2>Section title</h2-->
		<p>Dynamic Languages Toolkit (DLTK) is a tool for vendors, researchers, and end-users who rely on dynamic languages. 
		   DLTK is comprised of a set of extensible frameworks designed to reduce the complexity of building full featured
		   development environments for dynamic languages such as PHP and Perl.</p>
		   <p>Besides a set of frameworks DLTK provides exemplary Tcl, Ruby, and Python development environments ready to use out of the box.  		
		<!--a href="#">more about something &raquo;</a--> </p>
		<div class="homeitem">
			<h3>Quick Links</h3>
			<ul>
	            <li>Submit a <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=DLTK">bug</a> or a <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=DLTK&bug_severity=enhancement">feature request</a>.</li>
	            <li>
	            	<a href="http://wiki.eclipse.org/DLTK_IDE_Guide">Building an IDE with DLTK Guide.</a></li>
			</ul>
		</div>
		<div class="homeitem">
			<h3>News and Events</h3>
			<ul>
				<li>DLTK 0.9 released (June 29, 2007).</li>
			</ul>
			<ul>
				<li><a href="http://www.eclipsecon.org/2007/index.php?page=sub/&id=3721">DLTK Talk</a> at EclipseCon 2007, March 5-8, Santa Clara, USA.</li>
			</ul>
		</div>
		<div class="homeitem3col">
			<h3>Screencasts. EclipseCon 2007, DLTK Long Talk</h3>
			<ul>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-ruby.mov">Ruby IDE</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-javascript.mov">experimental JavaScript IDE</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-mylar.mov">Mylar Integration</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-javascript-jdt.mov">JDT Integration</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-tcl-debug.wmv">Tcl Debugger and Interactive Console</a></li>
			</ul>
		</div>
		<!--div class="homeitem3col">
			<h3>This is a wide column</h3>
			<ul>
				<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
				<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
				<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
			</ul>
		</div-->
		<hr class="clearer" />
		<!--p>Some free text</p>
		<ul class="midlist">
			<li>list of items in free text</li>
			<li>list of items in free text</li>
			<li>list of items in free text</li>
		</ul>
		<ol>
			<li>Ordered list</li>
			<li>Ordered list</li>
			<li>Ordered list</li>
		</ol-->
	</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);
?>
