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