<?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());    # All on the same line to unclutter the user's desktop'
	$pageTitle 		= "SMILA - Documentation";
	$pageKeywords	= "SMILA, Unified Information Access Architecture, unstructured information management, information logistics, semantic web, framework, platform, eclipse";
	$pageAuthor		= "Igor Novakovic";

	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Documentation</h1>
		<p>
			SMILA's current (corresponds always to the code in trunk) documentation (together with concepts and specifications) is being 
			completely maintained in our project <a href="http://wiki.eclipse.org/SMILA" target="_blank">wiki</a>. 
		</p>
		<p>
			The current (generated from the code in trunk) JavaDocs are always available 
			<a href="http://build.eclipse.org/rt/smila/javadoc/current/" target="_blank">here</a>. 
		</p>
		<h2>Documentation archive</h2>
		<p>
			SMILA's archived documentation (together with concepts and specifications) is provided as read-only  
			wiki export:
			<ul>
				<li><a href="documentation/1.0/wiki.eclipse.org/SMILA.html" target="_blank">1.0</a> (<a href="documentation/wiki.eclipse.org_1.0_2.2.2012.zip">download</a>)</li>				
				<li><a href="documentation/0.9/SMILA.html" target="_blank">0.9</a> (<a href="documentation/wiki.eclipse.org_0.9_27.10.2011.zip">download</a>)</li>				
				<li><a href="documentation/0.8/SMILA.html" target="_blank">0.8</a> (<a href="documentation/wiki.eclipse.org_0.8_17.6.2011.zip">download</a>)</li>				
				<li><a href="documentation/0.7/SMILA.html" target="_blank">0.7</a> (<a href="documentation/wiki.eclipse.org_0.7_30.3.2011.zip">download</a>)</li>
                <li><a href="docs/ORDO_D.11.1.1.b_ConceptIntegrationFramework_V1.0.pdf" target="_blank">SMILA in a nutshell (corresponds to the state of 0.5 version)</a>.
			</ul>
		</p>
		<p>
			Archived JavaDocs are also available:
			<ul>
				<li><a href="http://build.eclipse.org/rt/smila/javadoc/1.0/" target="_blank">1.0</a> (<a href="http://build.eclipse.org/rt/smila/javadoc/SMILA-javadoc-1.0.zip">download</a>)</li>				
				<li><a href="http://build.eclipse.org/rt/smila/javadoc/0.9/" target="_blank">0.9</a> (<a href="http://build.eclipse.org/rt/smila/javadoc/SMILA-javadoc-0.9.zip">download</a>)</li>				
				<li><a href="http://build.eclipse.org/rt/smila/javadoc/0.8/" target="_blank">0.8</a> (<a href="http://build.eclipse.org/rt/smila/javadoc/SMILA-javadoc-0.8.zip">download</a>)</li>				
				<li><a href="http://build.eclipse.org/rt/smila/javadoc/0.7/" target="_blank">0.7</a> (<a href="http://build.eclipse.org/rt/smila/javadoc/SMILA-javadoc-0.7.zip">download</a>)</li>
			</ul>
		</p>
	</div>
	  
EOHTML;

	include('rightColumn.php');
	$html .= $rightColumn;

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