<?php
/*******************************************************************************
 * Copyright (c) 2013 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

//if name of the file requested is the same as the current file, the script will exit directly.
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])){exit();}
$filter = (isset($_GET['filter'])) ? $_GET['filter'] : '';
$fileToInclude = 'content/fetch/project.php';
?>
<div class="leftContent">
	<div class="descriptionBar">
		<ul id="subCat" <? if ($cookie != "project") { ?> class="invisible" <? } ?>>
			<li id="subCatTitle">Filter By Tag:</li>
			<li id="ALL" <?php if ($filter=="") { echo "class=\"active\"";}?>><a href="index_project.php">All</a></li>
			<li id="ENT" <?php if ($filter=="ENT") { echo "class=\"active\"";}?>><a href="index_project.php?filter=ENT">Enterprise</a></li>
			<li id="EMB" <?php if ($filter=="EMB") { echo "class=\"active\"";}?>><a href="index_project.php?filter=EMB">Embedded</a></li>
			<li id="RT" <?php if ($filter=="RT") { echo "class=\"active\"";}?>><a href="index_project.php?filter=RT">Equinox</a></li>
			<li id="APP" <?php if ($filter=="APP") { echo "class=\"active\"";}?>><a href="index_project.php?filter=APP">Frameworks</a></li>
			<li id="MDL" <?php if ($filter=="MDL") { echo "class=\"active\"";}?>><a href="index_project.php?filter=MDL">Modeling</a></li>
			<li id="IDE" <?php if ($filter=="IDE") { echo "class=\"active\"";}?>><a href="index_project.php?filter=IDE">Languages</a></li>
		</ul>
	</div>
	<? include ($fileToInclude); ?>
	<div id="googleAds">
		<script type="text/javascript">
			<!--
			google_ad_client = "pub-6797025590085056"; google_ad_slot = "4661560739"; google_ad_width = 468; google_ad_height = 60;
			//-->
		</script>
		<script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>
	</div>
</div>