<?php
/*******************************************************************************
 * Copyright (c) 2015 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:
 *    Eric Poirier (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
?>

<section class="jumbotron breadcrumbs-offset">
  <div class="container">
    <div class="content">
    <h1><strong>Together</strong> we can improve Eclipse</h1>
      <div class="row">
        <div class="col-md-16">
          <p>Eclipse is a great <strong>IDE and community</strong>. We want to make it even better!
          All money donated by Friends of Eclipse will go directly to funding <strong>Eclipse IDE development.</strong></p>
        </div>
        <div class="col-md-8">
          <img src="images/logo-friend-of-eclipse.png" alt="Friend of Eclipse">
        </div>
      </div>
    </div>
  </div>
</section>

<section class="content-benefits">
  <div class="container">
    <div class="row">
      <div class="col-md-16">
      <h1><?php print $pageTitle;?></h1>
        <p>Eclipse is a great IDE and community. We want to make it even better!
        All money donated by Friends of Eclipse will go directly to funding Eclipse
        IDE development. As a thank you, here are the benefits you receive for your donation*.
        </p>

        <h2>Friend of Eclipse Benefits</h2>

        <p>Donate between 35 USD and 49.99 USD and you will be identified as a Friend
        of Eclipse for 1 year. Benefits include:<p>
        <ul>
          <li>Friend of Eclipse Mirror Site - This will allow you to download new
          versions of Eclipse faster**</li>
          <li>Friend of Eclipse logo***</li>
          <li>40% off prints and 50% off ebooks at
          <a href="https://www.oreilly.com" title="oreilly.com" target="_blank">oreilly.com</a></li>
        </ul>

        <h2>Best Friend of Eclipse Benefits</h2>

        <p>Donate more than 50 USD and you will be identified as a Best Friend of
        Eclipse for 1 year. Benefits include:</p>
        <ul>
          <li>Receive an <b>Eclipse T-Shirt</b></li>
          <li>Friend of Eclipse Mirror Site - This will allow you to download new
          versions of Eclipse faster**</li>
          <li>Friend of Eclipse logo***</li>
          <li>40% off prints and 50% off ebooks at
          <a href="https://www.oreilly.com" title="oreilly.com" target="_blank">oreilly.com</a></li>
          <li>EclipseCon Friend of Eclipse discount****</li>
        </ul>

        <p class="small">*Eclipse Foundation Inc. is a not-for-profit, member
        supported corporation. Please note that contributions or gifts to the
        Eclipse Foundation Inc. are not tax deductible as charitable contributions.</p>

        <p class="small">**Eclipse Foundation Inc. cannot guarantee that the Friends mirror
        will be faster than its other mirrors, however it will give users of
        this mirror priority. This Friends Mirror is only available for downloads
        through our website.
        <br/>When you donate US$35 or more you will have access to the Friends of
        Eclipse Mirror Site. You will need an Eclipse.org account to gain access
        to this mirror. If you need an account click here to launch the registration
        page is a new window.</p>

        <p class="small">***The Friends of Eclipse program is for individuals,
        so the logo should not be used on an organization website.</p>

        <p class="small">****The discount is valid for a year and can be used for all three
        EclipseCon events. The discount amount varies for each individual conference
        and will be identified on their respective registration pages at eclipsecon.org.
        The friend discount cannot be combined with other EclipseCon discounts such as
        alumni, member, etc</p>

        <p><a href="faq.php" title="Friend of Eclipse FAQ" class="btn btn-info">Friend of Eclipse FAQ</a></p>
      </div>
      <?php include('en_sidebar.php');?>
    </div>
  </div>
</section>