<?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>
		<link media="screen" type="text/css" rel="stylesheet" href="css/theme.css"/>
		<link media="screen" type="text/css" rel="stylesheet" href="css/jquery-ui-1.9.0.custom.min.css"/>
		<style>
			#login .ui-dialog .ui-dialog-titlebar-close {
				display: none;
			}
			#login input:not([type='checkbox']) {
				width: 170px;
			}
			#login input:
		</style>
	</wicket:head>
	<wicket:extend>
		<script type="text/javascript">
			$(function(){
				$('#login').dialog({
					closeOnEscape: false
					, resizable: false
					, width: 400
					, open: function(event, ui) {
						$(".ui-dialog-titlebar-close").hide();
					}
				});
				$('#area').val(location.hash);
			});
		</script>
		<div id="login" wicket:ommessage="title:108">
			<form wicket:id="signin">
				<table>
					<tr>
						<td><wicket:ommessage key="109" /></td>
						<td><input wicket:id="login" type="text" value="" /></td>
					</tr>
					<tr>
						<td><wicket:ommessage key="110" /></td>
						<td><input wicket:id="pass" type="password" value="" /></td>
					</tr>
					<tr>
						<td></td>
						<td><input wicket:id="rememberMe" type="checkbox" /><label wicket:for="rememberMe"><wicket:ommessage key="288" /></label></td>
					</tr>
					<tr>
						<td align="right" colspan="2"><input type="submit" wicket:ommessage="value:112"/></td>
					</tr>
				</table>
				<span wicket:id="feedback"></span>
				<input wicket:id="area" type="hidden" value="" />
			</form>
		</div>
	</wicket:extend>
</html>