<!--
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="schema-browser" class="loaded">

  <div class="clearfix">

    <div id="data">

      <div id="field">

        <div class="field-options">

          <div class="block head">
            <h2>
              <span class="type"></span>:
              <span class="name"></span>
            </h2>
          </div>

          <div class="partial">

            <p>Because your Index is empty, we have not enough Information about this Field</p>

          </div>

          <dl class="options clearfix">

            <dt class="field-type">Field-Type:</dt>

            <dt class="similarity">Similarity:</dt>

            <dt class="position-increment-gap"><abbr title="Position Increment Gap">PI Gap</abbr>:</dt>

            <dt class="docs">Docs:</dt>

            <dt class="distinct">Distinct:</dt>
                        
          </dl>

          <table class="flags" cellspacing="0" cellpadding="0" border="0">

            <thead>

              <tr>

                <td>Flags:</td>

              </tr>

            </thead>

            <tbody>

            </tbody>

          </table>

          <ul class="analyzer">
            <li class="clearfix index">

              <p><a><span>Index&nbsp;Analyzer:</span></a></p>
              <dl>
                <dt><a class="toggle"></a></dt>
              </dl>

              <ul>
                <li class="clearfix charFilters">
                  <p>Char Filters:</p>
                  <dl>
                  </dl>
                </li>
                <li class="clearfix tokenizer">
                  <p>Tokenizer:</p>
                  <dl>
                  </dl>
                </li>
                <li class="clearfix filters">
                  <p>Token Filters:</p>
                  <dl>
                  </dl>
                </li>
              </ul>
                            
            </li>
            <li class="clearfix query">

              <p><a><span>Query&nbsp;Analyzer:</span></a></p>
              <dl>
                <dt><a class="toggle"></a></dt>
              </dl>

              <ul>
                <li class="clearfix charFilters">
                  <p>Char Filters:</p>
                  <dl>
                  </dl>
                </li>
                <li class="clearfix tokenizer">
                  <p>Tokenizer:</p>
                  <dl>
                  </dl>
                </li>
                <li class="clearfix filters">
                  <p>Token Filters:</p>
                  <dl>
                  </dl>
                </li>
              </ul>
                            
            </li>
          </ul>

        </div>

        <div class="terminfo-holder clearfix">

          <div class="trigger">

            <button class="submit"><span>Load Term Info</span></button>

            <a class="autoload" title="Automatically load Term Info?"><span>Autoload</span></a>

          </div>

          <p class="status">Sorry, no Term Info available :(</p>

          <div class="topterms-holder">

            <form>
            <p class="head">
              <input type="text">
              <a class="max-holder" title="Load all Top-Terms">/<span class="max"></span></a> Top-Terms:
              <a id="query_link" href="#"><span>Query</span>&nbsp;</a>
            </p>
            </form>

            <ul>

            </ul>

          </div>

          <div class="histogram-holder">

            <p class="head">Histogram:</p>

            <ul></ul>

          </div>

        </div>

      </div>

    </div>

    <div id="related">

      <select>
        <option value="" selected="selected">Please select ...</option>
      </select>

      <dl id="f-df-t">
      </dl>

      <dl class="ukf-dsf">

        <dt class="unique-key-field">Unique Key Field</dt>

        <dt class="default-search-field">Default Search Field</dt>
            
      </dl>   

    </div>

  </div>

</div>
