[# Diplay a widget to choose group visibility level, or read-only text showing
   the visibility level.  Read-only text is used when the user does not have
   permission to edit, or if there is only one available choice.
]

[define vis_menu_was_shown]False[end]

[if-any read_only][else]
  <select name="visibility" id="visibility" [if-any import_group]disabled="disabled"[end]>
    <option value="" disabled="disabled" [if-any initial_visibility][else]selected="selected"[end]>
      Select a visibility level...
    </option>
    [for visibility_levels]
      <option value="[visibility_levels.key]"
        [if-any initial_visibility]
          [is initial_visibility.key visibility_levels.key]selected="selected"[end]
        [end]>
        [visibility_levels.name]
      </option>
    [end]
  </select>
  [define vis_menu_was_shown]True[end]

  <br><br>
  Friend projects: <br>
  <input size="60" type="text" id="friendprojects" name="friendprojects" value="[initial_friendprojects]">
  <div class="fielderror">
    <span id="friendprojectsfeedback"></span>
    [if-any errors.friendprojects][errors.friendprojects][end]
  </div>

  <br><br>
  <input type="checkbox" name="import_group" id="import_group"
         [if-any import_group]checked="checked"[end]
         [if-any groupadmin]disabled="disabled"[end] >
  <label for="import_group">Import from external group</label>

  <div class="fielderror">
    <span id="groupimportfeedback"></span>
    [if-any errors.groupimport][errors.groupimport][end]
  </div>

  <br>
  &nbsp;&nbsp;External group type:
  <select name="group_type" id="group_type"
          [if-any import_group][else]disabled="disabled"[end]
          [if-any groupadmin]disabled="disabled"[end] >
    <option value="" disabled="disabled" [if-any initial_group_type][else]selected="selected"[end]>
      Select a group type...
    </option>
    [for group_types]
      <option value="[group_types.key]"
        [if-any initial_group_type]
          [is initial_group_type.key group_types.key]selected="selected"[end]
        [end]>
        [group_types.name]
      </option>
    [end]
  </select>
  <br><br>

  <script type="text/javascript" nonce="[nonce]">
runOnLoad(function() {
    cur_vis_value = $("visibility").value;

    function _updateSettings() {
      if ($("import_group").checked) {
        $("group_type").disabled = false;
        cur_vis_value = $("visibility").value;
        $("visibility").value = 0;
        $("visibility").disabled = true;
        $("friendprojects").disabled = true;
      } else {
        $("group_type").disabled = true;
        $("visibility").value = cur_vis_value;
        $("visibility").disabled = false;
        $("friendprojects").disabled = false;
      }
    }

    $("import_group").addEventListener("click", _updateSettings);
});
  </script>
[end]

[is vis_menu_was_shown "False"]
  [initial_visibility.name]
  <input type="hidden" name="visibility" value="[initial_visibility.key]">
[end]

<div class="formerror">
  [if-any errors.access]
    <div class="emphasis">[errors.access]</div>
  [end]
</div>