<?php

    /* Required eclipse basic classes */
    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"); 

    /* Functions used for display events */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/dsdp/mtj/events.func.php");
    
    $App 	= new App();	
    $Nav	= new Nav();	
    $Menu 	= new Menu();

    /* Find the _projectCommon.php file and include it */
    include($App->getProjectCommon());

	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "DSDP&nbsp; - &nbsp;Mobile Tools for Java &nbsp; (MTJ) &nbsp; Events";
	$pageKeywords	= "mobile, tools, Java, runtime, design, framework, ";
	$pageAuthor		= "Diego Madruga Sandin";

	/* 
	 * 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)
	 * 
	 * Examples:
	 *   $Nav->addNavSeparator("My Page Links", 	"downloads.php"); 
	 *   $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	 *   $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);
	 */
	$Nav->addCustomNav("2010", "events.php?year=2010", "_self", 2);
	$Nav->addCustomNav("2009", "events.php?year=2009", "_self", 2);
	$Nav->addCustomNav("2008", "events.php?year=2008", "_self", 2);
	$Nav->addCustomNav("2007", "events.php?year=2007", "_self", 2);
	$Nav->addCustomNav("2006", "events.php?year=2006", "_self", 2);

	/* End: page-specific settings */
	
    /* Get the event year */
    $year = $_GET['year'];
    
    /* Generate the content according to the year */
    $content = generateContent($year,"","homeitem3col");
    
    /* Paste your HTML content between the EOHTML markers! */
	$html = <<<EOHTML
	<div id="maincontent">
		<div id="midcolumn">
    		<h1>$pageTitle</h1>
    		$content
		</div>
	</div>
	
<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script><script type="text/javascript">try {var pageTracker = _gat._getTracker("UA-9293663-1");pageTracker._trackPageview();} catch(err) {}</script>
	
EOHTML;

	/* Generate the web page */
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>