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

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Marcos Didonet Del Fabro
	# Date:			2006-05-19
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Weaving metamodel Zoo";
	$pageKeywords	= "Zoo, metamodel, AMW, model weaving, metamodel extension, atl";
	$pageAuthor		= "Marcos Didonet Del Fabro";
	
	# End: page-specific settings
	#

	include('../../am3/zoos/script/zoo_script.php');
	$zoo = getZoo($pageTitle, "/gmt/amw/zoo/AMWZoo.xml");
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="midcolumn">
	<h1>$pageTitle</h1>
	<p>
		The AMW Zoo is a zoo containing weaving metamodels and extensions of weaving metamodels 
		expressed in KM3. 
	</p>
	<p>
		Technical remarks:<br/>
		<ul class="midlist">
  		<li>
  		The extensions are represented as portions of KM3 files and must be used together with the weaving core metamodel.
		</li>
		</ul>
	</p>

	<a name="zoo"></a>
	$zoo


</div>

EOHTML;


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