<?php
/**
 * Copyright (c) 2015, 2016, 2018 Eclipse Foundation.
 *
 * 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:
 * Christopher Guindon (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="midcolumn">
  <h1><?php print $pageTitle; ?></h1>
  <div class="homeitem3col">
    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingOne">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"
              aria-expanded="true" aria-controls="collapseOne"
            > What do you plan to do with the donations received? </a>
          </h4>
        </div>
        <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel"
          aria-labelledby="headingOne"
        >
          <div class="panel-body">
            All money donated to the Eclipse Foundation will be used to support the Eclipse
            Community.
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingTwo">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"
              aria-expanded="true" aria-controls="collapseTwo"
            > Do I get a charitable tax receipt for my donation? </a>
          </h4>
        </div>
        <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingTwo"
        >
          <div class="panel-body">No, you will not receive a charitable tax receipt for your
            donation. The Eclipse Foundation is a 501(c)(6) not-for-profit organization, not a
            charitable organization, so we are unable to provide charitable tax receipts.</div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingThree">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"
              aria-expanded="true" aria-controls="collapseThree"
            > What methods of payment do you accept for contributions? </a>
          </h4>
        </div>
        <div id="collapseThree" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingThree"
        >
          <div class="panel-body">We currently accept credit card donations and PayPal donations.</div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingFour">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFour"
              aria-expanded="true" aria-controls="collapseFour"
            > How do I set-up a recurring donation? </a>
          </h4>
        </div>
        <div id="collapseFour" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingFour"
        >
          <div class="panel-body">
            <p>Thank you for wanting to donate periodically to the Eclipse Foundation!</p>
            <p>
              The only way to create an automatic recurring donation is through PayPal. On the <a
                href="/donate"
              >donate page</a>, select the amount you would like to give periodically, click donate.
              In the next box, make sure PayPal is selected and selected a donation period, monthly
              or yearly. To confirm your donation, click the donate button again and you will be
              redirected to PayPal to finalize the donation. From then on, donations will be made
              automatically on your behalf monthly or yearly, depending on your selection.
            </p>
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingFive">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFive"
              aria-expanded="true" aria-controls="collapseFive"
            > How do I cancel my recurring donation? </a>
          </h4>
        </div>
        <div id="collapseFive" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingFive"
        >
          <div class="panel-body">
            To cancel your recurring donation, you will have to log in to your PayPal account to
            terminate the recurring payment. More information is available on the <a
              href="https://www.paypal.com/selfhelp/article/FAQ2058/3" target="_blank"
            >PayPal FAQ page.</a>
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingSix">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSix"
              aria-expanded="true" aria-controls="collapseSix"
            > What if I want to donate by cheque or direct deposit? </a>
          </h4>
        </div>
        <div id="collapseSix" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingSix"
        >
          <div class="panel-body">
            <p>You are welcome to make a donation via cheque or direct deposit, but please note that
              you will not be eligible for the Friend of Eclipse benefits.</p>
            <p>
              <strong>Cheque Donations</strong>
            </p>
            <p>To donate via cheque, please send your cheque to:</p>
            <p>
              Eclipse Foundation Donations<br> 102 Centrepointe Dr.<br> Ottawa, Ontario<br> Canada,
              K2G 6B1
            </p>
            <p>
              <strong>Direct Deposit</strong>
            </p>
            <p>
              To donate via direct deposit, <a href="mailto:donate@eclipse.org">email us</a> for the
              banking information.
            </p>
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingNine">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseNine"
              aria-expanded="true" aria-controls="collapseNine"
            > What amounts may I contribute? </a>
          </h4>
        </div>
        <div id="collapseNine" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingNine"
        >
          <div class="panel-body">You may contribute any amount you like. A contribution over 35 USD
            gives you the Friend of Eclipse status.</div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingTen">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTen"
              aria-expanded="true" aria-controls="collapseTen"
            > What is a “Friend of Eclipse” and how do I become one? </a>
          </h4>
        </div>
        <div id="collapseTen" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingTen"
        >
          <div class="panel-body">
            <p>Individuals that contribute 35 USD or more qualify for the Friend of Eclipse status.
              This status lasts for a period of 12 months.</p>
            <ul>
              <li>Friends are recognized on Buzgilla with a friend of Eclipse badge.</li>
              <li>Friends can use the Friend of Eclipse logo.</li>
            </ul>
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingEleven">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseEleven"
              aria-expanded="true" aria-controls="collapseEleven"
            > How do I link my Eclipse Account to my donation? </a>
          </h4>
        </div>
        <div id="collapseEleven" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingEleven"
        >
          <div class="panel-body">
            If you have made a donation while you were logged in, your donation will automatically
            be linked to your Eclipse Account. If your Eclipse Account and your donations aren’t
            linked and you would like them to be, please email us <a
              href="mailto:donate@eclipse.org?subject=Link donation to my Eclipse Account"
            >donate@eclipse.org</a>. Please provide your donation details in the email: date,
            transaction ID, full name, and your Eclipse Account email address.
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingTwelve">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwelve"
              aria-expanded="true" aria-controls="collapseTwelve"
            > What should I do if I made a mistake when submitting my contribution? </a>
          </h4>
        </div>
        <div id="collapseTwelve" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingTwelve"
        >
          <div class="panel-body">
            Please contact us at <a href="mailto:donate@eclipse.org?subject=Donation Problem">donate@eclipse.org</a>
            with all your contact information and an explanation of what you need corrected.
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingThirteen">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion"
              href="#collapseThirteen" aria-expanded="true" aria-controls="collapseThirteen"
            > Who can use the Friend of Eclipse Logo? </a>
          </h4>
        </div>
        <div id="collapseThirteen" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingThirteen"
        >
          <div class="panel-body">Any individual that has donated more than 35 USD to the Eclipse
            Foundation may use the Friend of Eclipse logo.</div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingFourteen">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion"
              href="#collapseFourteen" aria-expanded="true" aria-controls="collapseFourteen"
            > How can I get recognized for my donation on the credit page? </a>
          </h4>
        </div>
        <div id="collapseFourteen" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingFourteen"
        >
          <div class="panel-body">
            When you make your donation, check the box next to “I want to be listed on the
            recognition page”, then enter your first and last name. Once your donation has been
            finalized, you will be listed on the <a href="/donate/credit.php">credit page</a>. If
            you do not check the box, your donation will remain anonymous.
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingFifteen">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFifteen"
              aria-expanded="true" aria-controls="collapseFifteen"
            > How can I make a corporate donation? </a>
          </h4>
        </div>
        <div id="collapseFifteen" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingFifteen"
        >
          <div class="panel-body">
            We have an <a href="https://eclipse.org/corporate_sponsors/corp_sponsor_details.php">Eclipse
              Corporate Sponsor Program</a>. A company may become a corporate sponsor by making a
            financial contribution or an in-kind contribution of goods and services to the Eclipse
            Foundation. There are three tiers of sponsorship: 1) Platinum, 2) Gold and 3) Silver;
            each tier representing the level of annual sponsorship to the Eclipse Foundation.
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
      <!-- .PANEL -->
      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingSixteen">
          <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSixteen"
              aria-expanded="true" aria-controls="collapseSixteen"
            > Contact Us </a>
          </h4>
        </div>
        <div id="collapseSixteen" class="panel-collapse collapse" role="tabpanel"
          aria-labelledby="headingSixteen"
        >
          <div class="panel-body">
            Other questions? Email us <a href="mailto:donate@eclipse.org">donate@eclipse.org</a>
          </div>
        </div>
      </div>
      <!-- /.PANEL -->
    </div>
  </div>
</div>