[define title]User Groups[end]
[define category_css]css/ph_list.css[end]
[include "../framework/header.ezt" "hidetabs"]
[include "../framework/js-placeholders.ezt"]

<form method="POST" action='/hosting/deleteGroup.do'>
<input type="hidden" name="token" value="[form_token]">
<div id="colcontrol">
   <div class="list">
     <b>User Groups</b>
     [if-any offer_group_deletion]
     <input type="submit" value="Delete Groups" style="margin-left:1em"
            id="removebtn" name="removebtn" disabled="disabled">
     [end]
     [if-any offer_group_creation]
     <a href="/hosting/createGroup" class="buttonify" style="margin-left:1em">Create Group</a>
     [end]
   </div>

  <table cellspacing="0" cellpadding="2" border="0" class="results striped" id="resultstable" width="100%">
  <tbody>
   [if-any groups]

      <tr id="headingrow">
        [if-any offer_group_deletion]
          <th style="border-right:0; padding-right:2px" width="2%">&nbsp;</th>
        [end]
        <th style="white-space:nowrap">Name</th>
        <th style="white-space:nowrap">Size</th>
        <th style="white-space:nowrap">Member list visibility</th>
      </tr>

      [for groups]
        <tr>
          [if-any offer_group_deletion]
            <td style="padding-right:2px" width="2%">
              <input type="checkbox" name="remove"
                     value="[groups.group_id]">
            </td>
          [end]
          <td class="id" style="text-align:left"><a href="[groups.detail_url]">[groups.name]</a></td>
          <td><a href="[groups.detail_url]">[groups.num_members]</a></td>
          <td><a href="[groups.detail_url]">[groups.who_can_view_members]</a></td>
        </tr>
      [end]

   [else]
    <tr>
     <td colspan="40" class="id">
      <div style="padding: 3em; text-align: center">
       No user groups have been defined.
      </div>
     </td>
    </tr>
   [end]


  </tbody>
  </table>
</div>

</form>

[if-any offer_group_deletion]
  <script type="text/javascript" nonce="[nonce]">
runOnLoad(function() {
    function _countChecked(opt_className) {
      var numChecked = 0;
      var inputs = document.getElementsByTagName('input');
      for (var i = 0; i < inputs.length; i++) {
        var el = inputs[[]i];
        if (el.type == 'checkbox' && el.name == 'remove' && el.checked &&
            (!opt_className || opt_className == el.className)) {
          numChecked++;
        }
      }
      return numChecked;
    }

   function _enableRemoveButton() {
     var removeButton = document.getElementById('removebtn');
     if (_countChecked() > 0) {
       removeButton.disabled = false;
     } else {
       removeButton.disabled = true;
     }
   }

   setInterval(_enableRemoveButton, 700);

});
  </script>
[end]

[include "../framework/footer.ezt"]
