<?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>
	<div class="user info panel">
		<table>
			<tr>
				<td><div wicket:id="img"></div></td>
				<td>
					<table>
						<tr>
							<td><wicket:ommessage key="1164"/></td><td><span wicket:id="firstname"></span>&nbsp;<span wicket:id="lastname"></span></td>
						</tr>
						<tr>
							<td><wicket:ommessage key="1165"/></td><td><span wicket:id="timeZoneId"></span></td>
						</tr>
						<tr>
							<td><wicket:ommessage key="1296"/></td><td><span wicket:id="regdate"></span></td>
						</tr>
					</table>
				</td>
			</tr>
		</table>
		<div>
			<fieldset class="ui-widget-content">
				<legend class="ui-widget-header"><wicket:ommessage key="1166"/></legend>
				<table>
					<tr>
						<td><wicket:ommessage key="1162"/></td>
						<td><textarea wicket:id="userOffers"></textarea></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="1163"/></td>
						<td><textarea wicket:id="userSearchs"></textarea></td>
					</tr>
				</table>
			</fieldset> 
		</div>
		<div>
			<fieldset class="ui-widget-content">
				<legend class="ui-widget-header"><wicket:ommessage key="1167"/></legend>
				<table wicket:id="address">
					<tr>
						<td><wicket:ommessage key="607" /></td>
						<td><span wicket:id="adresses.phone"></span></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="139" /></td>
						<td><span wicket:id="adresses.street"></span>&nbsp;<span wicket:id="adresses.additionalname"></span></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="140" /></td>
						<td><span wicket:id="adresses.zip"></span>&nbsp;<span wicket:id="adresses.town"></span></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="141" /></td>
						<td><span wicket:id="adresses.states.name"></span></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="142" /></td>
						<td><span wicket:id="adresses.comment"></span></td>
					</tr>
				</table>
				<div wicket:id="addressDenied"></div>
			</fieldset> 
		</div>
	</div>
</wicket:panel>
</html>
