<?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'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "SMILA";
	$pageKeywords	= "SMILA, unstructured information management, information logistics, semantic web, framework, platform, eclipse";
	$pageAuthor		= "Igor Novakovic";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>SMILA - SeMantic Information Logistics Architecture</h1>
		<h2>Unleashing the potential of unstructured data sources</h2>
		<p>
			The amount and diversity of information is growing exponentially, mainly in 
			the area of unstructured data, like emails, text files, blogs, images etc.
		</p>
		<p>
			Poor data accessibility, user rights integration and the lack of semantic meta 
			data are constraining factors for building next generation enterprise search 
			and other document centric applications. Missing standards result in proprietary 
			solutions with huge short and long term cost.
		</p>
		<p>
			SMILA is an extensible framework for building search solutions to access 
			unstructured information in the enterprise. Besides providing essential 
			infrastructure components and services, SMILA also delivers ready-to-use 
			add-on components, like connectors to most relevant data sources.
		</p>
			Using the framework as their basis will enable developers to concentrate 
			on the creation of higher value solutions, like semantic driven applications etc.
		<p>
		</p>
			The long term goal of SMILA is to establish an industry standard by attracting 
			as many parties as possible to use the framework and/or participate in the 
			surrounding eco-system.
		<p>
	  
		<div class="homeitem3col">
			<h3>News</h3>
			<h4>Still to come...</h4>
			<p>
			</p> 
		</div>
	</div>
	  
	<div id="rightcolumn">
    	<div class="sideitem">
       		<h6>Incubation</h6><p>
       		<div align="center">
         		<a href="/projects/what-is-incubation.php">
           		<img align="center" src="/images/egg-incubation.png" border="0"/></a>
       		</div>
     	</div>
	  	<div class="sideitem">
			<h6>Links</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/SMILA" target="_blank">Project Wiki</a></li>				
				<li><a href="http://www.eclipse.org/proposals/eilf/SMILA_Creation_Review.pdf" target="_blank">Creation Review</a></li>
				<li><a href="http://www.eclipse.org/proposals/eilf" target="_blank">Project proposal</a></li>
			</ul>
		</div>
		<div class="sideitem">
			<h6>Been there!</h6>
			<div align="center">
				<a href="http://www.eclipsecon.org/2008/">
					<img border="0" src="http://www.eclipsecon.org/2008/image/125x72.gif"
 					height="72" width="125" alt="EclipseCon 2008"/>
 				</a>
 			</div>			
		</div>	
	</div>	

EOHTML;


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