<?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 		= "BPEL Designer Project";
	$pageKeywords	= "BPEL, process, designer, download";
	$pageAuthor		= "BPEL Team";
	
	# 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("Interesting Links", 	"");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<h2>Downloads</h2>
		<p>We have activated a download site for the Eclipse BPEL designer. The update site contains all
		the other plugins and libraries needed by the designer. 
		<p>
		Check the 
		<a class="www" href="http://download.eclipse.org/technology/bpel/update-site/" target="download">BPEL Editor Update Site</a>
		for instructions on how to download and install the designer directly into Eclipse.
		<p>
		The build available on the update site currently (as of <b>May 08, 2009</b>) is the <b>M4</b>
		build (version <b>0.4.0</b>).
		<p>
		
	</div>
	<div id="rightcolumn">
    	<div class="sideitem">
       		<h6>Incubation</h6><p>
       		<div align="center">
        		<a href="/projects/what-is-incubation.php">
           		<img align="center" src="/images/egg-incubation.png" border="0"/></a>
       		</div>
       		<div align="center">  
         		This project is in the 
         		<a href="/projects/dev_process/validation-phase.php">Incubation Phase</a>
       		</div>
     	</div>
		<div class="sideitem">
			<h6>links</h6>
			<ul>
				<li><a href="http://download.eclipse.org/technology/bpel/update-site/" target="download">BPEL Editor Update Site</a></li>
			</ul>
		</div>
     </div>
</div>


EOHTML;


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