<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
  
-->
<html xmlns:wicket="http://wicket.apache.org">
	<wicket:head>
       <script type="text/javascript">
           function omLdapPanelInit() {
               var documentHeight = $(document).height();
               $('#adminForm').height(documentHeight-114);
               $('#adminTable').height(documentHeight-144);
           }
       </script>
    </wicket:head>
	<wicket:panel>
		<div class="adminPanel">
			<div class="adminPanelColumnTable">
				<span wicket:id="navigator">[dataview navigator]</span>
				<table class="adminListTable">
					<thead>
						<tr>
							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="1104" /></th>
							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="1105" /></th>
							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByFile"></span><wicket:ommessage key="1106" /></th>
						</tr>
					</thead>
				</table>
				<div class="tableWrapper" id="adminTable">
					<table class="adminListTable">
						<tbody wicket:id="listContainer">
				    		<tr wicket:id="ldapList">
								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="ldapConfigId"></span></div></td>
								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="configFileName"></span></div></td>
							</tr>
						</tbody>			
					</table>
				</div>
			</div>
			<div class="adminPanelColumnForm">
				<form wicket:id="form" class="adminForm">
					<div wicket:id="buttons"></div>
					<div class="scrollcontent" id="adminForm">
						<fieldset class="ui-widget-content">
							<legend class="ui-widget-header"><wicket:ommessage key="1107" /></legend>
							<div class="formelement">
	                            <label><wicket:ommessage key="1108" /></label><input type="text" wicket:id="name"/>
				            </div>
				            <div class="formelement">
	                            <label><wicket:ommessage key="1109" /></label><input type="checkbox" class="formcheckbox" wicket:id="isActive"/>
				            </div>
				            <div class="formelement">
	                            <label><wicket:ommessage key="1110" /></label><span wicket:id="inserted"/>
	                        </div>
				            <div class="formelement">
	                            <label><wicket:ommessage key="1111" /></label><span wicket:id="insertedby.login"/>
				            </div>
				            <div class="formelement">
	                            <label><wicket:ommessage key="1112" /></label><span wicket:id="updated"/>
				            </div>
				            <div class="formelement">
	                            <label><wicket:ommessage key="1113" /></label><span wicket:id="updatedby.login"/>
				            </div>
				            <div class="formelement">
				                <div class="info-text"><wicket:ommessage key="1114" /></div>
	                            <br/>
				                <label><wicket:ommessage key="1115" /></label><input type="text" wicket:id="configFileName"/>
				            </div>
				            <div class="formelement">
				                <div class="info-text"><wicket:ommessage key="1116" /></div>
	                            <br/>
				                <label><wicket:ommessage key="1117" /></label><input type="checkbox" class="formcheckbox" wicket:id="addDomainToUserName"/>
				            </div>
	                        <div class="formelement">
	                            <label><wicket:ommessage key="1118" /></label><input type="text" wicket:id="domain"/>
				            </div>
	                        <div class="formelement">
	                            <label><wicket:ommessage key="270" /></label><textarea wicket:id="comment"/>
				            </div>
				        </fieldset>
				    </div>
				</form>
			</div>
		</div>
	</wicket:panel>
</html>
