<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *   Nathan Gervais (Eclipse Foundation) - Initial implementation
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div class="col-md-24">
  <div id="fullcolumn" class="indigo">
    <a href="/indigo"><img id="indigoLogo" src="images/indigologo.png" /></a>
    <div id="container">

      <div id="nav">
        <ul>
          <li><a href="/downloads/packages/release/indigo/sr2">Downloads</a></li>
          <li><a href="/indigo/projects.php">Projects</a></li>
          <li><a
            href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
          <li class="last active"><a href="/indigo/friends.php">The
              Indigo 500</a></li>
        </ul>
      </div>
      <div id="window">
        <div class="wantedDesc main">
          <h1 class="wanted">The Indigo 500</h1>
          <div class="wrapper">
            <p>
              Millions of people use Eclipse. <a href="/donate/">Friends
                of Eclipse</a> allows you to contribute back to the
              Eclipse community. To celebrate the upcoming Indigo
              Release Train we want to recruit 500 new Friends of
              Eclipse.
            </p>
          </div>
          <div class="wrapper">
            <p>
              For a US$35 contribution, you can become a Friend of
              Eclipse. As a special thank you, Friends will get early
              access to the <a href="/indigo/">Indigo release</a>,
              direct from the download server at the Eclipse Foundation.
              Your contribution will also help support the Eclipse
              community.
            </p>
          </div>
          <div class="wrapper spacing">
            <div class="star">
              <img src='images/icons/star.png' />
            </div>
            <a class="donate" href="/donate">Donate Now!</a>
          </div>
          <div class="progressBar">
            <div class="progress" style="width: 169px">&nbsp;</div>
            <div class="counter">
              <span class="active">86</span> / 500 friends recruited.
            </div>
          </div>

        </div>
        <div class="wantedDesc recent">
          <h3>Recent Friends</h3>
          <ul class="donorList clearfix">
            <li>Anonymous - $50</li>
            <li>Chris Charlton - $35</li>
            <li>Anonymous - $35</li>
            <li>Anonymous - $35</li>
            <li>Anonymous - $40</li>
            <li>Anonymous - $50</li>
            <li>Anonymous - $35</li>
            <li>Cho Hyunjong - $35</li>
          </ul>
          <div class="more">
            <a href="/donate/donorlist.php?showAll=0">More</a>
          </div>
        </div>
        <p class="legal">[1] Friends of Eclipse get special access to
          the Eclipse Foundation download server. This server will be
          available to Friends of Eclipse while the download packages
          are being synchronized to our mirrors. This typically means
          the packages will be available up to 24 hrs before everyone
          else. The Eclipse Foundation will also be dedicating extra
          bandwidth to this download server, so Friends should
          experience a faster download.</p>
      </div>
    </div>
  </div>
</div>