<?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       = "Downloading Photran";
    $pageKeywords    = "photran, download";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
    <div class="homeitem3col">
      <h3>Versions and System Requirements</h3>
      
      <p>Photran is available in two flavors.
      Regardless of which one you install, you will need to have a
      <span style="font-family: monospace;">make</span>
      utility and a Fortran compiler in your system path in order to compile
      and build Fortran programs.</p>
      <ol>
        <li>The <span style="font-style: italic;">full version</span>
        contains the Eclipse Platform with CDT, Photran, and
        <a href="refactoring.php">Fortran refactoring support</a>.
        Simply decompress the downloaded file, then run the included
        <span style="font-family: monospace;">eclipse</span>
        executable.  A Java 1.5 JVM is required.
        <li>The <span style="font-style: italic;">Photran feature</span>
        can be added to an existing Eclipse 3.2 installation,
        <span style="font-style: italic;">as long as CDT 3.1 is already
        installed.</span>
        The Photran feature, by itself, does not include refactoring
        support and will run on a Java 1.4 JVM.
        To add refactoring support to the Photran feature, the
        <span style="font-style: italic;">refactoring feature</span>
        must be installed separately.  It requires a Java 1.5 JVM.
      </ol>
    </div>
    
    <div class="homeitem3col">
      <h3>Photran 4.0 Beta 1 for Eclipse 3.2.2 and CDT 3.1.2</h3>
      
      <h4>Full Versions</h4>
      <ul>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1-full-linux.tgz">Full
Photran for Linux/GTK</a>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1-full-linux-x86_64.tgz">Full
Photran for Linux/GTK x86_64</a>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1-full-win32.zip">Full
Photran for Windows</a>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1-full-solaris.zip">Full
Photran for Solaris</a>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1-full-macosx.tgz">Full
Photran for Mac OS X 10.4</a>
      </ul>
      
      <h4><small>&nbsp;<br></small>Eclipse Features</h4>
      <ul>
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-4.0-beta1.zip">Photran
Feature</a> (requires Eclipse 3.2 and CDT 3.1)
         <li>     <a
 href="http://www.eclipse.org/downloads/download.php?file=/technology/photran/photran-refactoring-4.0-beta1.zip">Refactoring
Feature</a> (add-on for Photran 4.0)
      </ul>
    </div>

    <p>Older releases are available in the <a href="download-archive.php">Photran Download Archive</a>.</p>

  </div>
</div>    
EOHTML;

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