<?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:panel>
	<!--  FIXME move styles into CSS -->
	<table style="width: 100%; height: 100%;">
		<tr>
			<td valign="top" style="width: 200px;">
				<form wicket:id="form">
					<div><wicket:message key="1179"/></div>
					<input type="text" wicket:id="text"/><br/>
					<div><wicket:message key="1177"/></div>
					<input type="text" wicket:id="offer"/><br/>
					<div><wicket:message key="1178"/></div>
					<input type="text" wicket:id="search"/><br/>
					<br/>
					<input type="submit" wicket:message="value:1176"/>
				</form>
			</td>
			<td valign="top">
				<div wicket:id="container" style="height: 100%; min-height: 400px;">
					<div><strong><wicket:message key="1184"/></strong>&nbsp;&nbsp;&nbsp;<span wicket:id="navigator"></span></div>
					<table id="searchUsersTable" style="width: 100%;">
						<thead>
							<tr>
								<th><wicket:message key="1180"/></th>
								<th><wicket:message key="1181"/></th>
								<th><wicket:message key="1182"/></th>
								<th><wicket:message key="1183"/></th>
								<th><wicket:message key="1185"/></th>
							</tr>
						</thead>
						<tbody>
							<tr wicket:id="users">
								<td><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
								<td wicket:id="tz"></td>
								<td wicket:id="offer"></td>
								<td wicket:id="search"></td>
								<td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186"
									></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
									></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"></div></td>
							</tr>
						</tbody>
					</table>
				</div>
			</td>
		</tr>
	</table>
	<div wicket:id="infoDialog"></div>
	<div wicket:id="newMessage"></div>
</wicket:panel>
</html>