<?php
/*******************************************************************************
 * Copyright (c) 2014, 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:
 *    Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07)
 *    Edouard Poitras (Eclipse Foundation) - Further modifications
 *    Christopher Guindon (Eclipse Foundation)
 *******************************************************************************/
?>
<div>
    <h1><?=$pageTitle;?></h1>
    <div role="tabpanel">
      <ul class="nav nav-tabs tabs" role="tablist">
        <li role="presentation" class="active"><a href="#best-friends" aria-controls="best-friends" role="tab" data-toggle="tab">Best Friends</a></li>
        <li role="presentation"><a href="#friends" aria-controls="friends" role="tab" data-toggle="tab">Friends</a></li>
        <li role="presentation"><a href="#all" aria-controls="all" role="tab" data-toggle="tab">All</a></li>
        <li role="presentation"><a href="/donate">Join Us</a></li>
      </ul>
    </div>
    <div class="tab-content">
      <div role="tabpanel" class="tab-pane fade in active" id="best-friends">
        <?php
          print $DonationList->displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');
          print $DonationList->displayFriends($bestFriends);
          print $DonationList->displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');
        ?>
      </div>
      <div role="tabpanel" class="tab-pane fade" id="friends">
        <?php
          print $DonationList->displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');
          print $DonationList->displayFriends($friends);
          print $DonationList->displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');
        ?>
      </div>
      <div role="tabpanel" class="tab-pane fade" id="all">
        <?php
          print $DonationList->displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');
          print $DonationList->displayTable($contributions);
          print $DonationList->displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');
        ?>
      </div>
    </div>
</div>