<div class="query-box">
  <form id="query-form" action="#{url_for_home}" method="GET">
    <div class="inputs">
      <span #annTitle("Add the query using the &q= parameter")>Find: <input type="text" id="q" name="q" value="$!esc.html($params.get('q'))"/> <input type="submit" id="querySubmit"/> <input type="reset"/></span>
      <div class="query-boost"><span #annTitle("Add the boost function &bf=price to the query")><input type="checkbox" name="bf" value="price" #if($request.params.get('bf') == 'price')checked="true"#end>Boost by Price</input></span>
      #parse("querySpatial.vm")
      #parse("queryGroup.vm")
      </div>
  </div>

    #if($request.params.get('debugQuery'))
      <input type="hidden" name="debugQuery" value="true"/>
    #end
    #if($annotate == true)
      <input type="hidden" name="annotateBrowse" value="true"/>
    #end
    #foreach($fq in $request.params.getParams('fq'))
      #if ($fq != "{!bbox}")
        <input type="hidden" name="fq" id="allFQs" value="$esc.html($fq)"/>
      #end
    #end
    <div class="constraints" #annTitle("Lists out the &fq filters.  Click to remove.")>
      #foreach($fq in $params.getParams('fq'))
        #set($previous_fq_count=$velocityCount - 1)
        #if($fq != '')
        &gt; <a style="{text-decoration: line-through;}" href="#url_for_filters($request.params.getParams('fq').subList(0,$previous_fq_count))">$fq</a>
        #end
      #end
    </div>
    <div class="parsed_query_header">
     #if($request.params.get('debugQuery'))
        <a href="#" onclick='jQuery(this).siblings("div").toggle(); return false;'>toggle parsed query</a>
        <div class="parsed_query" style="display:none">$response.response.debug.parsedquery</div>
      #end
      #set($queryOpts = $request.params.get("queryOpts"))
      #if($queryOpts && $queryOpts != "")
        <input type="hidden" name="queryOpts" value="$queryOpts"/>
      #end
    </div>
  </form>

</div>
