<?php

#*****************************************************************************
#
# amwExamples_script.php
#
# Author: 		Marcos Didonet Del Fabro
# Date:			2005-05-19
#
#****************************************************************************

require_once("amwExamples_script_xml.php");

function getAmwScenarios() {
	$file_name = $_SERVER['DOCUMENT_ROOT'] . "/gmt/amw/examples/amwExamples.xml";

	$amwScenarios = getAmwScenariosParsed($file_name);

	$html1 = "<div class=\"homeitem3col\">";
	$html1 .= "<h3>";
	$html1 .= "AMW Examples list <a href=\"#versionIssues\">(version issues)</a>";

	$html1 .= "</h3>";
	
	$html1 .= "<ul class=\"midlist\">";
	
	$html2 = "";
	foreach ($amwScenarios->category as $category) {

		$html1 .= "<li>";
		$html1 .= "<a name=\"$category->name\"></a><b>$category->name</b> <br/>";
		$html1 .= "$category->description";
		$html1 .= "</li>";

		$html1 .= "<ul class=\"midlist\">";

		foreach ($category->amwExample as $amwExample) {
	
			$html1 .= "<li>";
			$html1 .= "<b><a href=\"#$amwExample->shortName\">$amwExample->name</a></b>: ";
			if ($amwExample->docLink != null){
				$html1 .= "<a href=\"$amwExample->docLink\">Documentation</a>, ";
			}
			$html1 .= "<a href=\"$amwExample->sourceLink\">Source files</a>";
			$html1 .= "</li>\n";
	
			$html2 .= "<div class=\"homeitem3col\">";
			$html2 .= "<a name=\"$amwExample->shortName\"></a>";		
			$html2 .= "<h3>";
			$html2 .= $amwExample->name;
			$html2 .= "</h3>";
			$html2 .= "<ul>";

			$html2 .= "<li>";
			if ($amwExample->docLink != null){
				$html2 .= "<a href=\"$amwExample->docLink\">Documentation</a>, ";
			}
			$html2 .= "<a href=\"$amwExample->sourceLink\">Source files</a>";
			#$html2 .= "<font size=\"-2\">$amwExample->pubDate</font>";
			$html2 .= "<blockquote>" . $amwExample->description . "</blockquote>";
			$html2 .= "</li>\n";
			$html2 .= "</ul>";
			$html2 .= "<hr class=\"clearer\" />";	
			$html2 .= "</div>";				
		}	
		$html1 .= "</ul>";		
	}
	
	$html2 .= "<div class=\"homeitem3col\">";
	$html2 .= "<a name=\"versionIssues\"></a>";
	$html2 .= "<h3>";
	$html2 .= "Version issues";
	$html2 .= "</h3>";
	$html2 .= "The examples in which the weaving models have .ecore extension were developed using the AMW release of January 26th or older.<p/>";
	$html2 .= "The examples with .amw extension are compatible with the July 17th binary version or the AMW sources.<p/>";	
	$html2 .= "</div>";
	
	$html1 .= "<hr class=\"clearer\" />";
	$html1 .= "</div>";

	$html = $html1 . $html2;

	return $html;
}



?>
