<?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>
	<script type="text/javascript">
		function treeRevert(dropped) {
			$('#tree-anchor').get(0).scrollIntoView();
			this.parent().parent().get(0).scrollIntoView();
			return !dropped;
		}
	</script>
	<table class="recording">
		<tr>
			<td valign="top" class="files file tree">
				<div class="icons clear trash-toolbar" wicket:id="trash-toolbar">
					<span wicket:id="create" class="folder-create om-icon align-left clickable" wicket:message="title:703"></span>
					<span wicket:id="refresh" class="refresh om-icon align-left clickable" wicket:message="title:704"></span>
					<span wicket:id="trash" class="trash om-icon align-right clickable"></span>
					<span style="padding-left: 20px;" wicket:message="title:705"><wicket:message key="1224"/></span>
					<div class="clear"></div>
				</div>
				<div wicket:id="tree-container" class="trees">
					<div id="tree-anchor" style="height: 2px; width: 2px;"></div>
					<div wicket:id="tree"></div>
				</div>
				<div class="sizes" wicket:id="sizes">
					<table>
						<tr>
							<td><wicket:message key="923"/></td>
							<td><span wicket:id="homeSize"></span></td>
						</tr>
						<tr>
							<td><wicket:message key="924"/></td>
							<td><span wicket:id="publicSize"></span></td>
						</tr>
					</table>
				</div>
				<div wicket:id="info"></div>
			</td>
			<td valign="top">
				<div wicket:id="video"></div>
			</td>
		</tr>
	</table>
	<div wicket:id="addFolder"></div>
	<div wicket:id="errors"></div>
</wicket:panel>
</html>
