<?php
/*******************************************************************************
 * Copyright (c) 2014 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
if (basename ( __FILE__ ) == basename ( $_SERVER ['PHP_SELF'] )) {
  exit ();
}
?>

<div id="fullcolumn">
  <div id="midcolumn">
    <h1><?php print $pageTitle;?></h1>
    <h2>Current releases</h2>
    <ul>
      <li><a href="http://help.eclipse.org/mars/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Mars (4.5)
            Documentation</b></a><b> (HTML Help Center) </b></li>
    </ul>
    <h2>Older releases</h2>
    <ul>
      <li><a href="http://help.eclipse.org/luna/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Luna (4.3)
            Documentation</b></a><b> (HTML Help Center) </b></li>
      <li><a href="http://help.eclipse.org/kepler/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Kepler (4.3)
            Documentation</b></a><b> (HTML Help Center) </b></li>
      <li><a href="http://help.eclipse.org/juno/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Juno (4.2)
            Documentation</b></a><b> (HTML Help Center) </b></li>
    </ul>
    <h2>Archived releases</h2>
    <p>These links redirect to the oldest 'active' release and may stop
      functioning in future.</p>
    <ul>
      <li><a href="http://help.eclipse.org/juno/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Indigo (3.7)
            Documentation</b></a><b> (HTML Help Center) </b></li>
      <li><a href="http://help.eclipse.org/helios/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Helios (3.6)
            Documentation</b></a><b> (HTML Help Center) </b></li>
      <li><a href="http://help.eclipse.org/galileo/index.jsp"><b><img
            src="/newsgroups/images/discovery.gif" /> Eclipse Galileo (3.5)
            Documentation</b></a><b> (HTML Help Center) </b></li>
    </ul>
    <div class="homeitem3col">
      <h3>Eclipse 3.1 Documentation</h3>
      <ul>
        <li><a
          href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.platform.doc.user.3.1.pdf.zip"><img
            src="/images/zip.png" /> Workbench User Guide</a></li>
        <li><a
          href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.jdt.doc.user.3.1.pdf.zip"><img
            src="/images/zip.png" /> Java Development User Guide</a></li>
        <li><a
          href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.pde.doc.user.3.1.pdf.zip"><img
            src="/images/zip.png" /> PDE Guide</a></li>
        <li><a
          href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.platform.doc.isv.3.1.pdf.zip"><img
            src="/images/zip.png" /> Platform Plug-in Developer Guide</a></li>
        <li><a
          href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.jdt.doc.isv.3.1.pdf.zip"><img
            src="/images/zip.png" /> JDT Plug-in Developer Guide</a>

      </ul>
    </div>
  </div>
  <div id="rightcolumn">
    <div class="sideitem">
      <h6>Related links</h6>
      <ul>
        <li><a href="http://www.eclipse.org/home/newcomers.php">New to
            Eclipse? Start here.</a></li>
        <li><a href="/articles/">Eclipse articles</a></li>
        <li><a href="/forums/">Forums</a></li>
        <li><a href="/resources/">Resources</a></li>
      </ul>
    </div>
  </div>
</div>