<?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 - Downloads archive";
	$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>Downloads archive</h1>
		<h2>Releases</h2>
		
		<h3>1.1</h3>
		<p>			
			<ul>
				<li>Linux 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-linux.gtk.x86.zip">SMILA-1.1-linux.gtk.x86.zip</a></li>
				<li>Linux 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-linux.gtk.x86_64.zip">SMILA-1.1-linux.gtk.x86_64.zip</a></li>
				<li>Mac OS X 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-macosx.cocoa.x86_64.zip">SMILA-1.1-macosx.cocoa.x86_64.zip</a></li>
				<li>Windows 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-win32.win32.x86.zip">SMILA-1.1-win32.win32.x86.zip</a></li>
				<li>Windows 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-win32.win32.x86_64.zip">SMILA-1.1-win32.win32.x86_64.zip</a></li>
				<li>SDK example code: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-integrator-examples.zip">SMILA-1.1-integrator-examples.zip</a></li>
				<li>SMILA source code: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.1/SMILA-1.1-core-source.zip">SMILA-1.1-core-source.zip</a></li>
			</ul>
		</p>
		
		<h3>1.0</h3>
		<p>			
			<ul>
				<li>Linux 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-linux.gtk.x86.zip">SMILA-1.0-linux.gtk.x86.zip</a></li>
				<li>Linux 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-linux.gtk.x86_64.zip">SMILA-1.0-linux.gtk.x86_64.zip</a></li>
				<li>Mac OS X 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-macosx.cocoa.x86_64.zip">SMILA-1.0-macosx.cocoa.x86_64.zip</a></li>
				<li>Windows 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-win32.win32.x86.zip">SMILA-1.0-win32.win32.x86.zip</a></li>
				<li>Windows 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-win32.win32.x86_64.zip">SMILA-1.0-win32.win32.x86_64.zip</a></li>
				<li>SDK example code: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-integrator-examples.zip">SMILA-1.0-integrator-examples.zip</a></li>
				<li>SMILA source code: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/1.0/SMILA-1.0-core-source.zip">SMILA-1.0-core-source.zip</a></li>
			</ul>
		</p>
		
		<h3>0.9</h3>
		<p>
			<ul>
				<li>Linux 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-incubation-0.9-linux.gtk.x86.zip">SMILA-incubation-0.9-linux.gtk.x86.zip</a></li>
				<li>Linux 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-incubation-0.9-linux.gtk.x86_64.zip">SMILA-incubation-0.9-linux.gtk.x86_64.zip</a></li>
				<li>Mac OS X 64 Bit (Cocoa): <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-incubation-0.9-macosx.cocoa.x86_64.zip">SMILA-incubation-0.9-macosx.cocoa.x86_64.zip</a></li>
				<li>Windows 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-incubation-0.9-win32.win32.x86.zip">SMILA-incubation-0.9-win32.win32.x86.zip</a></li>
				<li>Windows 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-incubation-0.9-win32.win32.x86_64.zip">SMILA-incubation-0.9-win32.win32.x86_64.zip</a></li>
				<li>SDK Examples (platform independent): <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.9/SMILA-0.9-integrator-examples.zip">SMILA-0.9-integrator-examples.zip</a></li>
			</ul>
		</p>

		<h3>0.8</h3>
		<p>
			<ul>
				<li>Linux 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.8/SMILA-incubation-0.8-linux.gtk.x86.zip">SMILA-incubation-0.8-linux.gtk.x86.zip</a></li>
				<li>Linux 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.8/SMILA-incubation-0.8-linux.gtk.x86_64.zip">SMILA-incubation-0.8-linux.gtk.x86_64.zip</a></li>
				<li>Mac OS X 64 Bit (Cocoa): <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.8/SMILA-incubation-0.8-macosx.cocoa.x86_64.zip">SMILA-incubation-0.8-macosx.cocoa.x86_64.zip</a></li>
				<li>Windows 32 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.8/SMILA-incubation-0.8-win32.win32.x86.zip">SMILA-incubation-0.8-win32.win32.x86.zip</a></li>
				<li>Windows 64 Bit: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.8/SMILA-incubation-0.8-win32.win32.x86_64.zip">SMILA-incubation-0.8-win32.win32.x86_64.zip</a></li>
			</ul>
		</p>

		<h3>0.7</h3>
		<p>
			<ul>
				<li>Linux binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.7/SMILA-incubation-0.7-linux.gtk.x86.zip">SMILA-incubation-0.7-linux.gtk.x86.zip</a></li>
				<li>Win32 binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/releases/0.7/SMILA-incubation-0.7-win32.win32.x86.zip">SMILA-incubation-0.7-win32.win32.x86.zip</a></li>
			</ul>
		</p>
		<h2>Milestones</h2>
		<h3>0.5 M3</h3>
		<p>
			<ul>
				<li>Linux binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M3/SMILA-incubation-0.5-M3-linux.gtk.x86.zip">SMILA-incubation-0.5-M3-linux.gtk.x86.zip</a></li>
				<li>Win32 binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M3/SMILA-incubation-0.5-M3-win32.win32.x86.zip">SMILA-incubation-0.5-M3-win32.win32.x86.zip</a></li>
			</ul>
		</p>
		<h3>0.5 M2</h3>
		<p>
			<ul>
				<li>Linux binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M2/SMILA-incubation-0.5-M2-linux.gtk.x86.zip">SMILA-incubation-0.5-M2-linux.gtk.x86.zip</a></li>
				<li>Win32 binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M2/SMILA-incubation-0.5-M2-win32.win32.x86.zip">SMILA-incubation-0.5-M2-win32.win32.x86.zip</a></li>
			</ul>
		</p>
		<h3>0.5 M1</h3>
		<p>
			<ul>
				<li>Linux binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M1/SMILA-incubation-0.5-M1-linux.gtk.x86.zip">SMILA-incubation-0.5-M1-linux.gtk.x86.zip</a></li>
				<li>Win32 binaries: <a href="http://www.eclipse.org/downloads/download.php?file=/rt/smila/milestones/0.5-M1/SMILA-incubation-0.5-M1-win32.win32.x86.zip">SMILA-incubation-0.5-M1-win32.win32.x86.zip</a></li>
			</ul>
		</p>
	</div>

EOHTML;

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

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