<?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());

#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "Prerequisites";
$pageKeywords	= "mobile, java, tools";
$pageAuthor		= "Diego Madruga Sandin";


# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
        <h1>$pageTitle</h1>
		<p>The following are prerequisites for Mobile Tools for Java<sup><small>TM</small></sup> 
		to work properly:</p>
		<ul>
			<li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE development Kit(JDK) 1.5 or greater</a></li>
			<li>The latest <a href="http://www.eclipse.org/downloads/">Eclipse IDE for Java Developers</a></li>
			<li><a href="/mtj/development/tutorial/supported.php">A supported wireless toolkit</a></li>
		</ul>
		<p>The following items are optional:</p>
		<ul>
			<li><a href="http://proguard.sourceforge.net" target="_blank">ProGuard
			Obfuscator</a>.- MTJ uses ProGuard to produce obfuscated packages</li>
		</ul>
	</div>
	<div id="rightcolumn">
        <div class="sideitem">
        	<h6><a style="text-decoration: none" href="/dsdp/mtj/development/tutorial/gettingstarted.php" target="_self">Getting started</a></h6>
        	<ul>				
        		<a href="/mtj/development/tutorial/prerequisites.php" target="_self">Prerequisites</a>
        		</li>
        	</ul>
        	<ul>				
        		<a href="/mtj/development/tutorial/supported.php" target="_self">Supported Wireless Toolkits</a>
        		</li>
        	</ul>
        	<ul>				
        		<a href="/mtj/development/tutorial/installation.php" target="_self">Installation Instructions</a>
        		</li>
        	</ul>
        	<ul>				
        		<a href="/mtj/development/tutorial/removal.php" target="_self">Removal Instructions</a>
        		</li>
        	</ul>
        </div>
	</div>
</div>

EOHTML;


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