<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div id="analysis">

  <div class="block analysis-error" id="analysis-handler-missing">

    <div class="head">This Functionality requires the <code>/analysis/field</code> Handler to be registered and active!</div>

  </div>

  <div class="block analysis-error" id="analysis-error">

    <div class="body"></div>

  </div>

  <div id="analysis-holder">

    <div id="field-analysis">
              
      <form method="get">
                
        <ul class="clearfix">
                    
          <li class="index">
                        
            <label for="analysis_fieldvalue_index">Field Value (Index)</label>
            <textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index"></textarea>
                        
          </li>
                    
          <li class="query">
                        
            <label for="analysis_fieldvalue_query">Field Value (Query)</label>
            <textarea name="analysis.query" id="analysis_fieldvalue_query"></textarea>
                        
          </li>

          <li class="settings-holder clearfix">
            <div class="settings clearfix">

              <label for="type_or_name">Analyse Fieldname / FieldType:</label>
              <select id="type_or_name"></select>
              <a id="tor_schema" href="#"><span>Schema Browser</span>&nbsp;</a>

              <div class="buttons clearfix">

                <button type="submit"><span>Analyse Values</span></button>

                <div class="verbose_output active">
                  <a>Verbose Output</a>
                </div>

              </div>

            </div>
          </li>
                    
        </ul>
                
      </form>
            
    </div>
        
    <div id="analysis-result" class="clearfix verbose_output"></div>

  </div>

</div>
