<?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:
 *    Christopher Guindon (Eclipse Foundation)
 *******************************************************************************/
?>

<div class="col-md-14 col-lg-16">
  <h1>To become a member, follow these steps:</h1>
  <div class="container-list margin-top-25 padding-top-10">
    <div class="list-row row" style="min-height:0; margin-left:-5px;">
      <div class="col-sm-24 margin-top-5">Select the <a href="#" data-toggle="modal" data-target="#membership-types-list">membership level</a>. Most companies start out as a Solution Member.</div>
    </div>
    <hr>
    <div class="list-row row" style="min-height:0; margin-left:-5px;">
      <div class="col-sm-18 margin-top-5">
        Complete and sign the Membership Information Form:</div>
      <div class="col-sm-6 dropdown text-right">
        <button class="btn btn-sm btn-secondary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Download <span class="caret"></span></button>
        <ul class="dropdown-menu" aria-labelledby="dropdownMenu1" style="border: 1px solid #272727;margin-top: 0px;min-width: 89px;right:15px;">
          <li><a href="/membership/documents/membership-information-form.pdf">PDF</a></li>
          <li><a href="/membership/documents/membership-information-form.doc">Word</a></li>
        </ul>
      </div>
    </div>
    <hr>
    <div class="list-row row" style="min-height:0; margin-left:-5px;">
      <div class="col-sm-18 margin-top-5">
        Complete and sign the Membership Agreement:
      </div>
      <div class="col-sm-6 dropdown text-right margin-bottom-20">
        <p><a style="min-width:88px;" class="btn btn-sm btn-secondary" href="/org/documents/2018-01_Eclipse_MEMBERSHIP_AGMT.pdf">Download</a></p>
      </div>
    </div>
    <div class="sideitem alert" style="background:#fefefe;  border-left:5px solid #e0e0e0;">
      <div class="row">
        <div class="col-sm-18">
          <div class="row">
            <div class="col-sm-2"><i class="fa fa-info-circle fa-2x float-left margin-right-10"></i></div>
            <div class="col-sm-22">
              While optional, we recommend companies with employees who participate as committers on Eclipse projects to complete and sign the Member Committer Agreement.
            </div>
          </div>
        </div>
        <div class="col-sm-6 dropdown text-right">
          <p><a style="min-width:88px;" class="btn btn-sm btn-secondary" href="/legal/committer_process/EclipseMemberCommitterAgreementFinal.pdf">Download</a></p>
        </div>
      </div>

    </div>
    <hr>
    <div class="list-row row" style="margin-left:-5px;">
      <div class="col-sm-21 margin-top-5">
        <p><a href="mailto:membership@eclipse.org">Email us</a> the signed documents, including the Membership Agreement, the Membership Application, and optionally, the Member Committer Agreement.</p>
        <p>We will respond to you via email within 2 business days.</p>
      </div>
    </div>
  </div>
</div>
<!--  Modal  -->
<div class="modal fade" id="membership-types-list" tabindex="-1" role="dialog" aria-labelledby="Membership Types">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Membership Types</h4>
      </div>
      <div class="modal-body">
        <p>There are five types of membership to the Eclipse Foundation, four for organizations, and one for individuals.</p>

        <ul class="circles-list margin-top-25 padding-top-10">

          <li><a href="/membership/become_a_member/membershipTypes.php#strategic">Strategic Members</a> are organizations that view Eclipse as a strategic
            platform and are investing developer and other resources to further develop the Eclipse technology.<br />
            <a class="mt-read-more" href="/membership/become_a_member/membershipTypes.php#strategic">Read more <i class="fa fa-angle-double-right" aria-hidden="true"></i></a>
          </li>

          <li><a href="/membership/become_a_member/membershipTypes.php#enterprise">Enterprise Members</a> are organizations that rely heavily on
            Eclipse technology as a platform for their internal development projects and/or act strategically
            building products and services built on, or with, Eclipse. These organizations want to influence and
            participate in the development of the Eclipse ecosystem.<br />
            <a class="mt-read-more" href="/membership/become_a_member/membershipTypes.php#enterprise">Read more <i class="fa fa-angle-double-right" aria-hidden="true"></i></a>
          </li>

          <li><a href="/membership/become_a_member/membershipTypes.php#solutions">Solutions Members</a> are organizations that view Eclipse as an important
            part of their corporate and product strategy and offer products and services based on, or with,
            Eclipse. These organizations want to participate in the development of the Eclipse ecosystem.<br />
            <a class="mt-read-more" href="/membership/become_a_member/membershipTypes.php#solutions">Read more <i class="fa fa-angle-double-right" aria-hidden="true"></i></a>
          </li>

          <li><a href="/membership/become_a_member/membershipTypes.php#associate">Associate Members</a> are organizations that participate in,
            and want to show support for, the Eclipse ecosystem.<br />
            <a class="mt-read-more" href="/membership/become_a_member/membershipTypes.php#associate">Read more <i class="fa fa-angle-double-right" aria-hidden="true"></i></a>
          </li>

          <li><a href="/membership/become_a_member/membershipTypes.php#committer">Committer Members</a> are individuals that are the core developers
            of the Eclipse projects and can commit changes to project source code.<br />
            <a class="mt-read-more" href="/membership/become_a_member/membershipTypes.php#committer">Read more <i class="fa fa-angle-double-right" aria-hidden="true"></i></a>
          </li>

        </ul>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
<!--  end Modal -->
<?php require_once('../content/en_sidebar.php');?>
