<?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>
		<form wicket:id="appForm">
			<span wicket:id="feedback"></span>
			<table>
				<tr>
					<td><wicket:ommessage key="572" /></td>
					<td><input type="text" wicket:id="title" /></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="570" /></td>
					<td><span wicket:id="start"></span></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="571" /></td>
					<td><span wicket:id="end"></span></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="565" /></td>
					<td><select wicket:id="remind" ></select></td>
				</tr>
				<tr>
					<td colspan="2"><input type="checkbox" wicket:id="createRoom" /><wicket:ommessage key="1509" /></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="619" /></td>
					<td><select wicket:id="room.roomtype" ></select></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="406" /></td>
					<td><select wicket:id="room" ></select></td>
				</tr>
				<tr>
					<td colspan="2"><input type="checkbox" wicket:id="passwordProtected" /><wicket:ommessage key="524" /></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="525" /></td>
					<td><input type="password" wicket:id="password" /></td>
				</tr>
				<tr>
					<td colspan="2" style="font-size: smaller;"><wicket:ommessage key="1445" /></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="1156" /></td>
					<td><span wicket:id="owner"></span></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="803" /></td>
					<td wicket:ommessage="title:1588"><input class="appointment attendees" type="hidden" wicket:id="attendees"/></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="569" /></td>
					<td><input type="text" wicket:id="location" /></td>
				</tr>
				<tr>
					<td><wicket:ommessage key="573" /></td>
					<td>
						<div wicket:id="toolbarContainer"></div>
						<div wicket:id="description"></div>
					</td>
				</tr>
			</table>
		</form>
		<div wicket:id="confirmDelete"></div>
	</wicket:panel>
</html>
