<?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'

	#*****************************************************************************
	#
	# training.php
	#
	# Author: 		Christopher Guindon
	# Date:			2012-04-13
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Fall Training Series";
	$pageKeywords	= "eclipse, training, rcp, equinox, osgi, modeling, emf, gef, gmf";
	$pageAuthor		= "Christopher Guindon";
	
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	

	$cookie = @$_COOKIE['activeTabTrainingClasses'];
	if ($cookie == "")
	{
		$cookie = "developingRCP";
	}	
	
ob_start();
?>		
<link rel="stylesheet" type="text/css" href="training.css" media="screen" />
<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.5.2/build/yahoo/yahoo-min.js&2.5.2/build/dom/dom-min.js&2.5.2/build/event/event-min.js&2.5.2/build/dragdrop/dragdrop-min.js&2.5.2/build/animation/animation-min.js&2.5.2/build/connection/connection-min.js&2.5.2/build/container/container-min.js"></script>
<script type="text/javascript"> var activeCookie = 'activeTabTrainingClasses'; </script>
<script type="text/javascript" src="/eclipse.org-common/themes/Phoenix/styleswitcher.js"></script>
<script type="text/javascript" src="functions.js"></script>


<div id="fullcolumn">
	<div id="midcolumn">
		<h1><?= $pageTitle ?></h1>
		<p>The Eclipse member companies are offering a series of training classes. This is your opportunity to learn Eclipse techniques, tips and tricks from experts. The instructor-led training courses will be held from Oct 21, 2013 to Nov 30, 2013 and feature classes on <strong>Eclipse Rich Client Platform (RCP), Eclipse4 RCP, Eclipse BIRT, Building OSGI/RCP applications with Maven/Tycho and Modeling Technologies</strong>. Classes are available in various languages, such as English, French, German, Dutch, Spanish, and Italian.</p>  
		<p>To register, choose a course below and click on a city near you.</p> 
		
		<div id="tabNav">
			<ul id="tabNavUl">
			<li id="birt" class="middle <? if ($cookie == "birt") echo "active";?>"><a onclick="updateContent('birt');">BIRT</a></li>
				<li id="developingRCP"  class="start <? if ($cookie == "developingRCP") echo "active";?>""><a onclick="updateContent('developingRCP');">Developing with RCP</a></li>
				<!--  <li id="equinox" class="middle <? if ($cookie == "equinox") echo "active";?>"><a onclick="updateContent('equinox');">Equinox & OSGi</a></li>-->
				<li id="eclipse4" class="middle <? if ($cookie == "eclipse4") echo "active";?>"><a onclick="updateContent('eclipse4');">Eclipse 4 RCP</a></li>
				<li id="osgi" class="middle <? if ($cookie == "osgi") echo "active";?>"><a onclick="updateContent('osgi');">Building OSGI/RCP with Maven/Tycho</a></li>		
				<li id="modeling"  class="end <? if ($cookie == "modeling") echo "active";?>"><a onclick="updateContent('modeling');">Modeling</a></li>
			</ul>
		</div>
		<div id="ajaxContent">
			<? include ('fetch/'.$cookie. '.php'); ?>
		</div>
		<br/><br/>

	<h3>Sponsored by:</h3>
                    <ul class="sponsor">
                    	<li><a target="blank" href="http://www.eclipse.org"><img border="0" src="https://www.regonline.com/custImages/240004//EclipseLogoSmall.jpg" /></a></li>
                    	<!-- <li><a href="http://www.avantsoft.com" target="blank"><img border="0" src="http://www.eclipse.org/membership/scripts/get_image.php?id=671&size=small" /></a></li>-->
                    	<li><a href="http://eclipsesource.com/en/services/eclipse-training/" target="blank"><img border="0" width="125" src="images/EclipseSourceLogo.jpg" /></a></li>
                    	<li><a href="http://www.industrial-tsi.com" target="blank"><img border="0" width="125" height="28" src="http://eclipse.org/membership/scripts/get_image.php?id=1040&size=small" /></a></li>                    	
                        <li><a href="http://www.obeo.fr" target="blank"><img border="0" width="125" src="http://eclipse.org/membership/scripts/get_image.php?id=863&size=small" /></a></li>
                    
                    </ul>
                    <ul class="sponsor">  
                    	<!-- <li><a href="http://www.modumind.com/" target="blank"><img border="0" width="125" src="http://www.eclipse.org/membership/scripts/get_image.php?id=971&size=small" /></a></li> -->
 						<li><a href="http://www.opcoach.com" target="blank"><img border="0" width="125" src="http://eclipse.org/membership/scripts/get_image.php?id=987&size=small" /></a></li>
                        <li><a href="http://www.actuate.com/home/" target="blank"><img border="0" width="125" src="http://www.eclipse.org/membership/scripts/get_image.php?id=652&size=small" /></a></li>
                     	<li><a href="http://www.rcp-vision.com" target="blank"><img border="0" width="125" src="http://www.eclipse.org/membership/scripts/get_image.php?id=978&size=small" /></a></li>
                     	
                     </ul>
                                    	                      
                       <!--  <li><a href="http://www.eclipsetraining.net/training_registration/account_creation/?tx_seminars_pi1[uid]=471&redirect_url=http%3A%2F%2Fwww.eclipsetraining.net%2Ftraining_registration%2Fregistration%2F%3Ftx_seminars_pi1%255Bseminar%255D%3D471%26tx_seminars_pi1%255Baction%255D%3Dregister" target="blank"><img border="0" width="125" src="http://eclipse.org/membership/scripts/get_image.php?id=1036&size=small" /></a></li>  -->                   
                       <!--  <li><a href="http://www.vogella.com/" target="blank"><img border="0" width="125" src="images/vogella_gmbh.png" /></a></li> -->                      					
	</div>
</div>





<?php
	$html = ob_get_contents();
	ob_end_clean();

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