<!--
     File : events.php
     Author : Diego Madruga Sandin (dmadruga)
     Date :	2008-03-13
     Description : This is the events page for the MTJ project. 
-->
<?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("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);
?>