<?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());
	
/*******************************************************************************
 * Copyright (c) 2009 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 Frost
 *               Mike Keith
 *    
 *******************************************************************************/

	# Begin: page-specific settings.  Change these. 
	$pageTitle      = "Gemini JPA Home";
	$pageKeywords   = "Eclipse, EclipseRT, Gemini, OSGi, JPA, Home";
	$pageAuthor     = "Mike Keith";

	ob_start();
?>
	<div id="midcolumn">
		<div class="logo"><h1>Gemini JPA</h1></div>
		<p>
			The Gemini JPA project is about modular implementations of Java Persistence API technology. 
			This project currently provides the integration with the EclipseLink JPA provider to support the
			OSGi JPA specification approach that clients can use to get JPA support in an OSGi framework.
		</p>
		<p>
			The modules run on any compliant OSGi framework and leverage the OSGi bundle model
			of packaging and life cycle activation. They integrate and expose the EclipseLink JPA provider as OSGi services.
		</p>

		<h4>Modularity</h4>
		<p>
			The Gemini JPA project is packaged as a separate standalone module and added to the EclipseLink modules at time of installation. Additional 
			Gemini DBAccess and database modules (recommended) can be added for improved modularity.			 
		</p>
		<h4>Independence</h4>
		<p>
			The Gemini JPA subproject is downloadable and executable independently from the other Gemini subprojects.
		</p>
		<p>
			Join the discussion at the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=153&">forum</a> to 
			ask questions or find answers from questions that others have asked.
		</p>
		<p>
			<a href="/projects/project_summary.php?projectid=rt.gemini.jpa">About Gemini JPA</a>
		</p>
		
	</div>

	<!-- remove the entire <div> tag to omit the right column!  -->
	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Quick Links</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/Gemini">Gemini Wiki</a></li>
				<li><a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=153&">Gemini Forum</a></li>  
				<li><a href="https://dev.eclipse.org/mailman/listinfo/gemini-dev">Developer Mailing List</a></li>
				<li><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.gemini">Project Summary</a></li>
				<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;order=Importance;classification=RT;product=Gemini.JPA">Gemini JPA Bugzilla</a></li>
			</ul>
		</div>
		<div class="sideitem">
			<h6>Current Status</h6>
			<p>Gemini JPA 1.1 has been released, v1.2 is under development.</p>
		</div>
		<div class="sideitem">
			<h6>New and Noteworthy</h6>
			<p>Gemini JPA 1.1 now available!</p>
		</div>
		<!-- div class="sideitem">
			<h6>&lt;h6&gt; tag</h6>
				<div class="modal">
					Wrapping your content using a div.modal tag here will add the gradient background
				</div>
		</div -->
	</div>
<?
	$html = ob_get_clean();

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


