<?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, big data, bigdata";
	$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);
?>
