<?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
 *               Juergen G. Kissner
 *    
 *******************************************************************************/ 

	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Gemini DBAccess - Home";
	$pageKeywords	= "Eclipse, EclipseRT, Gemini, OSGi, DBAccess, Home";
	$pageAuthor		= "Juergen G. Kissner";
			
	ob_start();
?>
	<div id="midcolumn">
		<div class="logo"><h1>Gemini DBAccess</h1></div>
		<p>
			The Gemini DB Access project provides modularized distributions of JDBC drivers 
			suitable for running in OSGi. 
			It exports a DataSourceFactory as an OSGi Service
			so that client applications of the JDBC driver can import and access the features 
			of the driver without having to package the driver as part of the application.
			While the list is currently fairly short, it is expected to grow as the needs of 
			its users grow, and resources to implement 
			them increase.
		</p>
		<h4>Modularity</h4>
		<p>
		The Gemini DB Access project is packaged as a small number of separate and standalone modules. 
		</p>
		<h4>Independence</h4>
		<p>		    
		    Gemini DB Access  integrates with other modules of the
			Gemini project, especially with Gemini JPA,
			but it can also be consumed as individual module by
			any OSGi application.
		</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/DBAccess">Gemini DBAccess 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.dbaccess">Project Summary</a></li>
				<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;order=Importance;classification=RT;product=Gemini">Gemini Bugzilla</a></li>
				<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;order=Importance;classification=RT;product=Gemini.DBAccess">DBAccess Bugzilla</a></li>
			</ul>
		</div>
		<!-- div class="sideitem">
			<h6>Incubation</h6>
			<div id="incubation">
				<a href="/projects/what-is-incubation.php">
					<img align="center" src="/gemini/images/egg-incubation.png" border="0" alt="Incubation" />
				</a>
			</div>
		</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);
?>