<?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:ommessage="title:703"></span>
					<span wicket:id="refresh" class="refresh om-icon align-left clickable" wicket:ommessage="title:704"></span>
					<span wicket:id="trash" class="trash om-icon align-right clickable"></span>
					<span style="padding-left: 20px;" wicket:ommessage="title:705"><wicket:ommessage 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:ommessage key="923"/></td>
							<td><span wicket:id="homeSize"></span></td>
						</tr>
						<tr>
							<td><wicket:ommessage 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>
