<?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://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *******************************************************************************/
 ?>
<div class="col-md-9 col-lg-7 col-md-offset-1 margin-top-20 margin-bottom-20">
  <div class="icon-sidebar-menu row">
    <?php if (!isset($hide_membership) || $hide_membership == FALSE) :?>
      <div class="padding-bottom-20 clearfix">
        <div class="col-md-9 hidden-xs hidden-sm">
          <a class="circle-icon" href="/membership/exploreMembership.php">
            <i class="fa fa-search orange"></i>
          </a>
        </div>
        <div class="col-sm-24 col-md-15">
          <h3><a href="/membership/exploreMembership.php">Explore our Members</a></h3>
          <p>Learn more about the products and services provided by the members of Eclipse</p>
        </div>
      </div>
    <?php endif;?>
    <?php if (!isset($hide_become) || $hide_become == FALSE) :?>
      <div class="padding-bottom-20 clearfix margin-bottom-15">
        <div class="col-xs-8 col-md-9 hidden-xs hidden-sm">
          <a class="circle-icon" href="/membership/become_a_member/">
            <i class="fa fa-user orange"></i>
          </a>
        </div>
        <div class="col-sm-24 col-md-15">
          <h3><a href="/membership/become_a_member/">Become a member</a></h3>
          <p>Join the Eclipse Foundation and influence the future</p>
        </div>
      </div>
    <?php endif;?>
    <?php if (isset($show_corporate_sponsors_block) && $show_corporate_sponsors_block == TRUE) :?>
      <div class="padding-bottom-20 clearfix margin-bottom-15">
        <div class="col-xs-8 col-md-9 hidden-xs hidden-sm">
          <a class="circle-icon" href="/membership/become_a_member/">
            <i class="fa fa-handshake-o orange"></i>
          </a>
        </div>
        <div class="col-sm-24 col-md-15">
          <h3><a href="/corporate_sponsors">Become a corporate sponsor</a></h3>
          <p>We encourage corporate users of Eclipse technologies to support the community by becoming a member and/or joining the Corporate Sponsorship Program.</p>
        </div>
      </div>
    <?php endif;?>
    <?php if (!isset($hide_faqs) || $hide_faqs == FALSE) :?>
      <div class="padding-bottom-20 clearfix">
        <div class="col-xs-8 col-md-9 hidden-xs hidden-sm">
          <a class="circle-icon" href="/membership/become_a_member/">
            <i class="fa fa-question-circle orange"></i>
          </a>
        </div>
        <div class="col-sm-24 col-md-15">
          <h3><a href="/membership/faq/">Membership FAQs</a></h3>
          <p>Answers to questions frequently asked by, and about, membership</p>
       </div>
    </div>
  <?php endif;?>
  </div>
</div>

<?php if (isset($show_modal) && $show_modal == TRUE) :?>
  <div class="col-md-10 col-lg-7 col-lg-offset-1 pull-right">
    <div class="sideitem">
      <h6>Helpful tips</h6>
      <ul class="fa-ul">
        <li><i class="fa-li fa fa-chevron-circle-right orange"></i><a href="mailto:membership@eclipse.org">Email us</a> if you have any questions.</li>
        <li><i class="fa-li fa fa-chevron-circle-right orange"></i><a href="#" data-toggle="modal" data-target="#modal-checklist">Check list</a> of sections to be completed on the membership agreement </li>
        <li><i class="fa-li fa fa-chevron-circle-right orange"></i><a href="/membership/become_a_member/benefits.php">Benefits of Membership</a></li>
        <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Eclipse <a href="/org/documents/">governance documents</a>, including bylaws, IP policy, Eclipse Public License (EPL), and others</li>
        <li><i class="fa-li fa fa-chevron-circle-right orange"></i>Your organization can also support the Eclipse Foundation and community through the <a href="/corporate_sponsors/">Corporate Sponsor program</a>.</li>
      </ul>
    </div>
  </div>

  <!-- Modal -->
  <div class="modal fade solstice-modal" id="modal-checklist" tabindex="-1" role="dialog" aria-labelledby="modal-checklistLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-content-container">
          <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="modal-checklistLabel">
             Here are some frequently overlooked sections in the Membership Agreement:</h4>
          </div>
          <div class="modal-body">
            <ol class="circles-list">
              <li style="padding-top:5px;">Place the effective date on <strong>page 1</strong>.</li>
              <li style="padding-top:5px;">Place your organization name in the blank on <strong>page 1</strong>.</li>
              <li>Fill in the Member and Member Notice information on <strong>page 7</strong> (bottom half of page).</li>
              <li>Sign (on the line "By:" on the bottom half of the page) and date the Agreement on <strong>page 7</strong>.</li>
              <li>Complete the information in <strong>Exhibit C</strong> by checking the box in the column "Check to Indicate Desired Level of Membership". <strong><br/>Please sign and date Exhibit C</strong></li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
<?php endif;?>