[define category_css]css/ph_detail.css[end]
[include "../framework/header.ezt" "hidetabs"]

<form action="advsearch.do" method="POST" style="margin:6px;margin-top:12px;" autocomplete="false">

[# Note: No need for UI element permission checking here. ]

<table cellspacing="0" cellpadding="4" border="0" class="advquery">
   <tr class="focus"><td width="25%"><b>&nbsp;Find issues</b></td>
    <td>Search within</td>
    <td>
       <select name="can" style="width:100%">
        [include "issue-can-widget.ezt" "advsearch"]
       </select>
    </td>
    <td width="25%" align="center" rowspan="3">
     <input type="submit" name="btn" value="Search" style="font-size:120%">
    </td>
   </tr>
   <tr class="focus"><td width="25%"></td>
       <td>with <b>all</b> of the words</td><td><input type="text" size="25" name="words" value=""></td>
   </tr>
   <tr class="focus"><td></td>
       <td><b>without</b> the words</td><td><input type="text" size="25" name="without" value=""></td>
   </tr>
   <tr><td>&nbsp;</td><td></td><td></td><td></td></tr>
   [# TODO(jrobbins): allow commas ]
   <tr><td><b>Restrict search to</b></td><td>Labels</td><td><input type="text" name="labels" id="labelsearch" size="25" value="" placeholder="All the labels" autocomplete="off"></td><td class="eg">e.g., FrontEnd Priority:High</td></tr>
   <tr><td rowspan="5"><br>
        <table cellspacing="0" cellpadding="0" border="0"><tr><td>
        <div class="tip">
            <b>Tip:</b> Search results can be<br>refined by clicking on
            the<br>result table headings.<br> <a href="searchtips">More
            Search Tips</a>
        </div>
        </td></tr></table>
       </td>
       [# TODO(jrobbins): allow commas ]
       <td>Statuses</td><td><input type="text" name="statuses" id="statussearch" size="25" value="" placeholder="Any status" autocomplete="off"></td><td class="eg">e.g., Started</td></tr>
   <tr><td>Components</td><td><input type="text" size="25" name="components" id="componentsearch" value="" placeholder="Any component" autocomplete="off"></td><td class="eg"></td></tr>
   <tr><td>Reporters</td><td><input type="text" size="25" name="reporters" id="memberreportersearch" value="" placeholder="Any reporter" autocomplete="off"></td><td class="eg"></td></tr>
   [# TODO(jrobbins): allow commas ]
   <tr><td>Owners</td><td><input type="text" size="25" name="owners" id="ownersearch" value="" placeholder="Any owner" autocomplete="off"></td><td class="eg">e.g., user@example.com</td></tr>
   <tr><td>Cc</td><td><input type="text" size="25" name="cc" id="memberccsearch" value="" placeholder="Any cc" autocomplete="off"></td><td class="eg"></td></tr>
   <tr><td></td><td>Comment by</td><td><input type="text" size="25" name="commentby" id="membercommentbysearch" value="" placeholder="Any commenter"></td><td class="eg"></td></tr>
   [# TODO(jrobbins): implement search by star counts
   <tr><td></td><td>Starred by</td>
       <td>
           <select name="starcount" style="width:100%">
            <option value="-1" selected="selected">Any number of users</option>
            <option value="0">Exactly zero users</option>
            <option value="1">1 or more users</option>
            <option value="2">2 or more users</option>
            <option value="3">3 or more users</option>
            <option value="4">4 or more users</option>
            <option value="5">5 or more users</option>
           </select></td>
       <td class="eg"></td>
   </tr>
   ]
   [# TODO(jrobbins) search by dates? ]
   <tr><td></td><td>&nbsp;</td><td></td><td class="eg"></td></tr>
</table>
</form>

<script type="text/javascript" nonce="[nonce]">
runOnLoad(function() {
  var _idsToAddDefaultListeners = [[]
      "labelsearch", "statussearch", "componentsearch", "memberreportersearch",
      "ownersearch", "memberccsearch", "membercommentbysearch"];
  for (var i = 0; i < _idsToAddDefaultListeners.length; i++) {
    var id = _idsToAddDefaultListeners[[]i];
    if ($(id)) {
      $(id).addEventListener("focus", function(event) {
        _acof(event);
      });
    }
  }
});
</script>

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