<?php
/**
 * Copyright (c) 2014, 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:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *    Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<div id="midcolumn">

  <h1><?php print $pageTitle;?></h1>
    <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading">Need to contact someone at the Eclipse Foundation?</div>

      <!-- List group -->
      <ul class="list-group">
        <li class="list-group-item"><strong>Report a bug</strong><br> <a
          href="https://accounts.eclipse.org">Register</a>
          and <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi">report</a>
          a bug</li>
        <li class="list-group-item"><strong>Technical questions /
            Support (via HTTP)</strong><br> <a
          href="https://accounts.eclipse.org">Register</a>
          and join the <a href="../../forums/">Forums</a></li>
        <li class="list-group-item"><strong>Legal questions</strong><br>
          <i class="fa orange fa-envelope"></i> license (at) eclipse.org</li>
        <li class="list-group-item"><strong>Trademark questions</strong><br>
          <i class="fa orange fa-envelope"></i> trademarks (at)
          eclipse-foundation.org</li>
        <li class="list-group-item"><strong>News, events or announcing a
            new plug-in</strong><br> <i class="fa orange fa-envelope"></i>
          news (at) eclipse.org</li>
        <li class="list-group-item"><strong>Joining the Eclipse
            Foundation</strong><br> <i class="fa orange fa-envelope"></i>
          membership (at) eclipse.org</li>
        <li class="list-group-item"><strong>A project proposal for
            Eclipse.org</strong><br> <i class="fa orange fa-envelope"></i>
          emo (at) eclipse.org</li>
        <li class="list-group-item"><strong>Eclipse.org infrastructure</strong><br>
          <i class="fa orange fa-envelope"></i> webmaster (at)
          eclipse.org</li>
        <li class="list-group-item"><strong>Account removals, GDPR issues</strong><br>
          <i class="fa orange fa-envelope"></i> privacy (at)
          eclipse.org</li>
        <li class="list-group-item"><strong>General inquiries</strong><br>
          <i class="fa orange fa-envelope"></i> emo (at) eclipse.org</li>
      </ul>
    </div>


  <div class="row">
    <div class="col-sm-24">
    <h2>Offices</h2>
    <p>All correspondence should be directed to our Ottawa office:</p>
      <p>
        Eclipse Foundation <br />
        2934 Baseline Road, Suite 202 <br />
        Ottawa, Ontario, <br /> 
        Canada, K2H 1B2
      </p>
      <p>
        <i class="fa fa-map-marker orange"></i>
        <a href="https://goo.gl/maps/NtBkZJD9CvEBHnGw5" target="_blank"> Google map</a>
      </p>
      <p>
        <i class="fa fa-phone orange"></i> +1.613.224.9461
      </p>
    </div>
  </div>

  <div class="row">
    <div class="col-sm-24">
    <p>The mailing address of our Eclipse Foundation Europe GmbH subsidiary:</p>
      <p>
        Eclipse Foundation GmbH <br />
        Annastrasse 46 <br />
        64673 Zwingenberg, <br />
        Germany<br />
      </p>

      <p>
        <i class="fa fa-map-marker orange"></i>
        <a href="https://goo.gl/maps/HanH1uQx6ZnjteXQ6" target="_blank"> Google map</a>
      </p>
      <p>
        <i class="fa fa-phone orange"></i> +49 6251 8606413
      </p>
    </div>
  </div>

</div>
<div id="rightcolumn">
  <div class="sideitem">
    <h6>Related Links</h6>
    <ul>
      <li><a href="staff.php">Foundation Staff</a></li>
    </ul>
  </div>
</div>
